ffmpeg - 创建 MPEG-DASH 初始化段

标签 ffmpeg http-live-streaming mpeg-dash adaptive-bitrate mp4box

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

在对 MPEG Dash 进行此转换时,我需要为 Dash list .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>

最佳答案

What is the structure of a Dash video initialization segment?

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

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

How can I generate/create one without the need for the original full file?

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

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/

相关文章:

html - 获取 HTML5 视频(直播)的时长

ffmpeg hls 记录持续时间是 float 而不是整数

iphone - 通过 HTTP Live Streaming 从 MP3 中提取 ID3 标签

javascript - MPEG-DASH 跨浏览器播放

stream - 如何使用 ffmpeg 创建流式音频文件?

python - 使用 ffmpeg-python 库捕获网络摄像头

node.js - 如何在 NodeJS 中使用 fluent-ffmpeg 将图像转换为视频

ffmpeg - 使用 FFmpeg 将 2 个 FLV 电影并排放置

html5-video - 如何在播放时切换音轨

由于未指定像素格式,无法创建 ffmpeg、破折号 list