Chrome 影片中的 Alpha 透明度

Chrome 影片中的 Alpha 透明度

Chrome 31 現已支援 WebM 中的影片 Alpha 透明度。

換句話說,Chrome 在播放以 alpha 通道編碼為 WebM (VP8VP9) 的「綠幕」影片時,會考量 alpha 通道。也就是說,您可以播放具有透明背景的影片:在網頁、圖片或其他影片上方播放。

如需示範,請前往 simpl.info/videoalpha。這有點超現實,而且邊緣有點粗糙 (字面上的意思),但你懂我的意思了!

如何製作 Alpha 版影片

我們將說明使用開放原始碼工具 Blender 和 ffmpeg 的方法:

  1. 在單色背景 (例如亮綠色窗簾) 前拍攝主體。
  2. 處理影片,建立包含透明度資料的 PNG 靜態圖片陣列。
  3. 將內容編碼為影片格式 (在本例中為 WebM)。

還有其他專屬工具可執行相同的工作,例如 Adobe After Effects,您可能會覺得更簡單。

1. 製作綠幕影片

首先,您必須以某種方式拍攝主體,讓後續處理程序能夠「移除」(變成透明) 背景中的所有物件。

最簡單的方法是在單色背景 (例如螢幕或窗簾) 前拍攝。綠色或藍色是最常用的顏色,主要是因為與膚色有差異。

線上有許多拍攝綠幕影片 (又稱為色鍵) 的指南,也有許多地方販售綠幕和藍幕背景。或者,您也可以使用色彩關鍵影像繪圖功能繪製背景。

《了不起的蓋茨比》視覺特效片段,說明綠幕的應用範圍有多廣。

以下提供一些拍攝訣竅:

  • 請確認拍攝對象的衣服或物品與背景顏色不同,否則會在最終影片中顯示為「空白區塊」。即使是小型標誌或珠寶,也可能會造成問題。
  • 使用一致、均勻的光線,並避免陰影:目的是讓背景中的顏色範圍盡可能縮小,因為背景之後需要設為透明。
  • 使用多個漫射燈有助於避免陰影和背景顏色變化。
  • 避免使用亮面背景:霧面表面可更好地散射光線。

2. 使用綠幕影片建立原始 Alpha 影片

下列步驟說明如何從綠幕影片建立原始 Alpha 影片:

  1. 拍攝綠幕影片後,您可以使用 Blender 等開放原始碼工具,將影片轉換為包含 Alpha 資料的 PNG 檔案陣列。使用 Blender 的色彩鍵控功能移除綠幕,並將其設為透明。(請注意,PNG 並非必要格式:任何可保留 alpha 版道資料的格式皆可)。
  2. 使用開放原始碼工具 (例如 ffmpeg),將 PNG 檔案陣列轉換為原始 YUVA 影片:

    ffmpeg -i image%04d.png -pix_fmt yuva420p video.raw

    或者,您也可以使用以下 ffmpeg 指令,直接將檔案編碼為 WebM:

    ffmpeg -i image%04d.png output.webm

如要新增音訊,您可以使用 ffmpeg 搭配下列指令進行多路複合:

ffmpeg -i image%04d.png -i audio.wav output.webm

3. 將 Alpha 影片編碼為 WebM

原始 Alpha 影片可以透過兩種方式編碼為 WebM。

  1. 使用 ffmpeg:我們為 ffmpeg 新增支援功能,以便編碼 WebM Alpha 影片。

    請將 ffmpeg 與含有 Alpha 資料的輸入影片搭配使用,並將輸出格式設為 WebM,系統就會自動以正確的格式進行編碼 (請注意:您目前必須確保從 git 樹狀結構取得 ffmpeg 的最新版本,才能讓這項功能正常運作)。

    指令範例:

    ffmpeg -i myAlphaVideo.webm output.webm

  2. 使用 webm-tools:

    git clone https://chromium.googlesource.com/webm/libvpx

    webm-tools 是一組與 WebM 相關的簡單開放原始碼工具,由 WebM 專案作者維護,其中包括可用於建立具有 Alpha 透明度的 WebM 影片的工具。

    使用 --help 執行二進位檔,查看 alpha_encoder 支援的選項清單。

4. 在 Chrome 中播放

如要在 Chrome 中播放已編碼的 WebM 檔案,只要將檔案設為影片元素的來源即可。

他們是怎麼辦到的?

我們訪問了 Google 工程師 Vignesh Venkatasubramanian,請他談談他在這個專案中的貢獻。他總結了相關的關鍵挑戰:

  • VP8 位元串流不支援 Alpha 通道。因此,我們必須在不會破壞 VP8 位元串流,且不會破壞現有播放器的情況下,整合 alpha 效果。
  • Chrome 的轉譯器無法轉譯含有 alpha 的影片。
  • Chrome 針對多個硬體/GPU 裝置提供多個轉譯路徑。每個轉譯路徑都必須變更,才能支援轉譯 Alpha 影片。

我們可以想到許多有趣的影片 Alpha 透明度用途,例如遊戲、互動式影片、協作說故事 (將您自己的影片加入背景影片/圖片)、含有其他角色或情節的影片,以及使用疊加影片元件的網頁應用程式。

祝你製作愉快!如果你運用 Alpha 透明度功能製作出令人驚豔的作品,歡迎與我們分享。

實用資源