ffmpeg调用CUDA硬件加速转码的代码。自用备份。
-hide_banner用来隐藏构建信息,就是输入ffmpeg直接回车后出来的一大堆参数
音频编码直接拷贝,根据实际情况修改。
对于画质要求不那么高的情况下,使用显卡加速可以大大提升转码效率。
在低码率(小于10MB/s)的视频里,还是用CPU编码(x264)画质更好。(个人看法。其实有人分析过这个问题,可自行搜索参考资料)
h264编码:
ffmpeg -hwaccel cuda -hide_banner -i input.mp4 -c:v h264_nvenc -preset p5 -cq 30 -c:a copy output.mp4
h265 (HEVC)编码:
ffmpeg -hwaccel cuda -hide_banner -i input.mp4 -c:v hevc_nvenc -preset p5 -cq 30 -c:a copy output.mp4
如果提示“No decoder surfaces left”,需要加上 -extra_hw_frames参数:
ffmpeg -hwaccel cuda -hide_banner -extra_hw_frames 5 -i input.mp4 -c:v h264_nvenc -preset p6 -cq 30 -c:a copy output.mp4
一般设为5即可,如果还是提示错误,改成6,7,8……挨个尝试。
Preset参数说明: