透過 FFmpeg 掛載封面圖片

過往文章中,我們深入探討了如何精確地從影片中擷取高品質的畫面,並且運用特殊技術進行影格間的動態推算。這些截圖技術不僅為我們提供了豐富的素材用於模型訓練,更開啟更多創意應用的可能性。在接下來的內容中,我們將會深入探討如何善用擷取到的畫面,透過強大的 FFmpeg 工具製作出獨特且吸引人的封面預覽。

素材取用

影片:雲端下載 <影片來源 – Bad Apple by あにら | ニコニコ >
封面:雲端下載

實作過程

影片預覽 Video Preview

假設我們從上回透過 thumbnail=300 的結果中抽出喜歡的一張,重新命名為 thumbnail 作為我們的封面圖。這次輸入兩份檔案,而 -map 則是用來控制物體,開頭為 0 對應我們的影片。透過 -disposition:0 attached_pic 塞入相片。

thumbnail_set_video.bat
ffmpeg -i ./test.mp4 -i thumbnail.png -map 1 -map 0 -c copy -disposition:0 attached_pic test_newthumbnail.mp4
A view of the video before changing  the thumbnail with FFmpeg
處理前
A view of the video after changing the thumbnail with FFmpeg
處理後

但很可惜的是,YouTube 的影片上傳機制有其特殊性,系統並不會自動讀取影片檔案中原本內建的封面圖片,而是需要內容創作者額外選擇或上傳封面圖片。然而這個過程中,當你使用下載工具從 YouTube 取得影片時,應用程式的編譯器會重新製作一個封面。這個獨特的運作機制提供了一個有趣的辨識方式,透過比對影片的封面圖片特徵,你可以快速判斷出這個影片檔案是否是經由正規管道下載而來。

專輯照片 Album Art

這個時候我們需要特別關注音樂檔案的一個重要特性,那就是幾乎所有的音樂檔案都會包含專輯資訊這個核心概念。這個概念如此普遍,現代的音樂播放器幾乎都能依據作者和專輯這兩項資訊來組織與塞選。此時對於沒有畫面的音檔而言,專輯封面扮演著預覽圖片的重要角色,讓使用者能夠快速識別音樂內容。

但是先前都沒有提供音檔的素材?再度熟悉一下如何快速地轉檔吧!

mp4_to_mp3.bat
ffmpeg -i ./test.mp4 ./test.mp3

pause

準備好音檔之後,我們先用音樂撥放器嘗試看看。此時的畫面應該是純黑,或者只有視覺特效。確認完成之後,我們再透過下方的指令,用先前的邏輯加上封面圖。雖然我們能夠擁有更為簡單的指令,然而 .flac 必須要有 -disposition:0 attached_pic 的存在。

thumbnail_set_audio_id3v24.bat
ffmpeg -i ./test.mp3 -i ./thumbnail.png -map 1 -map 0 -c copy -disposition:0 attached_pic ./test_newthumbnail.mp3

完成之後,我們打開新的檔案確認一下,可以看到輸出結果已顯示指定的圖片。不過先別急著關掉網頁,雖然許多網路文章都是這樣操作,但這種方法只適用於 MAC 系統。

此時我們將圖標放大(紅框部分)時,會發現畫面中並沒有出現預覽圖片!相較之下,右側圖中由筆者從 MORA 購入的音樂專輯,所有音檔都完整顯示了相同的封面。

即使經過 24 年,FFmpeg 預設使用的 ID3v2.4 (當年的最新技術)仍然沒有普及,反倒是舊版的 v2.3 持續佔據市場。此時只需加上 -id3v2_version 3 這條參數,就可以強制來做操作。

thumbnail_set_audio_id3v23.bat
ffmpeg -i ./test.mp3 -i ./thumbnail.png -map 1 -map 0 -c copy -id3v2_version 3 -disposition:0 attached_pic ./test_newthumbnail.mp3

後話

相信各位已經掌握如何賦予或是修改現有的封面圖片,這個技術不僅能讓我們視覺化的呈現更加完整,也為後續的檔案管理奠定了良好的基礎。而在後續的內容中,我們則把重點轉移到中繼資料的更深層面向,特別是關於 ID3 標籤的探討。

參考

[1] How to Add a Thumbnail to MP4 Videos Using FFmpeg — Bannerbear
https://www.bannerbear.com/blog/how-to-set-a-custom-thumbnail-for-a-video-file-using-ffmpeg/

[2] Create a Cover Art to Audio Files Using FFmpeg — Bannerbear
https://www.bannerbear.com/blog/how-to-add-a-cover-art-to-audio-files-using-ffmpeg/

[3] How to Add Album Art Cover to Audio Files
https://www.baeldung.com/linux/terminal-music-add-album-art

[4] Audio Interchange File Format — FFmpeg
https://ffmpeg.org/ffmpeg-formats.html#aiff-1

額外讀物

[1] ID3 Introduction — ID3 Official
https://web.archive.org/web/20150620033655/http://id3.org/ID3v1
https://web.archive.org/web/20161201061509/http://id3.org/ID3v2Easy

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料