Skip to content

FFmpeg

官网

格式转换

命令作用
-i input.mkv输入文件: input.mkv
-c copy直接复制视频和音频,无需重新编码,速度快
out.mp4输出文件: out.mp4
bash
ffmpeg -i input.mkv -c copy out.mp4

视频裁剪

命令作用
-ss 00:00:05从原视频的第5秒开始
-t 20输出20秒的视频
-to 00:00:25在原视频的第25秒结束

裁剪 input.mp4 的第5-25秒的内容, 导出为 out.mp4

bash
ffmpeg -ss 00:00:05 -t 20 -i input.mp4 -c copy out.mp4
bash
ffmpeg -ss 00:00:05 -to 00:00:25 -i input.mp4 -c copy out.mp4

音/视频 编码

命令作用
-codecs显示可用的编解码器
-encoders显示可用的编码器
-decoders显示可用的解码器
-vn去除视频
-an去除音频
-ccopy复制视频音频
-c:vcopy复制视频
-c:acopy复制音频
-c:vh264
hevc
av1
h264_nvenc
hevc_nvenc
av1_nvenc
h264_amf
hevc_amf
av1_amf
...
设置视频编码器
-c:aaac
flac
...
设置音频编码器
-b:v8000K设置视频码率 8000KB/S
-b:a320K设置音频码率 320KB/S
-vfscale=1280:720
scale=1920:1080
scale=2560:1440
scale=3840:2160
视频分辨率
-r60设置视频帧率 60

input.mp4 的视频流重新编码成 H264 10000KB/S 码率, 使用NVENC显卡加速, 音频流保持不变, 导出为 out.mp4

bash
ffmpeg -i input.mp4 -c:v h264_nvenc -b:v 10000K -c:a copy out.mp4

部分 NVIDIA显卡 使用 hevc_nvenc 编码时的默认设置可能会报错 B frames as references are not supported

需要添加 -b_ref_mode 0 禁用B帧解决

bash
ffmpeg -i input.mp4 -c:v hevc_nvenc -b_ref_mode 0 out.mp4

图片转码

图片质量范围

格式命令值 (质量范围)
PNG?无损格式应该不用设置
JPG/JEPG-q2 > 31
WEBP-q0 < 100
AVIF-crf0 > 63

input.jpg 转换成50质量的 out.webp

bash
ffmpeg -i input.jpg -q 50 out.webp

input.webp 转换成30质量的 out.avif

bash
ffmpeg -i input.webp -crf 30 out.avif