FFmpeg CLI 支持多线程 —— 数十年来“最复杂的重构”

FFmpeg CLI 近日迎来重大改进 —— 合并了多线程转码管道(multi-threaded transcoding pipelines),预计在明年发布的FFmpeg 7.0 中提供。

来源:https://ffmpeg.org/index.html#cli_threading

其开发团队表示,这项工作是“数十年来 FFmpeg CLI 最复杂的重构之一”,主要内容包括添加了线程感知的转码调度基础设施、将编码任务移动到独立线程,以及各种其他底层更改。这意味着 FFmpeg 现在可以实现并行处理任务,这将提高吞吐量和 CPU 利用率,降低延迟。

来源:https://up.khirnov.net/7m.pdf

据介绍,这次更新并不是针对编解码器本身进行多线程处理,因为现代编解码器通常已经支持多线程处理。相反,FFmpeg 决定并行化的是 ffmpeg 本身,包括过滤器等。这意味着 FFmpeg CLI 现在可以更高效地处理视频转码任务。

Hacker News 上有开发者提出了一些关于视频编码的想法,例如将关键帧分段独立处理,以实现更好的多核性能。这种方法可以在一定程度上提高编码效率,但也需要考虑内存和编码逻辑的复杂性。