我希望在HLS和MPEG Dash之间进行转换。我不访问原始的完全连接的视频文件,只访问单个HLS片段。
在对MPEG Dash进行转换时,我需要为Dash manifest.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>
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
等外部工具将HLS流转换为MPEG-DASH。