2010-07-09 72 views
2

我试图使用ffmpeg获得苹果验证的http媒体流,并且出现错误。下面是一些错误的例子:iPhone HTTP Streaming .m3u8和.ts文件 - 如何使用ffmpeg创建

警告:播放列表内容类型是 '应用程序/ x-mpegurl',而应该 是 '应用程序/ vnd.apple.mpegurl', '音频/ X-mpegurl' 之一或 'audio/mpegurl'。

警告:258个样本(88.966%)在轨道256 (avc1)中没有时间戳。 4:47.733 %(5.23与10.00秒,上限为20%)预期的持续时间以外的媒体段的持续时间:us2-1.ts ~~~~~~~~

警告。 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'blurCplx ^(1-qComp)'-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 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-标记+循环-cmp +色度分区+ 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'blurCplx ^(1-qC omp)'-qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -g 30 -async 2 us1.ts

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

如果有人能帮我弄清楚我应该运行什么ffmpeg命令,我真的很感激它!

回答

4

关于第一警告:

警告:播放列表内容类型是 '应用程序/ x-mpegurl',而应该是 '应用/ vnd.apple.mpegurl' 的 之一, '音频/ x-mpegurl'或'audio/mpegurl'。

它可能来自服务器设置。从这个Ion Cannon post的步骤4按照说明:

准备HTTP服务器上传代表流和 流定义文件(TS和 M3U8)的文件集 。这些文件可以上传到 一个网络服务器在这一点上,但 是另一个重要的步骤,以确保他们将正确下载 ,这是设置MIME 类型的 类型。有两种MIME类型 是流 内容重要:

.m3u8应用程序/ x-mpegURL

的.ts视频/ MP2T

如果您使用的是Apache,你 希望添加下面以 httpd.conf文件:

将AddType应用程序/ x-mpegURL .m3u8

将AddType视频/ MP2T .TS

如果你是 使用lighttpd的,你会希望把这个 您的配置文件(如果 你有其他的MIME类型定义使 确保你只需要添加这些并没有设置 他们):

mimetype.assign =( “.m3u8" => ”应用程序/ x-mpegURL“,” .TS” => “视频/ MP2T”)

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 

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

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

但是,第二个警告看起来更严重,并可能导致苹果拒绝。它可能是你的分段器命令(你使用mediastreamsegmenter?)。我不使用“-vbsf h264_mp4toannexb”。而且,我正在使用“-async 50”。

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

相关问题