使用 ffmpeg 轉換媒體格式的幾例

導讀使用 ffmpeg 轉換視頻格式,ffmpeg 是 *nix 系統下最流行的音視頻處理庫,功能強大,並且提供了豐富的終端命令,實是日常視頻處理的一大利器!

使用 ffmpeg 轉換媒體格式的幾例使用 ffmpeg 轉換媒體格式的幾例

實例

flac 格式轉 mp3

音頻格式轉換非常簡單:

ffmpeg -i input.flac -acodec libmp3lame output.mp3

ffmpeg 將會使用 libmp3lame ×××將 input.flac 文件轉換爲 mp3 格式的 output.mp3 文件。

批量格式轉換

想要批量轉換 flac 文件也是很常見的需求,我們可以結合 bash 命令來完成:

find . -name "*.flac" -exec bash -c 'ffmpeg -i "{}" -y "${0/.flac}.wav"' {} \

webm 轉 gif 格式

webm 是 Google 提出的多媒體文件格式,包含了 VP8 影片軌和 Ogg Vorbis 音軌,按照 BSD 格式開源。webm 能夠提供更高質量的在線視頻,但是其支持程度並不如存在已久的 mp4 和動態圖片格式 gif,因此有時候會有將其轉換爲 gif 格式的需求。我們用到的命令是:

ffmpeg -i input.webm -vf "scale=400:-1,fps=10" output.gif

其作用是將 input.webm 格式的視頻轉換爲橫向寬度爲 400px,縱向寬度保持比例的每秒 10 幀的 output.gif 圖片。

當然,也可以將 gif 轉換爲 webm 格式:

ffmpeg -i output.gif -c:v libvpx -auto-alt-ref 0 input.webm

如果出現“Unknown encoder libvpx”的問題,需要重新在重新編譯安裝 ffmpeg 以支持 libvpx 編碼器:brew reinstall ffmpeg --with-libvpx。

轉換爲 mp4 格式:

ffmpeg -i input.webm -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4

這裏 vf 參數的意義是,將視頻的長寬強制轉換爲偶數,否則可能遇到“width not divisible by 2”的問題。

生成視頻縮略圖

生成封面

使用視頻的第一幀作爲封面:

ffmpeg -i your-video.mp4 -ss 00:00:00 -vframes 1 thumb.png

每 xx 秒生成一個縮略圖,每分鐘一張:

ffmpeg -i your-video.mp4 -vf fps=1/60 your-video-%03d.png

再將其合併:

ffmpeg -i your-video-%03d.png -filter_complex scale=-1:-1,tile=99x1:margin=10:padding=4 output.png

這裏的 tile 長度設定爲 99,應當改爲縮略圖的總數。Linux就該這麼學

一步到位:

ffmpeg -ss 00:00:00 -i your-video.mp4 -vf 'select=not(mod(n\,24)),scale=-1:-1,tile=99*1' out.png

意思是從視頻的 00:00:00 處開始,每 24 幀(一般動換都是 24 幀的)取一張圖片,長寬不進行壓縮,最後合成在 99*1 的方格中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章