如何在调用 avformat_write_header 函数后添加新流?

How to add a new stream after avformat_write_header function is called?

我有几个视频源可以生成视频帧。每个视频源都应表示为输出视频文件(mp4 或 mpegts)中的单独视频流。 问题是我应该指定流的确切数量并在调用 avformat_write_header 函数之前创建它们。如果我尝试在之后添加流,我将在 av_interleaved_write_frame 内崩溃。有什么方法可以动态添加流吗?也许我应该指定一些 muxer 选项?预先感谢您的回答。

不可以,写入头后无法添加新流。 libavformat 检查要写入的传入数据包是否具有 [0,nb_streams-1] 之外的流索引,如果有则会失败。

可以制作类似 MPEG-TS 的容器来合并新流,但 ffmpeg 不支持。