FFmpeg是一个用于录制、转换、流式传输视频和音频文件的开源工具库。创建于2000年,是一个强大的命令行工具,可以在Linux、Windows和Mac等操作系统上运行。
本文收集了ffmpeg的常用命令,介绍了视频文件转换、音频文件声音提取、将视频转换为GIF文件、pdf转为视频文件等。还有许多并未列举的内容可以参考官方文档:
https://ffmpeg.org/documentation.html
ffmpeg的下载地址为:
https://ffmpeg.org/download.html
以下是FFmpeg命令行的一些例子:
01
视频信息
ffmpeg -i video.mp4
02
视频格式转换
# 查看支持的格式列表
ffmpeg -formats
# 格式转换
ffmpeg -i video.mp4 video.avi
ffmpeg -i video.flv video.mpeg
ffmpeg -i input.webm -qscale 0 output.mp4
avi转flv
ffmpeg -i original_video.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv final_video.flv
03
视频转换为音频
ffmpeg -i input.mp4 -vn output.mp3
也可以使用各种音频编码参数
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
04
修改视频分辨率
ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
# 或者
ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
05
压缩视频文件
下面的命令将压缩并减少输出文件的大小。
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
减小视频文件的大小,将损失视频质量。也可以通过下面的选项来转换编码降低音频比特率,使其有立体声感,从而减小大小。
-ac 2 -c:a aac -strict -2 -b:a 128k
06
压缩音频
可以使用 -ab 标志压缩音频文件,各种压缩比特率为:96kbps、112kbps、128kbps、160kbps、192kbps、256kbps、320kbps。
ffmpeg -i input.mp3 -ab 128 output.mp3
07
视频文件删除音频
ffmpeg -i input.mp4 -an output.mp4
08
从视频文件删除视频
ffmpeg -i input.mp4 -vn output.mp3
使用-ab参数指定比特率。
ffmpeg -i input.mp4 -vn -ab 320 output.mp3
09
提取视频中的图像
ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
-
其中:
-r – 设置帧速度。即,每秒提取帧到图像的数字。默认值是 25。 -
-f – 表示输出格式,即,在我们的实例中是图像。
-
image-%2d.png 表明我们如何命名提取的图像。在这个实例中,命名应该像这样image-01.png、image-02.png、image-03.png 等等开始。如果你使用 %3d,那么图像的命名如:image-001.png、image-002.png 等等开始。
10
裁剪视频
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
其中:
-
input.mp4 :输入视频文件。
-
-filter:v : 表示视频过滤器。
-
crop:表示裁剪过滤器。
-
w:视频中裁剪的矩形的宽度。
-
h:矩形的高度。
-
x:视频中裁剪的矩形的 x 坐标 。
-
y:矩形的 y 坐标。
例如:
要从一个具有 640 像素宽度和 480 像素高度的视频,裁剪当中的位置 (200,150),命令如下:
ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
11
指定特定位置转换视频格式
视频input.mp4 文件的开始 10 秒转为 .avi 格式
ffmpeg -i input.mp4 -t 10 output.avibr
12
视频高宽比
你可以使用 -aspect 标志设置一个视频文件的屏幕高宽比。
ffmpeg -i input.mp4 -aspect 16:9 output.mp4br
通常使用的高宽比是:
-
16:9
-
4:3
-
16:10
-
5:4
-
2:21:1
-
2:35:1
-
2:39:1
13
添加海报图像到音频文件
添加海报图像到你的文件,以便图像将在播放音频文件时显示。
ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
14
使用开始和停止时间剪下一段媒体文件
ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
其中:
-
–s 表示视频剪辑的开始时间。在我们的示例中,开始时间是第 50 秒。
-
-t 表示总的持续时间。
也可以使用下面命令剪下音频。
ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
15
切分视频文件为多个部分
ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
其中:
-
-t 00:00:30 表示从视频的开始到视频的第 30 秒创建一部分视频。
-
-ss 00:00:30 为视频的下一部分显示开始时间戳。它意味着第 2 部分将从第 30 秒开始,并将持续到原始视频文件的结尾。
16
合并多个视频
创建一个join.txt文件,文件内容包含你想合并的视频文件路径。所有的文件都必须是相同的格式(相同的编码格式)。像下面这样逐个列出所有文件。
file /home/sk/myvideos/part1.mp4
file /home/sk/myvideos/part2.mp4
file /home/sk/myvideos/part3.mp4
file /home/sk/myvideos/part4.mp4
执行命令:
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
17
添加字幕到视频
fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
18
预览视频、音频
ffplay video.mp4
ffplay audio.mp3
19
调整视频速度
提高速度
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
降低速度
ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
20
视频转GIF
首先需要安装FFmpeg和ImageMagick。
以Ubuntu linux为例:
sudo apt-get install ffmpeg imagemagick
执行转换命令
ffmpeg -ss 00:00:20 -i sample.mp4 -to 10 -r 10 -vf scale=200:-1 cutekid_cry.gif
其中:
-
-ss:表示GIF的起始点
-
-i:输入文件
-
sample.mp4:视频文件名
-
-to:GIF文件的结束位置
-
-r:帧速率。您可以增加该值以获得更高质量的GIF文件
-
-vf:过滤器,将GIF图像缩放到所需大小。
21
将PDF转为视频
将一堆 PDF 文件转为一个视频,以便于在大屏幕投放。
首先需要安装ffmpeg和ImageMagick
以Ubuntu linux为例:
sudo apt-get install imagemagick
将PDF转为图片
convert -density 400 input.pdf picture.png
将图片转为mp4
ffmpeg -r 1/10 -i picture-%01d.png -c:v libx264 -r 30 -pix_fmt yuv420p video.mp4
其中:
-density 400 指定输出图像文件的水平分辨率。
帮助命令
帮助命令用于查看ffmpeg的介绍。
man ffmpeg
原文链接: