首页 > 解决方案 > 实时将 ts 段多路复用到碎片化的 mp4

问题描述

我有一个在浏览器中播放的 HLS 流。我想要做的是有一个这样的 URL /stream.mp4,从当前时间点将直播作为片段的 mp4 播放回来。这样,您可以将流下载为单个文件,并且无需任何 js 依赖项即可工作。

我想到的方法是:

  1. 发送 mp4 标头
  2. 等待一个新的段
  3. 将片段转换为 mp4 片段ffmpeg
  4. 发送 mp4 片段
  5. 转到 2。

(我知道你可以连接.ts段,但它们不能在 Firefox 中播放。)

这个答案描述了当你手头有所有片段时如何创建一个碎片化的 mp4(tl;dr use -movflags frag_keyframe+emptymoov)。但我想即时执行此操作,以便每个新的 HLS 片段在创建后立即转换为 mp4 片段。

我认为这类似于 DASH 本机所做的,chunk-$n.m4s可以附加任何块init.m4s,它将是一个适当的碎片 mp4。但这可以在不使用 DASH 的情况下完成吗?

如何将 ts 片段转换为 mp4 片段?

编辑:我找到了一种做我想做的事的方法,但不是通过将 mpegts 段转换为 fmp4。事实证明,更高版本的 HLS 确实支持分段 mp4(就像 DASH 一样),而 FFmpeg-hls_segment_type fmp4为此提供了选项。

标签: videoffmpegmp4http-live-streaming

解决方案


推荐阅读