7

我希望在 HLS 和 MPEG Dash 之间进行转换。我不访问原始的完全连接的视频文件,只访问单独的 HLS 片段。

在对 MPEG Dash 进行这种转换时,我需要为 Dash manifest .mpd 文件提供一个初始化段。

我的问题是:

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

也许解决方案将涉及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>
4

1 回答 1

8

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 list或一个segment 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.

于 2016-01-05T08:06:42.440 回答