转换
ffmpeg内置的libx264, libx265,是使用的264、265的库用CPU进行的软解,编解码直接使用的话,耗时很长。
ffmpeg -i input.mp4 -c:v libx265 -c:a copy output.mp4
可行转码思路:
- 如果h264的码率小于5M,设置转换后的码率为2M。
- 如果h264的码率大于5M,设置转换后码率为原始码率/2。
使用硬件加速
查询编码器
ffmpeg -encoders | findstr /i "264 265 hevc"
查询解码器
ffmpeg -decoders | findstr /i "264 265 hevc"
查询支持的加速方案
ffmpeg -hwaccels
其中:
cuda为Nvidia的加速方案,对应编码:h264_nvenc、hevc_nvenc,解码:h264_cuvid、hevc_cuvid。
qsv为Intel的加速方案,对应编解码:h264_qsv、hevc_qsv。
AMD也有提供编码方案:h264_amf、hevc_amf。
实操:
ffmpeg -hwaccel cuda -i input.mp4 -c:v hevc_nvenc -preset p7 -b:v 3800k -maxrate 4200k -c:a copy output.mp4
查看编码支持的选项使用命令:ffmpeg -h encoder=hevc_nvenc。
-preset 设置编码预设值,默认p4。
-c:v 设置编解码方式;-i 之前的就是设置解码方式,-i 之后的就是编码方式。
-b:v 设置视频码率;影响视频输出质量和大小。
-maxrate 设置最大码率。
-c:a copy 音频不做处理,直接复制。
上面的命令就是使用CPU软解视频,编码使用Nvidia转换为H265格式。在-i之前设置-c:v可选择解码方式。