一、参考资料
二、重要指令
-
查看支持的硬件加速选项
ffmpeg -hwaccels
-
查看cuvid提供的GPU编解码器
ffmpeg -codecs | grep cuvid
所有带有"cuvid"或"nvenc"的,都是CUDA提供的GPU编解码器
-
将h264编码的源视频转码为指定尺寸和码率的h264编码视频
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
参数解释:
-hwaccel cuvid:指定使用cuvid硬件加速; -c:v h264_cuvid:使用 h264_cuvid 解码器进行视频解码; -c:v h264_nvenc:使用 h264_nvenc 编码器进行视频编码; -vf scale_npp=1280:-1:指定输出视频的宽高,注意:这里和软解码时使用的-vf scale=x:x不一样; 解码器: h264_cuvid mjpeg_cuvid 编码器: nvenc h264_nvenc nvenc_h264 nvenc_hevc
-
向不同GPU提交转码任务
ffmpeg -hwaccel cuvid -hwaccel_device 0 -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
ffmpeg -hwaccel cuvid -hwaccel_device 1 -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
参数解释:
hwaccel_device 参数指定转码任务使用的GPU; -hwaccel_device N:指定某颗GPU执行转码任务,N为数字;
-
转码
ffmpeg -hwaccel cuvid -c:v mjpeg_cuvid -i a.avi -c:v nvenc -crf 0 -b 60M a1.mp4 -y
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i test10_2ms_30fps_60s.h264 -c:v h264_nvenc -crf 0 -b 4M test10_2ms_30fps_60s.mp4 -y
-
压缩
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i a1.mp4 -c:v nvenc -b 200k -an aa.mp4
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i a1.mp4 -c:v h264_nvenc -b:v 200k -an aa.mp4