【问题标题】:iPhone HTTP Streaming .m3u8 and .ts files - how to create using ffmpegiPhone HTTP Streaming .m3u8 和 .ts 文件 - 如何使用 ffmpeg 创建
【发布时间】:2011-03-13 15:52:27
【问题描述】:

我正在尝试使用 ffmpeg 获取经过 Apple 验证的 http 媒体流,但遇到了错误。以下是一些错误示例:

警告:播放列表内容类型是“应用程序/x-mpegurl”,但应该 是“应用程序/vnd.apple.mpegurl”、“音频/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 '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 -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 'blurCplx^(1-qComp)' -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 命令,我将不胜感激!

【问题讨论】:

    标签: iphone ffmpeg video-streaming video-encoding


    【解决方案1】:

    关于第一个警告:

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

    它可能来自服务器设置。按照此Ion Cannon post 的第 4 步的说明进行操作:

    准备HTTP服务器上传一组 代表流的文件和 流定义文件(ts 和 m3u8)。这些文件可以上传到 此时有一个网络服务器,但有 是采取的另一个重要步骤 确保它们将被下载 正确,这就是设置 mime 类型。有两种 MIME 类型 对流媒体很重要 内容:

    .m3u8 应用程序/x-mpegURL

    .ts 视频/MP2T

    如果您使用的是 Apache 想要将以下内容添加到 你的 httpd.conf 文件:

    AddType application/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
      

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

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

      但是,第二个警告看起来更严重,可能会导致 Apple 拒绝。它可能是您的分段器命令(您使用的是 mediastreamsegmenter 吗?)。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-08
        • 2019-02-02
        • 2020-09-14
        • 2018-11-14
        • 1970-01-01
        • 2016-01-14
        • 2012-07-24
        • 2018-05-30
        相关资源
        最近更新 更多