wowza服务器上的mpeg dash无法正常工作,状态错误404 Not Found

时间:2015-08-12 16:24:08

标签: ffmpeg html5-video wowza mpeg-dash

wowza服务器上的mpeg dash的自适应链接与我无关,以下是我用于在wowza上发布视频的步骤:

  1. 我安装并配置了Wowza服务器,我测试了它并且工作正常。
  2. 使用 ffmepg 对此video进行转码(我从wowza documentation带来这些命令)

  3. 我测试文件并且所有文件都工作正常然后我将这些文件移动到wowza内容文件夹并创建smil文件,如下所示:

  4. enter image description here

    <?xml version="1.0" encoding="UTF-8"?>
    <smil title="sintel">
      <body>
        <switch>
          <video width="320"  height="180" src="sintel_320p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="200000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
          <video width="640"  height="360" src="sintel_640p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="520000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
          <video width="320"  height="180" src="sintel_400p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="270000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
          <video width="420"  height="270" src="sintel_700p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="570000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
          <video width="720" height="406" src="sintel_1100p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="1000000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
          <video width="1024" height="576" src="sintel_1300p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="1200000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
          <video width="1080" height="608" src="sintel_1500p.mp4" systemLanguage="eng" >
            <param name="videoBitrate" value="1400000" valuetype="data"></param>
            <param name="audioBitrate" value="44100" valuetype="data"></param>
          </video>
        </switch>
      </body>
    </smil>
    
    1. 我将mpd文件(http://191.237.26.137:1935/vod/smil:sintel.smil/manifest.mpd)与http://www.jwplayer.com/innovation/roadmap/mpeg-dash/
    2. 一起使用

      结果:视频在前几秒停止

      enter image description here

1 个答案:

答案 0 :(得分:1)

从您的描述看起来,文件之间存在关键帧对齐问题。为了平滑地进行切换,每个再现必须是关键帧对齐,这意味着在一个文件中的特定时间码处出现的关键帧也必须在所有其他文件中的相同时间码处出现。 Dash的默认选项是请求根据关键帧时间码创建和命名视频片段。如果播放器切换到没有请求的特定片段的再现(因为其关键帧时间关闭),那么它将以404响应失败。

Wowza服务器根据媒体文件中的moov原子数据动态构建HTTP清单。在具有自适应比特率清单的情况下,它仅从第一个文件中读取数据,并期望其他文件中的数据相同。默认文件播放正常,因为数据来自该文件并且单个文件正常播放,因为在请求每个文件时从文件中提取新数据。

基于Id的分段(其中段包含多个关键帧并按顺序编号,例如与HLS或HDS一起使用)不易出现对齐问题,但是,如果切换到a,则可能会注意到流向前或向后跳跃不同的再现和新块中的时间码与旧块不对齐。可以通过更改清单URL将Mpeg Dash配置为使用基于ID的分段。有关详细信息,请参阅交付格式。

Ffmpeg可以通过禁用场景检测或进行两次传递编码并为每次第二次传递使用相同的第一次传递日志来更好地创建对齐编码。