Qt FastStart和FFMPEG生成实时MP4文件



我正在使用ffmpeg在我的服务器上创建一个mp4文件。我还在尝试使用 qt 快速启动来能够将 moov 原子移动到前面,以便它进行流式传输。我在网上搜索了所有内容,但没有运气。是否可以将我的视频/音频放在 mp4 缓冲区类型文件中,然后能够在 ffmpeg 仍在将视频和音频数据转储到流中时播放它?关键是我正在尝试从相机流式传输,而Android太可怕了......我知道ios和android都支持mp4,所以我试图找到一种方法来制作我的rtsp Mp4。

故事的要点:我想不断地为我的mp4容器提供我的相机馈送,并且仍然能够播放我的客户可以观看的文件。

任何帮助表示感谢,谢谢。

您可以发布实时流,当流结束时,您可以发布渐进式下载。

在 FFmpeg 中,要实时流式传输并同时将该流的副本保存到文件中而不进行两次编码,您可以使用 Tee 伪混音器。像这样:

ffmpeg 
  -i <input-stream> 
  -f tee "[movflags=+faststart]output.mp4|http://<ffserver>/<feed_name>"

更新:您可以尝试直接流式传输碎片化的mp4。

更新 2:

  • 创建一个碎片化的mp4:

    ffmpeg -i input -frag_duration 1000 stream.mp4
    
  • 通常,当使用 Web 服务器提供文件时,它会想知道文件大小,因此要在不知道文件大小的情况下提供文件,您需要将 Web 服务器配置为执行分块传输编码。

最新更新