一起编码视频和音频比分别编码慢得多

Encoding Video and Audio together is much slower than encoding each separately

使用 Media Foundation 分别编码音频和视频,然后使用 ffmpeg 进行多路复用,这比同时编码音频和视频,在 Media Foundation 中进行多路复用要快得多。我很好奇为什么?

我正在编码 aac 音频和 h264 视频;输入到编码器的视频帧速率可变(非常低)。如果视频输入处于恒定帧速率(与输出帧速率相同),我得到的速度可能是我期望的速度。

值得注意的是,如果我先写入所有音频(视频)流,然后再写入视频(音频)流,则所有时间编码都是在写入第一个流时进行的,而第二个流几乎是立即写入的。

有人能告诉我这是怎么回事吗?

多路复用器可能会限制输入的视频段,因为生成的文件至少在默认设置下具有将与关闭时间点相关的视频和音频数据打包在一起的布局。

By default, the sink writer's IMFSinkWriter::WriteSample method limits the data rate by blocking the calling thread. This prevents the application from delivering samples too quickly. To disable this behavior, set the MF_SINK_WRITER_DISABLE_THROTTLING attribute to TRUE when you create the sink writer.