在許多時候我們需要導入更多的視訊內容,無論是為了進行不同素材的比較分析,或是添加補充說明資料。然而,如何妥善處理多個視訊源並使其完美適配於同一個畫面中,這確實是一門需要深入研究的技術學問。在實務應用中,每種方式都有其特定的使用場景和優勢。那讓我們先來認識一下其實在生活中經常會遇到的各種影片處理概念,並且深入了解如何運用強大的 FFmpeg 工具來實現這些需求。
素材取用
影片組合包:雲端下載
– test_touhou.mp4 [Touhou] Bad Apple!! PV [Shadow]
– test_sekai.mp4 Bad Apple!! feat.SEKAI / 25時、ナイトコードで。 × 初音ミク
– test_holo.mp4 BAD APPLE!! PV(影絵 Hololive Version)
– test_uma.mp4【MMDウマ娘】Bad apple!! パロ動画 Bad carrot!!
實作過程
子母畫面 PiP (Picture-in-Picture)
關於子母畫面的應用,最為人熟知的案例莫過於政府新聞會上的手語翻譯。主畫面播放新聞發言人或政府官員的演說內容,而在螢幕一角的小視窗中,會有專業的手語翻譯員同步為聽障人士進行翻譯,確保重要的政府資訊能夠順利傳達給所有民眾。
這個技術的核心理念在於在不干擾觀眾對主要內容注意力的前提下,透過額外的視覺元素來豐富整體觀看內容,或者提供更加多元且具互動性的呈現方式。而同樣使用的也是 overlay + scale 的技術,若忘記的話可以翻閱之前關於浮水印的篇章。

ffmpeg -i ./test_touhou.mp4 -i ./test_uma.mp4 -filter_complex "[1:v][0:v]scale='w=oh*dar:h=rh/4'[s_vid],[0:v][s_vid]overlay=10:10" ./pip.mp4
首先可以看到兩部影片其實有段時間差,再看一下 test_uma 因為 Credit 頁面導致時間多出 7 秒左右。而預設情況下,FFmpeg 會處理完最長的片段。所以剛剛的範例在末尾主畫面反而是一片黑頻。如果想要在處理完主畫面後便切斷,那麼可以在 overlay 後方加上 :shortest=1 之參數。 這邊讓短的到前面,看看輸出後是否變為 03:39。
ffmpeg -i ./test_touhou.mp4 -i ./test_uma.mp4 -filter_complex "[1:v][0:v]scale='w=oh*dar:h=rh/4'[s_vid],[0:v][s_vid]overlay=10:10:shortest=1" ./pip_s.mp4
為了進一步驗證這個現象確實是由 overlay 的主畫面在控制,我們決定進行一個簡單的實驗。通過將影片的導入順序進行調換,會發現時長再度回到 03:46 而非最短的時間。
ffmpeg -i ./test_uma.mp4 -i ./test_touhou.mp4 -filter_complex "[1:v][0:v]scale='w=oh*dar:h=rh/4'[s_vid],[0:v][s_vid]overlay=10:10:shortest=1" ./pip_s_proof.mp4
並排畫面 PbP (Picture-by-Picture)
不同於子母畫面在大小配置上有所區別,合併畫面的特點在於強調內容的平等展現和並列呈現。這種特殊的呈現方式最常被運用在需要進行左右對照比較的場景中,不僅能夠有效地展示前後的差異對比,還特別適合用於並行解說或是同時展示多個不同視角的內容。這樣的配置能讓觀眾更直觀地理解內容之間的關聯性,提供更完整和深入的視覺體驗。
而要達成這種效果,我們需要先規劃區域作為模板,依序塞入影片填滿畫面。針對筆者找來的四份素材,如果要輸出 1920 x 1080 的尺寸,那麼建議每個放大為 960 x 540 的規格。後續根據 layout 的調整,才真正決定其他畫面的大小與擺放位置,而這裡的 w0 與 h0 代表第一部影片的寬與高。
ffmpeg -i ./test_touhou.mp4 -i ./test_holo.mp4 -i ./test_uma.mp4 -i ./test_sekai.mp4 -filter_complex "[0:v]scale=960:540[v0];[1:v]scale=960:540[v1];[2:v]scale=960:540[v2];[3:v]scale=960:540[v3];[v0][v1][v2][v3]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[v]" -map "[v]" -preset fast ./pbp.mp4

並排文字 PAT (Picture-and-Text)
還有一種認作類似概念的方式,比如電視那些購物頻道,將商品資訊放在節目對話的一旁。透過文字的部分傳達資訊內容。可以想像成同樣在一份 layout 之中,但從影片改成圖片。
後話
透過上列技術,我們可以根據不同的使用需求和場景靈活運用這些影片處理方法。無論是簡單或是複雜的多視窗組合,這些技術都能讓我們在不同的專注度和應用層面上得心應手地使用,避免內容的失焦。
參考
[1] overlay — FFmpeg
https://ffmpeg.org/ffmpeg-filters.html#overlay-1
[2] Create a mosaic out of several input videos using xstack — FFmpeg Bug Tracker and Wiki
https://trac.ffmpeg.org/wiki/Create%20a%20mosaic%20out%20of%20several%20input%20videos%20using%20xstack
[3] xstack — FFmpeg
https://ffmpeg.org/ffmpeg-filters.html#xstack-1