ffmpeg 常用命令
ffmpeg 是一款跨平台的音视频处理工具,可以实现多种格式的音视频编码、解码、转换和编辑。
基本操作
查看版本信息
1 | ffmpeg -version |
查看支持的编解码器
1 | ffmpeg -codecs |
查看支持的格式
1 | ffmpeg -formats |
视频转码
将视频文件从一种格式转换为另一种格式:
1 | ffmpeg -i input.mp4 output.avi |
- 压缩参数讲解
1 | -r 20 #帧率20 |
音频转码
将音频文件从一种格式转换为另一种格式:
1 | ffmpeg -i input.mp3 output.wav |
视频裁剪
将视频文件裁剪为指定长度:
1 | ffmpeg -ss 00:00:10 -t 00:00:30 -i input.mp4 -c:v copy -c:a copy output.mp4 |
其中,-ss
表示起始时间,-t
表示时长,也可指定剪辑结束时间 -to
(与 -t
互斥)
视频截图
对视频文件进行截图:
1 | ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpg |
其中,-vframes
表示帧数,这里设置为 1,即截取一张图片。
提取音频
从视频中提取音频:
1 | ffmpeg -i input.mp4 -vn -acodec copy output.aac |
其中,-vn
表示不需要视频流,-acodec
表示音频编解码器。
添加水印
给视频添加水印:
1 | ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4 |
其中,-i
表示输入文件,-filter_complex
表示复合滤镜。overlay
表示叠加效果,这里将水印放在左上角,坐标为 (10,10)。
去除水印
查看视频帧信息
1 | ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4 |
去除水印
1 | ffmpeg -i input.mp4 -filter_complex "delogo=x=10:y=H-h-10:w=100:h=100:show=0" -c:a copy output.mp4 |
H
表示视频帧的高度,而 h
表示要删除的矩形区域的高度。因此,H-h
的结果是视频帧顶部到要删除的区域底部的距离。
高级操作
视频拼接
将多个视频文件拼接成一个文件:
1 | ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4 |
其中,-i
指定输入文件,使用 concat
协议拼接三个文件。
视频加速
将视频文件加速播放:
1 | ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4 |
其中,-filter:v
表示视频滤镜,setpts
表示设置帧时间戳,这里将帧时间戳减半,即加速为原来的两倍。
音频混音
将多个音频文件混合为一个文件:
1 | ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amix=inputs=2:duration=first output.mp3 |
其中,amix
表示音频混音效果,inputs
表示输入音频数,这里为 2;duration
表示以第一个输入音频为准,以其时长为混合后音频的时长。
文件操作
文件夹内所有指定后缀文件操作
1 | for /r %i in (*.flac) do some orders |
例如,将文件夹内所有的 flac 文件转 mp3 文件:
1 | for /r %i in (*.flac) do ffmpeg -i "%i" -ab 320k -map_metadata 0 -id3v2_version 3 "%~dpni.mp3" |
%~dpni
是一个批处理脚本中获取文件名的语法格式,用于提取文件路径和文件名(去掉扩展名)。
%i
为循环变量,代表当前循环到的文件。%d
提取驱动器号码,例如 C:\%p
提取文件路径,不包括驱动器号码,例如 \Music\FLAC\%n
提取不带扩展名的文件名,例如 example%i
提取完整文件名,例如 example.flac
所以 %~dpni.mp3
将会把 %i
中的文件通过 FFmpeg 转换成 MP3 文件,并将其放在与原始文件相同的目录下,文件名也将与原始文件名相同,只是文件扩展名更改为 .mp3
。
结语
这里只是列举了 ffmpeg 常用的一些命令及其使用方法,更多详细内容请参考 ffmpeg 官方文档。