是否可以在获取 http 请求时使用 ffmpeg 将 .mp4 转换为 .ts

is that possible to use ffmpeg convert .mp4 to .ts when get a http request

我搜索了一些文章,告诉我应该先转换 mp4,然后等待请求并发送 ts 和 m3u8。

但是我在找一个方法,就是当请求来的时候,我就开始转换视频,当转换没有完成的时候,立即发送m3u8。

如果请求来了,但是ts文件还没有准备好,那就等文件准备好了,马上发送。

有没有可能做这样的事情?还是可以用其他方式达到同样的效果?

当您开始使用单比特率 MP4 并希望将其作为 HLS 或 MPEG-DASH(通常简称为 DASH)流提供时,您通常需要执行以下步骤:

  • 将视频转码为您想要的任意比特率版本
  • 将视频拆分为分段或分段格式以允许 HLS 或 MPEG-DASH 流式传输
  • 'Package' 到您要流式传输到的设备所需的特定流式传输协议,这些天通常是 HLS 或 DASH。

假设视频不是实时流,通常在视频首次被引入系统时进行转码和分割。

然后在用户或客户请求视频时应用打包 'Just In Time'。请注意,转码和拆分甚至打包都可以在一个步骤中组合,一些云编码服务正好提供该服务,但是,'Just In Time' 打包仍然很常见。

不进行 'Just In Time' 转码的主要原因还在于转码是处理器密集型的。当您有空闲的计算资源或可以让它有足够的时间完成时能够安排它通常是最具成本效益的方法。

绝对可以进行 'Just In Time' 转码 - 这是直播流必须要做的事情。但是,您节省的存储成本可能会被处理成本吃掉(有时是好几倍),因此这是一个业务决策,也是一个技术决策。