我正在尝试使用ffmpeg获取经过Apple验证的http媒体流,但我遇到了错误。以下是一些错误示例:
警告:播放列表内容类型为'application / x-mpegurl',但应该 是'application / vnd.apple.mpegurl','audio / x-mpegurl'之一 '音频/ 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 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 2 - sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq'minkCplx ^(1-qComp)'-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -g 30 -async 2 us2.ts < / p>
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 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 - sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq'brinkCplx ^(1-qComp)'-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -g 30 -async 2 us1.ts < / p>
ffmpeg -i using-computers-1.mp4 -vbsf h264_mp4toannexb -acodec copy -vcodec copy -f mpegts output.ts
如果有人可以帮我弄清楚我应该运行什么ffmpeg命令,我真的很感激!
答案 0 :(得分:4)
关于第一次警告:
警告:播放列表内容类型为 'application / x-mpegurl',但应该是 之一 '应用程序/ vnd.apple.mpegurl', 'audio / x-mpegurl'或'audio / mpegurl'。
可能来自服务器设置。按照此Ion Cannon post:
的第4步中的说明操作准备HTTP服务器上传一组 代表流和的文件 流定义文件(ts和 M3U8)。这些文件可以上传到 此时的Web服务器,但在那里 是另一个重要的步骤 确保他们将下载 正确的,这是设置哑剧 类型。有两种哑剧类型 对于流式传输非常重要 含量:
.m3u8 application / x-mpegURL
.ts video / MP2T
如果您正在使用Apache 想要添加以下内容 你的httpd.conf文件:
AddType application / x-mpegURL .m3u8
AddType video / MP2T .ts
如果你是 使用lighttpd你想要放 这在您的配置文件中(如果 你有其他mime类型定义make 确定你只是添加这些并且不设置 它们):
mimetype.assign =(“。m3u8”=&gt; “application / x-mpegURL”,“。ts”=&gt; “video / MP2T”)
答案 1 :(得分:2)
关于第三次警告:
警告:媒体片段持续时间 超出预期的持续时间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
通常,播放列表中的最后一个段与目标略有不同,可以忽略此警告。
并且,作为一般规则,可以忽略这些“警告”消息,但需要认真对待“错误”消息。
然而,第二次警告看起来更严重,并可能导致Apple的拒绝。它可能是你的segmenter命令(你使用mediastreamsegmenter吗?)。
另外,我没有使用“-vbsf h264_mp4toannexb”。而且,我正在使用“-async 50”。
顺便说一下,播放列表的链接无效。