如何在 Linux 上使用 FFmpeg 命令進行音頻和視頻處理
FFmpeg 是一個著名的命令行媒體處理工具。下面介紹如何在 Linux 上安裝和使用它來修改音頻和視頻文件。
幾乎所有處理視頻的人都可能聽說過 FFmpeg。對于不熟悉的人來說,FFmpeg 是一個免費的開源程序,可以將任何視頻格式轉換為另一種格式并更改其編解碼器。
FFmpeg 支持幾乎所有的音頻/視頻編解碼器(H.264、H.265、VP8、VP9、AAC、OPUS 等)、文件格式(MP4、FLV、MKV、TS、WEBM、MP3 等),甚至流協議(HTTP、RTMP、RTSP、HLS 等)。
下面介紹如何在 Linux 上安裝和使用 FFmpeg 處理音頻和視頻文件。
Linux 上的 FFmpeg 安裝
FFmpeg 是一個免費的開源工具,可在幾乎所有主要 Linux 發行版的默認存儲庫中使用。如果你想自己編譯它,你也可以免費獲得它的??源代碼??。
# Debian
sudo apt install ffmpeg
# Fedora
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf -y install ffmpeg
# RHEL/CentOS
yum install ffmpeg ffmpeg-devel
# Arch Linux
pacman -S ffmpeg
如果安裝過程一切順利,當你使用-version參數時,你應該能夠看到 FFmpeg 版本。
ffmpeg -version
使用 FFmpeg 獲取視頻信息
可以使用-i標志查看要使用 FFmpeg 編輯的視頻的信息:
ffmpeg -i linuxmi.mp4 -hide_banner
在這里,-hide_banner參數的作用是隱藏不必要的信息。您可以刪除此參數并查看輸出的差異。
如您所見,可以獲得大量信息,例如示例視頻的視頻編解碼器類型、創建日期、元數據和編碼器結構。
將視頻或音頻文件轉換為另一種格式
FFmpeg 最有用的功能之一是它可以將視頻或音頻轉換為另一種格式。你可以用簡單的單行來做到這一點。
使用 FFmpeg MOV 到 MP4
您可以使用以下命令使用 FFmpeg 將您的 MOV 格式視頻文件轉換為 MP4:
ffmpeg -i linuxmi.mov output-linuxmi.mp4
首先,使用-i參數,它代表輸入視頻。然后,輸入要轉換的文件。最后,輸入要轉換的格式。你可以給你的輸出任何你想要的名字。
當 FFmpeg 運行時,它會在命令屏幕上顯示它所做的更改。您的輸出文件將存儲在您當前的工作目錄中。
使用 FFmpeg 把 WAV 轉換到 MP3
與視頻類似,您可以對音頻文件進行相同的轉換。例如,您可以將 WAV 音頻文件轉換為 MP3,如下所示:
ffmpeg -i linuxmi.wav -vn -ar 48000 -ac 2 -b:a 256 output-linuxmi.mp3
該命令的參數比視頻轉換方法要多,但也不難理解。要解釋這些:
- vn:有時你聽的音頻文件有圖片。這些圖像通常來自視頻。如果您不希望在輸出中出現此類圖像,則可以使用此參數。
- ar:此參數允許您設置要轉換的音頻文件的音頻頻率。您可以使用 8kHz、44.1kHz 或 48kHz 等值調整音質和頻率。
- ac:您之前可能聽說過單聲道和立體聲這兩個術語。此參數可以幫助您設置音頻通道的數量。
- b:a:此參數允許您設置每秒的音頻比特率。千位越高,音質越高。
使用 FFmpeg 進行音頻操作
FFmpeg 還可以將音頻與視頻分開。為此,使用-vn參數就足夠了:
ffmpeg -i linuxmi.mp4 -vn output.mp3
如果您設法將音頻與視頻分開,您現在可以嘗試從視頻中刪除音頻。這里的區別在于-an參數。如果要禁用視頻中的任何聲音,則應牢記此參數:
ffmpeg -i example-video.mp4 -an output-mute.mp4
使用 FFmpeg 處理視頻大小
視頻大小有時會很煩人,尤其是當您想將它們上傳到某個地方時。您不再需要下載程序來修剪它們,因為 FFmpeg 可以為您做到這一點。但是,您需要了解一些參數:
- -ss:使用此參數設置剪輯的開始時間
- -to:允許您指定剪輯的結束時間
- -c:使用此參數設置剪輯的編解碼器
- -t:使用此參數設置剪輯的持續時間
您可以使用這些參數導出許多示例。例如,如果你想修剪視頻,你可以使用類似的東西:
ffmpeg -i example-video.mp4 -ss 00:02:25 -to 00:03:50 -c copy output-trim.mp4
也可以只裁剪視頻內的圖像而不是整個視頻。為此,您可以使用以下方法:
ffmpeg -i example-video.mp4 -filter:v "crop=w:h:x:y" output-crop.mp4
以下是上述命令中使用的參數:
- -filter:v:此參數指定您將應用于視頻的過濾過程
- crop:此參數用于指定將執行裁剪操作
- w:h:x:y:您可能已經猜到了,w、h、x 和 y 變量分別表示裁剪框的寬度、高度和位置
使用 FFmpeg 在 Linux 上編輯視頻
編輯視頻并不僅僅是修剪和剪切。有時您還需要更改視頻的比例。以下命令會將視頻大小調整為您想要的大小:
ffmpeg -i example-video.mp4 -vf scale=1920:1080 output-scale.mp4
- -vf:此參數的作用與上面看到的-filter:v參數相同
- scale:您可以使用此參數在輸出中指定所需的比例大小
FFmpeg 還允許您組合多個視頻。想象一下,您有多個使用相同編解碼器編碼的剪輯。輸入要合并到.txt文件中的視頻列表。然后,運行以下命令:
ffmpeg -f concat -i my-video-list.txt -c copy sum-output.mp4
此處的concat參數組合了您的文件。也可以使用 FFmpeg 旋轉視頻:
ffmpeg -i linuxmi.mp4 -vf "transpose=2" output-rotate.mp4
- transpose=0:垂直翻轉(默認)
- transpose=1: 順時針旋轉 90 度
- transpose=2: 逆時針旋轉 90 度
- transpose=3: 垂直翻轉
要將視頻順時針旋轉 180 度,您需要指定 transpose 參數兩次:
ffmpeg -i example-video.mp4 -vf "transpose=2,transpose=2" output-rotate.mp4
FPS 和 GOP 操作
如您所知,FPS 表示每秒幀數。GOP(圖片組)是兩個關鍵幀之間的距離。FFmpeg 也可用于更改一些參數,包括 FPS 和 GOP。如果您使用以下命令,FFmpeg 會將原始 FPS 更改為您設置的值:
ffmpeg -i example-video.mp4 -vf "fps=60" output-fps.mp4
對于 GOP,您可以使用-g參數并將其值設置為您想要的任何值。請注意,強制使用過多的關鍵幀可能對某些編碼器的前向算法有害。
ffmpeg -i example-video.mp4 -g 200 output-gop.mp4
使用 FFmpeg 創建動畫 GIF
FFmpeg 也是將視頻轉換為動畫 GIF 的理想選擇。您可以使用簡單的轉換命令來執行此操作:
ffmpeg -i linuxmi.mp4 output-gif.gif
但有時,您可能想要自定義 GIF。您可以使用上面討論的各種參數來實現此目的:
ffmpeg -ss 00:01:15 -i example-video.mp4 -to 10 -r 10 -vf scale=250:-1 output-gif.gif
這里的-r參數表示幀率。如您所見,在單行命令中可以進行許多不同的自定義。
使用 FFmpeg 從視頻中提取幀
除了將一張或多張圖像轉換為視頻外,您還可以從視頻中提取幀。以下命令將從您的輸入視頻中每秒提取一幀。此外,這些提取的圖像將具有兩位數的名稱,例如01.jpeg、02.jpeg等。如果您愿意,還可以添加您學到的其他參數。
ffmpeg -i linuxmi.mp4 -r 1 image-%02d.jpeg
您還可以對提取的圖像使用其他格式,例如 PNG 和 BMP。
為什么要在 Linux 上使用 FFmpeg?
如您所見,FFmpeg 在很多方面都非常有優勢。您不需要為此具備任何技術知識或專業 Linux 經驗。只需幾個參數,您就可以執行各種媒體處理功能。此外,FFmpeg 即使在低端設備上也能很好地工作。
此外,FFmpeg 的功能不限于以上。當您閱讀文檔和用戶手冊時,您可以看到該軟件實際上是多么強大。即使使用–help參數和man命令,您也可以獲得有關使用 FFmpeg 的更多詳細信息。當然還有其他偉大的 Linux 轉換器可以與 FFmpeg 相媲美。