常用参数
基本参数
-i
:指定输入文件。-f
:指定输出格式。-y
:自动覆盖输出文件而不提示。-t
:指定输出的持续时间。-ss
:设置开始时间(用于截取片段)。-to
:设置结束时间(用于截取片段)。-r
:设置帧率。-s
:设置分辨率,例如-s 1280x720
。-an
:禁用音频。-vn
:禁用视频。
视频参数
-vcodec
:指定视频编码器,例如-vcodec libx264
。-b:v
:设置视频比特率,例如-b:v 1000k
。-r
:设置帧率,例如-r 30
。-vf
:设置视频过滤器,例如-vf "scale=1280:720"
。-aspect
:设置显示比例,例如-aspect 16:9
。-q:v
:设置视频质量(较低的值表示较高的质量)。
音频参数
-acodec
:指定音频编码器,例如-acodec aac
。-b:a
:设置音频比特率,例如-b:a 192k
。-ar
:设置音频采样率,例如-ar 44100
。-ac
:设置音频声道数,例如-ac 2
。-q:a
:设置音频质量(较低的值表示较高的质量)。-filter:a
:设置音频过滤器,例如-filter:a "volume=0.5"
。
格式参数
-f
:指定输出格式,例如-f mp4
。-c
:指定编码器,可以用于音频或视频,例如-c:v libx264
或-c:a aac
。-c:v
和-c:a
:分别指定视频和音频编码器。
流操作
-map
:选择流,例如-map 0:v
选择第一个输入文件的视频流。-map_channel
:选择音频通道。-codec copy
:直接复制流而不进行重新编码。
其他参数
-threads
:设置使用的线程数。-preset
:设置编码速度与质量的平衡,例如-preset fast
。-crf
:设置恒定质量模式的质量参数(适用于 x264 和 x265 编码器),值范围为 0-51,较低的值表示较高的质量。-maxrate
和-bufsize
:设置最大比特率和缓冲区大小,用于控制比特率。
常用命令
1. 转换视频格式
将一个视频文件从一种格式转换为另一种格式。
ffmpeg -i input.mp4 output.avi
2. 提取音频
从视频文件中提取音频。
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
3. 调整视频分辨率
改变视频的分辨率(尺寸)。
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
4. 截取视频片段
从视频文件中截取一段时间的视频片段。
ffmpeg -i input.mp4 -ss 00:00:30 -to 00:01:00 -c copy output.mp4
5. 合并视频文件
将多个视频文件合并成一个文件。首先需要创建一个文件列表 filelist.txt
,内容如下:
file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
然后运行以下命令:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
6. 添加水印
在视频中添加水印。
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
7. 静音处理
去除视频中的音频。
ffmpeg -i input.mp4 -an output.mp4
8. 调整视频帧率
改变视频的帧率。
ffmpeg -i input.mp4 -r 30 output.mp4
9. 转换音频格式
将一个音频文件从一种格式转换为另一种格式。
ffmpeg -i input.wav output.mp3
10. 压缩视频
通过降低比特率来压缩视频文件大小。
ffmpeg -i input.mp4 -b:v 1000k output.mp4
11. 视频截图
从视频中截取单帧图像。
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpg
12. 循环播放音频
使音频文件循环播放。
ffmpeg -stream_loop -1 -i input.mp3 output.mp3
13. 显示视频信息
查看视频文件的详细信息。
ffmpeg -i input.mp4
14. 分离音频和视频
提取视频中的音频轨道或视频轨道。
提取音频:
ffmpeg -i input.mp4 -vn -acodec copy output_audio.aac
提取视频:
ffmpeg -i input.mp4 -an -vcodec copy output_video.mp4
15. 截图、提取帧
每10秒截取一帧
ffmpeg -i input.mp4 -vf "fps=1/10" -q:v 2 output_%03d.jpg