使用 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,應當改為縮略圖的總數。

一步到位:

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 的方格中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM