【问题标题】:qt faststart and ffmpeg to generate a live mp4 file [duplicate]qt faststart 和 ffmpeg 生成实时 mp4 文件 [重复]
【发布时间】:2014-02-26 21:43:43
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

  • 您混淆了“快速启动”(用于渐进式下载的 QuickTime 术语)和 RTSP(使客户端能够命令流式服务器的协议)。渐进式下载对您没有帮助,因为 moov atom 只能在编码完成后写入。如果你想从相机流式传输,你需要一个流媒体服务器
  • @Duvra 我完全理解其中的区别。我需要知道的是,是否有一种方法可以在 mp4 完全写入之前读取它。因为 FFmpeg 仍在对 rtsp 流进行编码
  • 我的错,我没有很好地阅读你的问题。也许您可以稍微澄清一下这个问题并使用一些段落。据我所知,您有一个接收 rtsp 流的 linux 机器。您想将其输出到 1) 快速启动文件和 2) 实时流,对吗?
  • 是的,我遇到的主要问题是:ffserver 我找不到适合在 android 或 iphone 上播放的输出文件。我不知道为什么这是 2014 年的黑匣子。我想知道是否有一种方法可以持续提供 mp4 容器并逐步下载到客户端,所以 A:有一个缓冲区,尽管它是实时的,B:在 android 上播放和iPhone

标签: linux ffmpeg streaming video-streaming qt-faststart


【解决方案1】:

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

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

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

更新:您可以尝试直接stream a fragmented mp4

更新 2:

  • 创建一个碎片化的 mp4:

    ffmpeg -i input -frag_duration 1000 stream.mp4
    
  • 通常,当使用 Web 服务器提供文件时,它会想知道文件大小,因此要在不知道文件大小的情况下提供文件,您需要将 Web 服务器配置为 Chunked Transfer Encoding

【讨论】:

  • 我知道我能做到。我想做的是想办法实时做到这一点。例如,AXIS 摄像机和 dlink 摄像机可让您通过 mp4 从 cam(实时)流式传输它们的流。如果他们能做到,就必须有办法做到。
  • @Dnaso 您是否尝试按照我在更新 2 中建议的方式使用分块传输编码将编码为碎片化的 mp4 和 http 服务?
  • 你能给我一个链接吗?没听说过
  • 能发个资源链接吗?
  • 我要去看看。如果这行得通……太棒了,谢谢
猜你喜欢
  • 2015-10-04
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2023-04-08
  • 2014-01-10
  • 2022-08-18
  • 2019-04-04
相关资源
最近更新 更多