将 movflags 添加到 mp4 文件的顶部而不使用 ffmpeg 进行实时 RTSP 流

Add movflags to top of mp4 file without using ffmpeg for a live RTSP stream

更新: 我在浏览器中有一个视频播放器,它通过 websocket 播放 mp4 视频。播放器仅支持 mp4 文件。当我检查正常的 mp4 字段不在播放器中播放时,带有“moovflags faststart”的 mp4 文件将只在该播放器上播放。对于已经存储的文件,这将正常工作。 但是在直播(RTSP)的情况下,使用 ffmpeg 只会在 RTSP 连接终止后起作用,因为一旦连接正确终止,“moovflags faststart”标志就会起作用。 希望以上陈述更有意义。 由于这种行为,我正在检查是否有任何方法可以首先获取 moovflasg 或其他东西

我有 RTSP 实时源,我需要它来将 RTSP 转换为 mp4 文件,该文件的开头有 moov 标志。 我已经检查了 openrtsp 以获取 rtsp 的 mp4 转储,但它只在 mp4 的页脚上添加了 moov 标志和其他信息(当 openrtsp 关闭 rtsp 流时 onlky)。 Ffmpeg 有“-movflags faststart”将页脚信息移动到 mp4 容器的页眉。 由于我有一个 RTSP 实时源,视频数据将背对背地传输,不会有任何终止。上面的 ffmpeg 命令仅在 rtsp 流终止后才有效。

有什么方法可以制作一个 mp4 容器,其中包含页眉本身中存在的 mp4 页脚信息,以便我可以将其用于实时源?

编辑#1 我有播放 mp4 视频文件的视频播放器,它只支持播放使用“-movflags faststart”创建的录制的 mp4 文件,普通的 mp4 文件不能播放。 这是播放器 https://github.com/sonysuqin/WasmVideoPlayer。 由于我正在尝试将实时视频流式传输到播放器,因此无法使用 movflags faststart。

mp4 header 在完成之前无法添加到文件中。由于 mp4 文件的结构,这是不可能的。 header 需要知道文件中每个帧的帧类型、时间戳、大小和文件偏移量。直到文件完成后才能知道。您不能在创建 mp4 时流式传输它。您需要使用 HLS 或 DASH 等协议来完成此操作。