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