gpt4 book ai didi

c - 使用 libavformat 比使用 popen 调用 ffmpeg 更快吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:52 25 4
gpt4 key购买 nike

我有一大块 C 语言的视频处理代码,它似乎受到我从 ffmpeg 管道读取字节的速率的瓶颈。

我需要对 ffmpeg 或潜在 libav* 提供的原始视频帧进行解码。

与使用 libav 库相比,fread 调用打开的子进程 ffmpeg 是否有很大的开销?

最佳答案

这里有几个方面。首先,为什么您的应用程序似乎受到 ffmpeg 管道输入的瓶颈?答案可能很简单:因为 ffmpeg 需要更多的 CPU(因此是两个应用程序组合的瓶颈)。如果你运行 | b,而 a 占用更多的 CPU,那么从 b 的角度来看,管道的输入很慢。这是合乎逻辑的,因为 a 需要更多时间。对此没有解决方案,ffmpeg 应该占用更多 CPU,因为(取决于编解码器/分辨率等),多媒体处理非常占用 CPU 的任务.

其次,使用 C API 而不是管道会有帮助吗?这取决于你在做什么。如果您将 ffmpeg 用于相当琐碎的任务,例如在不解压的情况下从磁盘读取文件(例如未压缩的视频/音频),那么是的,管道的开销相当大。如果 ffmpeg 解压缩 H264/HEVC 或 VP9 视频,您不太可能从这一举措中看到 yield ,或者它们至少会很小(1% 范围),因为大部分时间都花在解码视频上。数据的复制/传输几乎可以忽略不计。所以在那种情况下,问题是:1% 值得吗?这由您决定。

关于c - 使用 libavformat 比使用 popen 调用 ffmpeg 更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34573679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com