使用 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加速编码封装分析