视频转码是 FFmpeg 最常用的功能之一,涉及编码器、解码器和封装格式的转换。
基本转码命令
bash# 基本格式转换 ffmpeg -i input.mp4 output.avi # 指定编码器 ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4 # 指定编码参数 ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
重要参数说明
视频编码参数
-c:v:指定视频编码器(如 libx264、libvpx-vp9)-crf:恒定质量因子(0-51,值越小质量越高,默认 23)-preset:编码速度预设(ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow)-b:v:视频比特率(如 2M、1500k)
音频编码参数
-c:a:指定音频编码器(如 aac、mp3、libopus)-b:a:音频比特率(如 128k、192k)-ar:采样率(如 44100、48000)
硬件加速转码
bash# NVIDIA GPU 加速 ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4 # Intel QSV 加速 ffmpeg -hwaccel qsv -i input.mp4 -c:v h264_qsv output.mp4
常见场景
- 降低视频质量减小文件大小
bashffmpeg -i input.mp4 -crf 28 -preset slow output.mp4
- 提取视频流
bashffmpeg -i input.mp4 -an -c:v copy output.mp4
- 调整分辨率
bashffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
转码时需要根据目标平台和设备选择合适的编码器和参数,以在质量和文件大小之间取得平衡。