创建MPEG-DASH初始化片段

8

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

在进行这种转换为MPEG Dash时,我需要为Dash清单.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>
1个回答

10

一个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。

非常感谢,这真的很有见地。我不相信我有一个可以支持这些HLS片段的播放器。你能指点一下我使用哪个mp4box命令来进行转换吗? - Mahout
抱歉,我对mp4box没有太多的经验。我尝试过几次,但是我不记得确切的命令了。我建议您查看文档 - Svetlin Mladenov
使用上述的SegmentList方法,我可以播放视频,但整个视频都是黑色的。我已经在原始帖子的末尾添加了代码片段。 - Mahout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接