歡迎光臨
每天分享高質量文章

給新手的 20 多個 FFmpeg 命令示例 | Linux 中國

在這個指南中,我將用示例來闡明如何使用 FFmpeg 媒體框架來做各種各樣的音頻、視頻轉碼和轉換的操作。

— Sk

 

在這個指南中,我將用示例來闡明如何使用 FFmpeg 媒體框架來做各種各樣的音頻、視頻轉碼和轉換的操作。我已經為初學者彙集了最常用的 20 多個 FFmpeg 命令,我將不時地添加更多的示例來保持更新這個指南。請給這個指南加書簽,以後回來檢查更新。讓我們開始吧,如果你還沒有在你的 Linux 系統中安裝 FFmpeg,參考下麵的指南。

◈ 在 Linux 中安裝 FFmpeg

針對初學者的 20 多個 FFmpeg 命令

FFmpeg 命令的典型語法是:

  1. ffmpeg [全域性選項] {[輸入檔案選項] -i 輸入_url_地址} ...
  2. {[輸出檔案選項] 輸出_url_地址} ...

現在我們將查看一些重要的和有用的 FFmpeg 命令。

1、獲取音頻/視頻檔案信息

為顯示你的媒體檔案細節,運行:

  1. $ ffmpeg -i video.mp4

樣本輸出:

  1. ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
  2. built with gcc 8.2.1 (GCC) 20181127
  3. configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
  4. libavutil 56. 22.100 / 56. 22.100
  5. libavcodec 58. 35.100 / 58. 35.100
  6. libavformat 58. 20.100 / 58. 20.100
  7. libavdevice 58. 5.100 / 58. 5.100
  8. libavfilter 7. 40.101 / 7. 40.101
  9. libswscale 5. 3.100 / 5. 3.100
  10. libswresample 3. 3.100 / 3. 3.100
  11. libpostproc 55. 3.100 / 55. 3.100
  12. Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  13. Metadata:
  14. major_brand : isom
  15. minor_version : 512
  16. compatible_brands: isomiso2avc1mp41
  17. encoder : Lavf58.20.100
  18. Duration: 00:00:28.79, start: 0.000000, bitrate: 454 kb/s
  19. Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], 318 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
  20. Metadata:
  21. handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019.
  22. Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
  23. Metadata:
  24. handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019.
  25. At least one output file must be specified

如你在上面的輸出中看到的,FFmpeg 顯示該媒體檔案信息,以及 FFmpeg 細節,例如版本、配置細節、版權標記、構建引數和庫選項等等。

如果你不想看 FFmpeg 標語和其它細節,而僅僅想看媒體檔案信息,使用 -hide_banner 標誌,像下麵。

  1. $ ffmpeg -i video.mp4 -hide_banner

樣本輸出:

使用 FFMpeg 查看音頻、視頻檔案信息。

看見了嗎?現在,它僅顯示媒體檔案細節。

2、轉換視頻檔案到不同的格式

FFmpeg 是強有力的音頻和視頻轉換器,因此,它能在不同格式之間轉換媒體檔案。舉個例子,要轉換 mp4 檔案到 avi 檔案,運行:

  1. $ ffmpeg -i video.mp4 video.avi

類似地,你可以轉換媒體檔案到你選擇的任何格式。

例如,為轉換 YouTube flv 格式視頻為 mpeg 格式,運行:

  1. $ ffmpeg -i video.flv video.mpeg

如果你想維持你的源視頻檔案的質量,使用 -qscale 0 引數:

  1. $ ffmpeg -i input.webm -qscale 0 output.mp4

為檢查 FFmpeg 的支持格式的串列,運行:

  1. $ ffmpeg -formats

3、轉換視頻檔案到音頻檔案

我轉換一個視頻檔案到音頻檔案,只需具體指明輸出格式,像 .mp3,或 .ogg,或其它任意音頻格式。

上面的命令將轉換 input.mp4 視頻檔案到 output.mp3 音頻檔案。

  1. $ ffmpeg -i input.mp4 -vn output.mp3

此外,你也可以對輸出檔案使用各種各樣的音頻轉換編碼選項,像下麵演示。

  1. $ 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、更改視頻檔案的解析度

如果你想設置一個視頻檔案為指定的解析度,你可以使用下麵的命令:

  1. $ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4

或,

  1. $ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4

上面的命令將設置所給定視頻檔案的解析度到 1280×720。

類似地,為轉換上面的檔案到 640×480 大小,運行:

  1. $ ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4

或者,

  1. $ ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4

這個技巧將幫助你縮放你的視頻檔案到較小的顯示設備上,例如平板電腦和手機。

5、壓縮視頻檔案

減小媒體檔案的大小到較小來節省硬體的空間總是一個好主意.

下麵的命令將壓縮並減少輸出檔案的大小。

  1. $ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4

請註意,如果你嘗試減小視頻檔案的大小,你將損失視頻質量。如果 24 太有侵略性,你可以降低 -crf 值到或更低值。

你也可以通過下麵的選項來轉換編碼音頻降低比特率,使其有立體聲感,從而減小大小。

  1. -ac 2 -c:a aac -strict -2 -b:a 128k

6、壓縮音頻檔案

正像壓縮視頻檔案一樣,為節省一些磁盤空間,你也可以使用 -ab 標誌壓縮音頻檔案。

例如,你有一個 320 kbps 比特率的音頻檔案。你想通過更改比特率到任意較低的值來壓縮它,像下麵。

  1. $ ffmpeg -i input.mp3 -ab 128 output.mp3

各種各樣可用的音頻比特率串列是:

1. 96kbps
2. 112kbps
3. 128kbps
4. 160kbps
5. 192kbps
6. 256kbps
7. 320kbps

7、從一個視頻檔案移除音頻流

如果你不想要一個視頻檔案中的音頻,使用 -an 標誌。

  1. $ ffmpeg -i input.mp4 -an output.mp4

在這裡,-an 表示沒有音頻錄製。

上面的命令會撤銷所有音頻相關的標誌,因為我們不要來自 input.mp4 的音頻。

8、從一個媒體檔案移除視頻流

類似地,如果你不想要視頻流,你可以使用 -vn 標誌從媒體檔案中簡單地移除它。-vn 代表沒有視頻錄製。換句話說,這個命令轉換所給定媒體檔案為音頻檔案。

下麵的命令將從所給定媒體檔案中移除視頻。

  1. $ ffmpeg -i input.mp4 -vn output.mp3

你也可以使用 -ab 標誌來指出輸出檔案的比特率,如下麵的示例所示。

  1. $ ffmpeg -i input.mp4 -vn -ab 320 output.mp3

9、從視頻中提取圖像

FFmpeg 的另一個有用的特色是我們可以從一個視頻檔案中輕鬆地提取圖像。如果你想從一個視頻檔案中創建一個相冊,這可能是非常有用的。

為從一個視頻檔案中提取圖像,使用下麵的命令:

  1. $ 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 允許以我們選擇的任何範圍裁剪一個給定的媒體檔案。

裁剪一個視頻檔案的語法如下給定:

  1. 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 像素高度的視頻,命令應該是:

  1. $ ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4

請註意,剪切視頻將影響質量。除非必要,請勿剪切。

11、轉換一個視頻的具體的部分

有時,你可能想僅轉換視頻檔案的一個具體的部分到不同的格式。以示例說明,下麵的命令將轉換所給定視頻input.mp4 檔案的開始 10 秒到視頻 .avi 格式。

  1. $ ffmpeg -i input.mp4 -t 10 output.avi

在這裡,我們以秒具體說明時間。此外,以 hh.mm.ss 格式具體說明時間也是可以的。

12、設置視頻的屏幕高寬比

你可以使用 -aspect 標誌設置一個視頻檔案的屏幕高寬比,像下麵。

  1. $ ffmpeg -i input.mp4 -aspect 16:9 output.mp4

通常使用的高寬比是:

◈ 16:9
◈ 4:3
◈ 16:10
◈ 5:4
◈ 2:21:1
◈ 2:35:1
◈ 2:39:1

13、添加海報圖像到音頻檔案

你可以添加海報圖像到你的檔案,以便圖像將在播放音頻檔案時顯示。這對托管在視頻托管主機或共享網站中的音頻檔案是有用的。

  1. $ ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

14、使用開始和停止時間剪下一段媒體檔案

可以使用開始和停止時間來剪下一段視頻為小段剪輯,我們可以使用下麵的命令。

  1. $ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4

在這裡,

◈ –s – 表示視頻剪輯的開始時間。在我們的示例中,開始時間是第 50 秒。
◈ -t – 表示總的持續時間。

當你想使用開始和結束時間從一個音頻或視頻檔案剪切一部分時,它是非常有用的。

類似地,我們可以像下麵剪下音頻。

  1. $ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3

15、切分視頻檔案為多個部分

一些網站將僅允許你上傳具體指定大小的視頻。在這樣的情況下,你可以切分大的視頻檔案到多個較小的部分,像下麵。

  1. $ 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。所有的檔案都應該是相同的格式(相同的編碼格式)。所有檔案的路徑應該逐個列出,像下麵。

  1. file /home/sk/myvideos/part1.mp4
  2. file /home/sk/myvideos/part2.mp4
  3. file /home/sk/myvideos/part3.mp4
  4. file /home/sk/myvideos/part4.mp4

現在,接合所有檔案,使用命令:

  1. $ ffmpeg -f concat -i join.txt -c copy output.mp4

如果你得到一些像下麵的錯誤;

  1. [concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4'
  2. join.txt: Operation not permitted

添加 -safe 0 :

  1. $ ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4

上面的命令將接合 part1.mp4、part2.mp4、part3.mp4 和 part4.mp4 檔案到一個稱為 output.mp4 的單個檔案中。

17、添加字幕到一個視頻檔案

我們可以使用 FFmpeg 來添加字幕到視頻檔案。為你的視頻下載正確的字幕,並如下所示添加它到你的視頻。

  1. $ fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4

18、預覽或測試視頻或音頻檔案

你可能希望通過預覽來驗證或測試輸出的檔案是否已經被恰當地轉碼編碼。為完成預覽,你可以從你的終端播放它,用命令:

  1. $ ffplay video.mp4

類似地,你可以測試音頻檔案,像下麵所示。

  1. $ ffplay audio.mp3

19、增加/減少視頻播放速度

FFmpeg 允許你調整視頻播放速度。

為增加視頻播放速度,運行:

  1. $ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

該命令將雙倍視頻的速度。

為降低你的視頻速度,你需要使用一個大於 1 的倍數。為減少播放速度,運行:

  1. $ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4

20、創建動畫的 GIF

出於各種目的,我們在幾乎所有的社交和專業網絡上使用 GIF 圖像。使用 FFmpeg,我們可以簡單地和快速地創建動畫的視頻檔案。下麵的指南闡釋瞭如何在類 Unix 系統中使用 FFmpeg 和 ImageMagick 創建一個動畫的 GIF 檔案。

◈ 在 Linux 中如何創建動畫的 GIF

21、從 PDF 檔案中創建視頻

我長年累月的收集了很多 PDF 檔案,大多數是 Linux 教程,儲存在我的平板電腦中。有時我懶得從平板電腦中閱讀它們。因此,我決定從 PDF 檔案中創建一個視頻,在一個大屏幕設備(像一臺電視機或一臺電腦)中觀看它們。如果你想知道如何從一批 PDF 檔案中製作一個電影,下麵的指南將幫助你。

◈ 在 Linux 中如何從 PDF 檔案中創建一個視頻

22、獲取幫助

在這個指南中,我已經改寫大多數常常使用的 FFmpeg 命令。它有很多不同的選項來做各種各樣的高級功能。要學習更多用法,請參考手冊頁。

  1. $ man ffmpeg

這就是全部了。我希望這個指南將幫助你入門 FFmpeg。如果你發現這個指南有用,請在你的社交和專業網絡上分享它。更多好東西將要來。敬請期待!

謝謝!


已同步到看一看
赞(0)

分享創造快樂