使用 gpu 使用 ffmpeg 转换视频

Posted

技术标签:

【中文标题】使用 gpu 使用 ffmpeg 转换视频【英文标题】:Convert video with ffmpeg using gpu 【发布时间】:2013-08-19 15:05:11 【问题描述】:

我有视频共享网站并使用 ffmpeg 转换视频,但转换需要很多时间。 怎么做又快又安全? 我认为当 ffmpeg 与 GPU 匹配时,它对我有帮助,但我没有找到很好的使用参考。 哪个应用程序或参考可以帮助我获得良好的性能。

【问题讨论】:

你试过什么?如果您提供您尝试过的代码,您将有更多机会获得帮助。 我从未听说过 ffmpeg 中的 GPU 优化编解码器 .... 在我看来,./configure 没有 --enable 选项来支持 cusa、opencl 或其他。对不起! h264转换格式使用VDPAU加速但不知道如何开启使用。 VDPAU(Unix 的视频解码和演示 API)不确定它对编码是否有用……看起来更像是解码和播放视频的东西! 当前状态trac.ffmpeg.org/wiki/HWAccelIntro#CUDACUVIDNvDecode 【参考方案1】:

2017 年第四季度更新。自从我最初的回答以来,基于 GPU 的编码已广泛使用。如果你有一个现代的NVIDIA video card and can compile ffmpeg,那么你应该很高兴。 感谢Dmytro Dzyubak 指出FFmpeg docs 指出确实“基于CPU 的编码通常比基于GPU 的编码产生更好的质量。”

--

基于 GPU 的编码特定于编解码器/GPU 计算标准(CUDA、OpenCL),因此您需要指定在您的情况下使用的是什么。 ffmpeg 是 x264 和 VP8 等流行编解码器的包装器。

到目前为止,所有使用 x264 的尝试最多都产生了不同的结果。没有任何东西可以传递到生产中。

主要概念提供了一个可用于基于 H264 GPU 的编码的 SDK。你可以在这里阅读more information。我没有看到他们的 SDK 的价格标签,但我猜它可能很贵。

根据您使用的编解码器,您最好调整编码设置以权衡质量与速度。另一方面,基于 CPU 的编码往往比基于 GPU 的编码产生更好的质量。

【讨论】:

“基于 CPU 的编码比基于 GPU 的编码产生更好的质量。” - 需要引用。 “硬件编码器生成的输出质量通常明显低于 x264 等优质软件编码器” - trac.ffmpeg.org/wiki/HWAccelIntro【参考方案2】:

如果您使用的是 NVidia GPU,这可能会有所帮助:

https://developer.nvidia.com/nvidia-codec-libraries

【讨论】:

【参考方案3】:

它可能仍在“开发中”,但是当“LookAhead”功能“在 GPU 上”时,我发现几个 doom9 线程对 x264 编码器(lib ffmpeg 使用)进行了巨大改进,但它使用 OpenCL.

http://forum.doom9.org/showthread.php?t=164960 http://forum.doom9.org/showthread.php?t=165984

这可能会有所帮助。

【讨论】:

以上是关于使用 gpu 使用 ffmpeg 转换视频的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )

ffmpeg + cuda(cuvid) 硬解码+像素格式转换(cpu主导)实战

Linux FFmpeg h.264 h.265 GPU加速 CUDA加速编码封装分析

Linux FFmpeg h.264 h.265 GPU加速 CUDA加速编码封装方案分析(转载)

使用 FFMPEG 为 Android 转换视频

使用 ffmpeg 将图像转换为视频