FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。
官网下载地址: https://www.ffmpeg.org/download.html
ffmpeg支持许多编码格式,下面的命令可以查看其已安装的编码器。
1 | ffmpeg -encoders |
查看其支持的媒体格式:
1 | ffmpeg -formats |
主要参数
- -i——设置输入文件名。
- -f——设置输出格式。
- -y——若输出文件已存在时则覆盖文件。
- -fs——超过指定的文件大小时则结束转换。
- -t——指定输出文件的持续时间,以秒为单位。
- -ss——从指定时间开始转换,以秒为单位。
- -t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
- -title——设置标题。
- -timestamp——设置时间戳。
- -vsync——增减Frame使影音同步。
- -c——指定输出文件的编码。
- -c copy——直接复制而不经过重新编码(较快)。
- -metadata——更改输出文件的元数据。
- -an——去除音频流。
- -vn——去除视频流。
- -help——查看帮助信息。
主要用法
查看媒体信息
1 | ffmpeg -i input.mp4 |
转换格式
例如将一个名为input.mp4的视频转成avi格式的视频:
1 | ffmpeg -i input.mp4 out.avi |
嵌入字幕文件到视频
例如 (subtitle.srt是字幕文件):
1 | ffmpeg -i input.mp4 -vf subtitles=subtitle.srt out.mp4 |
合并音视频
1 | ffmpeg -i input.mp4 -i input_audio.mp4 -c copy out.mp4 |
从视频中移除音频流
使用-an
标志移除音频流:
1 | ffmpeg -i input.mp4 -an out.mp4 |
从媒体中移除视频流
使用-vn
标志移除视频流:
1 | ffmpeg -i input.mp4 -vn out.mp3 |
这将会把给定媒体文件转为音频文件。
裁剪媒体文件时长
将给定媒体文件从30秒开始剪切20秒,即00:00:30到00:00:50,如下:
1 | ffmpeg -i input.mp4 -ss 00:00:30.0 -codec copy -t 20 out.mp4 |
裁剪视频长宽
从给定视频中从矩形范围裁剪:
1 | ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4 |
- w – 要裁剪的矩形的宽度。
- h – 矩形的高度。
- x – 矩形的 x 坐标 。
- y – 矩形的 y 坐标。
注意:裁剪视频将会影响视频质量。
调整视频播放速度
如果要加快视频播放速度,比如说2倍速:
1 | ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4 |
如要降低视频播放速度,则要将setpts设为一个大于1的数。
设置视频高宽比
1 | ffmpeg -i input.mp4 -aspect 16:9 output.mp4 |
常用的高宽比还有4:3,16:10,5:4。
压缩音频文件
可以使用-ab
标志来压缩音频文件 (通过降低比特率的值来节省空间):
1 | ffmpeg -i input.mp3 -ab 128 output.mp3 |
一般可用的比特率有:96kbps,112kbps,128kbps,160kbps,192kbps,256kbps,320kbps。
更多用法可以参考ffmpeg -help
和官方文档