创建MPEG-DASH初始化段

时间:2016-01-04 16:01:05

标签: ffmpeg hls mpeg-dash adaptive-bitrate mp4box

我希望在HLS和MPEG Dash之间进行转换。我无法访问原始完全连接的视频文件,只能访问各个HLS段。

在对MPEG Dash进行此转换时,我需要为Dash清单.mpd文件提供初始化段。

我的问题是:

  1. Dash视频初始化段的结构是什么?
  2. 如何在不需要原始完整文件的情况下生成/创建一个文件?
  3. 也许解决方案可能会让MP4Box转换为' .ts' HLS细分为Dash' .m4s'自我初始化的细分,但我不确定如何解决这个问题?

    非常感谢任何想法。

    非常感谢。

    更新: 使用原始hls段流式传输的片段。视频一直播放,但只是黑色。      

      <Representation width="426" height="238" frameRate="25" id="238p 400kbps" bandwidth="400000">
        <SegmentList timescale="25000" duration="112500">
               <SegmentURL media="video_0_400000/hls/segment_0.ts"/>
               <SegmentURL media="video_0_400000/hls/segment_1.ts"/>
              <SegmentURL media="video_0_400000/hls/segment_2.ts"/>
        </SegmentList>
       </Representation>
    </AdaptationSet>
    

1 个答案:

答案 0 :(得分:7)

  

Dash视频初始化段的结构是什么?

初始化段包含初始化视频解码器所需的信息。初始化段是可选的(参见ISO / IEC 23009-1)。

对于ISO BMFF(通常称为mp4),这包括moov框(在ISO / IEC 14496-12中指定)。对于MPEG-TS,通常没有初始化段。当它存在时,它包含几个在PES中携带初始化数据的数据包。

  

如何在不需要原始完整文件的情况下生成/创建一个?

如果目标播放器支持所需功能,则将HLS转换为MPEG-DASH是微不足道的。首先,您需要一个支持MPEG-TS的播放器。那么您实际上并不需要初始化段,因为初始化数据包含在每个HLS段中。要将HLS播放列表转换为MPEG-DASH mpd,您必须创建segment listsegment template。这是一个例子:

HLS:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXTINF:10.0,
stream0.ts
#EXTINF:10.0,
stream1.ts
#EXTINF:10.0,
stream2.ts

MPD:

...
<SegmentList duration="10">
   <SegmentURL media="stream0.ts"/>
   <SegmentURL media="stream1.ts"/>
   <SegmentURL media="stream2.ts"/>
</SegmentList>
...

如果目标播放器不支持MPEG-TS或SegmentList,则必须使用MP4Box之类的外部工具将HLS流转换为MPEG-DASH。