FFmpeg 是一个多媒体处理工具,本文介绍了 FFmpeg 的安装和基本使用方法,包括查看信息、转换视频格式、提取音频、压缩视频、调整分辨率、裁剪视频、添加水印和合并视频文件的具体命令和参数解释。
1.安装
sudo apt update
sudo apt install ffmpeg
2.基本使用
2.1.查看版本和支持信息
ffmpeg -version # FFmpeg版本
ffmpeg -formats # 支持的所有容器格式,包括输入和输出格式。格式前的D表示解码(输入),E表示编码(输出)。
ffmpeg -muxers # 支持的所有复用器(muxers),将多个流(如音频和视频)合并到一个文件中的工具。
ffmpeg -demuxers # 支持的所有解复用器(demuxers),即从一个文件中分离出多个流的工具。
ffmpeg -devices # 支持的所有输入和输出设备,如摄像头、音频输入设备等。
ffmpeg -codecs # 支持的所有编解码器,包括视频、音频和字幕编解码器。D表示解码器,E表示编码器。
ffmpeg -decoders # 支持的所有解码器
2.2.转换视频格式
ffmpeg -i input.mp4 output.avi # 从MP4格式转换为AVI格式
ffmpeg -i input.mp4 output.gif # 从MP4格式转换为GIF格式
ffmpeg -i input.mp4 -ss 00:00:05 -to 18 -r 20 -vf scale=320:-1 output.gif
ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:39 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif
-i
: 指定输入文件-ss 00:00:05
: 指定开始时间,这里是从视频的第 5 秒开始。-to 18
选项指定结束时间,这里截取到视频的第 18 秒。是相对于视频的开始时间,而不是相对于-ss
指定的时间。-r 20
: 帧率,GIF 的帧率为每秒 20 帧。-vf scale=320:-1
: scale 滤镜,scale=320:-1 表示将视频的宽度缩放到 320 像素,高度按比例自动调整(-1 表示保持纵横比)。-vf "fps=10,scale=320:-1:flags=lanczos"
:指定视频过滤器,fps=10
表示每秒输出 10 帧,flags=lanczos
表示使用 lanczos 算法进行图像缩放。
2.3.提取音频
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3 # 提取音频并保存为MP3格式
-q:a 0
: 设置音频质量,0 是最高质量(最小压缩)的设置。这个选项是 VBR(可变比特率)模式的一个快捷方式,数值越低,质量越高,文件也会更大。-map a
: 选择要处理的流,a 表示选择所有音频流。这个选项确保只提取音频流,而不处理视频流。
2.4.压缩视频
ffmpeg -i input.mp4 -b:v 1000k -b:a 128k output.mp4 # 通过调整比特率来压缩
-b:v 1000k
: 设置视频比特率为 1000 kbps,720p 视频的比特率一般在 2500 kbps 到 5000 kbps 之间,1080p 视频的比特率在 5000 kbps 到 8000 kbps 之间。-b:a 128k
: 设置音频比特率为 128 kbps,低比特率是 32 kbps - 96 kbps,中等是 128 kbps - 192 kbps,高是 256 kbps - 320 kbps,无损通常在 500 kbps 到 1000 kbps 甚至更高。
2.5.调整视频分辨率
ffmpeg -i input.mp4 -vf scale=1280:720 -c:a copy output.mp4
-vf scale=1280:720
: 将视频分辨率调整为 1280x720。-c:a copy
: 复制音频流,不重新编码。
2.6.裁剪视频
# 裁剪视频的前30秒
ffmpeg -i input.mp4 -ss 00:00:05 -t 00:00:30 -c copy output.mp4
-ss 00:00:05
: 指定开始时间,这里是从视频的开头开始截取。-t 00:00:30
: 指定持续时间,这里是截取 30 秒的视频片段。-c copy
: 指定编解码器,copy 表示直接复制视频和音频流,而不进行重新编码。
2.7.添加水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
-i watermark.png
: 指定第二个输入文件,这是要叠加到视频上的水印图片。-filter_complex
: 指定复杂的过滤器图形。这里使用的是 overlay 滤镜,将水印图片叠加到视频上。"overlay=10:10"
: overlay 滤镜的参数,表示将水印图片放置在视频的左上角,距离左边缘和上边缘各 10 个像素。
2.8.合并视频文件
首先创建一个包含所有要合并的视频文件的文本文件,例如 filelist.txt:
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
然后使用以下命令合并视频文件:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
-f concat
: 指定输入格式,concat 是 FFmpeg 的一个特殊格式,用于将多个文件合并成一个文件。-safe 0
指定文件路径的安全性检查。0 表示禁用安全性检查,允许使用绝对路径。如果文件列表中的路径是相对路径,可以省略这个选项或设置为 1。