FFmpeg 的支持格式的
ffmpeg -formats
1、 為顯示你的媒體文件細節
ffmpeg -i video.mp4
ffmpeg -i image.png
> 只看媒體文件信息
ffmpeg -i video.mp4 -hide_banner
ffmpeg -i image.png -hide_banner
2、 轉換視頻文件到不同的格式
ffmpeg -i video.mp4 video.avi
> 你可以轉換媒體文件到你選擇的任何格式
例如,為轉換 YouTube flv 格式視頻為 mpeg 格式
ffmpeg -i video.flv video.mpeg
如果你想維持你的源視頻文件的質量,使用 -qscale 0
ffmpeg -i input.webm -qscale 0 output.mp4
3、轉換視頻文件到音頻文件
ffmpeg -i input.mp4 -vn output.mp3
此外,你也可以對輸出文件使用各種各樣的音頻轉換編碼選項,像下面演示。
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
在這里,
-vn – 表明我們已經在輸出文件中禁用視頻錄制。
-ar – 設置輸出文件的音頻頻率。通常使用的值是22050 Hz、44100 Hz、48000 Hz。
-ac – 設置音頻通道的數目。
-ab – 表明音頻比特率。
-f – 輸出文件格式。在我們的實例中,它是 mp3 格式
4、更改視頻文件的分辨率
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
5、壓縮視頻文件
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
減小視頻文件的大小,將損失視頻質量。如果 24 太有侵略性,可以降低 -crf 值到或更低值。
可以通過下面的選項來轉換編碼音頻降低比特率,使其有立體聲感,從而減小大小。
-ac 2 -c:a aac -strict -2 -b:a 128k
6、壓縮音頻文件
ffmpeg -i input.mp3 -ab 128 output.mp3
音頻比特率列表是:
96kbps
112kbps
128kbps
160kbps
192kbps
256kbps
320kbps
7、從一個視頻文件移除音頻流
ffmpeg -i input.mp4 -an output.mp4
-an 表示沒有音頻
8、從一個媒體文件移除視頻流(轉換所給定媒體文件為音頻文件)
ffmpeg -i input.mp4 -vn output.mp3
-vn 表示沒有視頻
可以使用 -ab 標志來指出輸出文件的比特率
ffmpeg -i input.mp4 -vn -ab 320 output.mp3
9、從視頻中提取圖像
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 坐標。
比如說你想要一個來自視頻的位置 (200,150),且具有 640 像素寬度和 480 像素高度的視頻,命令應該是:
$ 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.avi
12、設置視頻的屏幕高寬比
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
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、接合或合并多個視頻部分到一個
FFmpeg 也可以接合多個視頻部分,并創建一個單個視頻文件。
創建包含你想接合文件的準確的路徑的 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 -i join.txt -c copy output.mp4
如果你得到一些像下面的錯誤;
[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4'
join.txt: Operation not permitted
添加 -safe 0 :
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
上面的命令將接合 part1.mp4、part2.mp4、part3.mp4 和 part4.mp4 文件到一個稱為 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
為降低你的視頻速度,你需要使用一個大于 1 的倍數。為減少播放速度,運行:
ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
20、倒放
1.視頻倒放,無音頻
ffmpeg -i inputfile.mp4 -filter_complex [0:v]reverse[v] -map [v] -preset superfast reversed.mp4
2.視頻倒放,音頻不變
ffmpeg -i inputfile.mp4 -vf reverse reversed.mp4
3.音頻倒放,視頻不變
ffmpeg -i xxx.mp4 -vf reverse -y reverse.mp4
或
ffmpeg -i inputfile.mp4 -map 0 -c:v copy -af "areverse" reversed_audio.mp4
4.音視頻同時倒放
ffmpeg -i inputfile.mp4 -vf reverse -af areverse -preset superfast reversed.mp4
21、視頻添加水印
ffmpeg -i tt.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=20:20" kk.mp4
左上角 10:10
右上角 main_w-overlay_w-10:10
左下角 10:main_h-overlay_h-10
右下角 main_w-overlay_w-10 : main_h-overlay_h-10
22、文字水印
ffmpeg -i kk.mp4 -vf "drawtext=fontfile=simhei.ttf: text='鬼白':x=100:y=100:fontsize=100:fontcolor=yellow:shadowy=2" drawtext.mp4