📢 本文由 gemini-3-flash-preview 翻譯
說到影音處理就不得不提到 ffmpeg 這個開源工具。雖然自己之前就已經開始使用,但因為零零散散的筆記與需求並不多,加上偶爾才使用一次,所以一直沒想過要寫這篇文章。這次我想著把儲存已久的內容彙整一下(雖然很多都沒記,只好自己補充囉)。
影片轉檔
| |
影片轉音訊
| |
-vn:表示我們已在輸出檔案中停用影像錄製。
影片重新編碼
有時候影片的編碼格式損壞,在部分設備上播放會較為卡頓,這時候就需要重新編碼。
| |
這會使用 x264 重新編碼影片,並使用 aac 重新編碼音訊。
轉換為無聲 webm 影片
| |
其中:
-an:關鍵參數,用於移除聲音。-c:v libvpx-vp9:指定影片編碼格式(vp9 是較為通用的格式,如果追求極速轉換可以使用libvpx)。-crf 30:控制品質,通常在 0-63 之間,數字越小,畫質越好,檔案越大。-b:v 0:使用 vp9 編碼時,通常將位元率設為 0,讓-crf參數來決定畫質。
轉換為 GIF
使用 -loop 0 參數使其循環播放。
| |
如果需要背景透明的話,分為兩種情況:
一種是原影片本身就有透明通道(如 ProRes 4444.mov),直接轉換可能會產生雜訊,一般需要使用調色盤(Palette)濾鏡來確保透明色被正確對應。
| |
參數詳情為:
fps=15:設定影格率,不寫則使用原影片影格率。split[s0][s1]:將影片分為兩路,這裡s0用來生成調色盤,s1用來輸出影像。[s0]palettegen[p]:對s0流生成專門的 256 色調色盤,並命名為p,預設情況下 palettegen 會自動保留透明顏色。[s1][p]paletteuse:將生成的調色盤p套用到影片流s1上。
二是如果原影片是純色背景,可以使用 colorkey 濾鏡進行去背。
| |
對於 colorkey=0x00FF00:0.1:0.1 具體為:
0x00FF00:需要去除的顏色,這裡是以純綠色為例,黑色為0x000000。- 第一個
0.1:相似度(Similarity),0.01-1.0 表示匹配程度從精準匹配到模糊匹配,一般設定在 0.1-0.3。 - 第二個
0.1:混合度(Blend),用於柔化邊緣。
合併影音
首先確認音訊編碼是否相容(例如 AAC 編碼)。
| |
如果相容,直接複製合併即可:
| |
如果音訊不相容,則需要轉換音訊格式:
| |
圖片格式
ffmpeg 甚至可以用於轉換圖片格式,比較簡單的作法是直接執行:
| |
這對於臨時更換格式非常實用。