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

在向MPEG Dash进行此转换时,我需要为Dash list .mpd文件提供一个初始化段。

我的问题是:

  • Dash视频初始化段的结构是什么?
  • 如何在不需要原始完整文件的情况下生成/创建一个?

  • 也许一个解决方案将涉及获取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>
    

    最佳答案



    初始化段包含初始化视频解码器所需的信息。初始化段是可选的(请参阅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。

    关于ffmpeg - 创建MPEG-DASH初始化段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34595036/

    10-09 01:48