繁体   English   中英

iPhone HTTP Streaming .m3u8和.ts文件-如何使用ffmpeg创建

[英]iPhone HTTP Streaming .m3u8 and .ts files - how to create using ffmpeg

我正在尝试使用ffmpeg获取苹果验证的http媒体流,并且出现错误。 以下是一些错误示例:

警告:播放列表的内容类型为“ application / x-mpegurl”,但应为“ application / vnd.apple.mpegurl”,“ audio / x-mpegurl”或“ audio / mpegurl”之一。

警告:258个样本(88.966%)在轨道256(avc1)中没有时间戳。 4:us2-1.ts ~~~~~~~~

警告:媒体段持续时间超出预期持续时间47.733%(5.23对10.00秒,限制为20%)。 40:us2-19.ts ~~~~~~~~~

Average segment duration: 10.16 seconds
Average segment bitrate: 320.12 kbit/s
Average segment structural overhead: 175.89 kbit/s (54.94 %)

Video codec: avc1
Video resolution: 320x320 pixels
Video frame rate: 29.72, 29.78, 29.82, 30.00, 29.64 fps
Average video bitrate: 100.66 kbit/s
H.264 profile: Baseline
H.264 level: 3.0

Audio codec: aac 
Audio sample rate: 48000 Hz
Average audio bitrate: 43.57 kbit/s

这是我一直提交的最终文件: http : //files.chesscomfiles.com/images_users/using/us2.m3u8

这是我用来创建此文件的文件: http : //files.chesscomfiles.com/images_users/using/using-computers-1.mp4

我尝试了以下命令,其中包括:

ffmpeg -i using-computers-1.mp4 -f mpegts -acodec libfaac -ar 48000 -ab 64k -s 320x320 -vcodec libx264 -vbsf h264_mp4toannexb -b 96k -flags + loop -cmp + chroma -partitions + parti4x4 + partp8x8 + partb8x8 -subq 5-网格1 -refs 1-编码器0 -me_range 16 -keyint_min 2 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq'blurCplx ^(1-qComp)'-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4-级别30 -g 30 -async 2 us2.ts

ffmpeg -i using-computers-1.mp4 -f mpegts -acodec libfaac -ar 48000 -ab 64k -s 320x320 -vcodec libx264 -vbsf h264_mp4toannexb -b 96k -flags + loop -cmp + chroma -partitions + parti4x4 + partp8x8 + partb8x8 -subq 5-网格1 -refs 1-编码器0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k-最大96k -bufsize 96k -rc_eq'blurCplx ^(1-qComp)'-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4-级别30 -g 30 -async 2 us1.ts

ffmpeg -i using-computers-1.mp4 -vbsf h264_mp4toannexb -acodec复制-vcodec复制-f mpegts output.ts

如果有人可以帮助我找出我应该运行的ffmpeg命令,我将非常感激!

关于第一个警告:

警告:播放列表的内容类型为“ application / x-mpegurl”,但应为“ application / vnd.apple.mpegurl”,“ audio / x-mpegurl”或“ audio / mpegurl”之一。

可能来自服务器设置。 请遵循此离子炮的第4步中的说明:

准备HTTP服务器上传一组代表流的文件和一个流定义文件(ts和m3u8)。 这些文件可以在此时上传到Web服务器,但是还需要采取另一个重要步骤,以确保文件可以正确下载并设置mime类型。 对于流内容,有两种重要的MIME类型:

.m3u8应用程序/ x-mpegURL

.ts video / MP2T

如果您使用的是Apache,则希望将以下内容添加到httpd.conf文件中:

AddType应用程序/ x-mpegURL .m3u8

AddType视频/ MP2T .ts

如果您使用的是lighttpd,则需要将其放入配置文件中(如果定义了其他mime类型,请确保仅添加它们而不设置它们):

mimetype.assign =(“ .m3u8” =>“ application / x-mpegURL”,“ .ts” =>“ video / MP2T”)

关于第三个警告:

警告:媒体段持续时间超出预期持续时间47.733%(5.23对10.00秒,限制为20%)。 40:us2-19.ts ~~~~~~~~~

如果某个片段的持续时间与播放列表(m3u8)中该片段列出的持续时间不同,则通常会发生这种情况。 例如,下面的播放列表有一个片段,并由播放列表列出为10秒。 如果此段的实际持续时间相差太大(超过20%),则验证者会抱怨。

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
med0.ts 
#EXT-X-ENDLIST

通常,播放列表中的最后一个片段与目标片段会有所不同,因此可以忽略此警告。

而且,作为一般规则,这些“警告”消息可以忽略,但是“错误”消息需要认真对待。

但是,第二个警告看起来更严重,并且可能导致苹果公司的拒绝。 这可能是您的细分器命令(您是否正在使用mediastreamsegmenter?)。

另外,我没有使用“ -vbsf h264_mp4toannexb”。 而且,我正在使用“ -async 50”。

顺便说一句,指向您的播放列表的链接无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM