ffmpeg是一款跨平台的音视频处理工具,可以实现多种格式的音视频编码、解码、转换和编辑。

基本操作

查看版本信息

1
ffmpeg -version

查看支持的编解码器

1
ffmpeg -codecs

查看支持的格式

1
ffmpeg -formats

视频转码

将视频文件从一种格式转换为另一种格式:

1
ffmpeg -i input.mp4 output.avi
  • 压缩参数讲解
1
2
3
4
5
-r 20 #帧率20
-s 1280x720 #设置分辨率
-vf scale=iw*0.75:ih*0.75 #设置分辨率为原来的0.75,与-s互斥使用
-b:v 500k #视频的码率为500k
libx264 #使用libx264编码库编码

音频转码

将音频文件从一种格式转换为另一种格式:

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官方文档