一些FFMpeg小竅門
燒錄字幕
如果要給視頻加載字幕的話,其實還是單獨加載文字格式的字幕軌或者字幕文件最方便。但是,如果視頻要傳到一些網站上,或者要用移動設備觀看,可能就需要把字幕燒到視頻裏面了。FFMpeg提供了一個命令:
ffmpeg -i input.mp4 -vf "ass=subtitle.ass" output.mp4
有的字幕是.srt格式的,這時候要先轉碼成.ass格式:
ffmpeg -i input.srt output.ass
要是字幕是MKV文件中的字幕軌,那就需要先提取出來:
ffmpeg -i Movie.mkv -map 0:s:0 subs.srt
這裏0:s:0
代表第一條字幕軌。因爲有時候一個視頻文件裏面有多條不同語言的字幕軌,比如說很多從Netflix上扒下來的視頻。如果要選擇其他的視頻軌,比如第二條,就、把-map
改成0:s:1
。
合併音頻文件
要合併音頻文件的話,先要把文件列出來,放到一個文本文件裏面,像這樣:
file track-01.mp3
file track-02.mp3
file track-03.mp3
...
file track-XX.mp3
假設把上面的文件存成了list.txt
,那麼就運行這個命令:
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp3
把視頻轉成GIF
用FFMpeg其實可以直接把視頻轉成GIF:
ffmpeg -i input.mp4 output.gif
但是,如果直接轉換的話,GIF圖像上會出現橫縱條紋。其實,數字信號處理領域有個專門術語描述這個技術:抖動(dither)。因爲GIF只有128種顏色可供選擇,所以把視頻轉換過來的時候難免會有損失,這個時候用抖動可減小量化誤差。
然而,雖然理論上說,量化誤差減小了,但是實際上人眼看起來卻是不舒服的,所以最好還是把抖動關掉。不過這樣的話步驟要複雜一點,首先要生成GIF調色板:
ffmpeg -i input.mp4 -vf palettegen palette.png
然後結合調色板文件,在禁用抖動的情況下啓動轉碼:
ffmpeg -i input.mp4 -i palette.png -filter_complex "paletteuse=dither=none" output.gif
這樣即可得到滿意的GIF圖片。