🗂

アルファ付きのPNG連番画像からAVPの標準動画プレーヤー透過するムービーを作る

に公開

概要

Apple Vision Proでの再生時に背景が透明な動画を作成する方法です。
Unityで撮影することが前提です。

流れ

  1. Unityで動画の元となるPNG連番画像を作成(Windows)
  2. ffmpegで透過情報ありのApple ProRes動画を作成(Mac)
  3. avconvertを使用して透過情報付きのHEVCに変換(Mac)
  4. mp4boxで音を追加(Mac)

環境

・Unity
 ・OSはWindows11
 ・Unity 2022.3.27f1
 ・HDRPのプロジェクト
 ・UnityRecorder 4.0.3
・Mac
 ・macOS Sequoia 15.4
 ・ffmpeg version 7.0.1
・MP4Box version 2.4-revrelease
 https://gist.github.com/uupaa/262fa1a98236331571b4

手順

※WindowsのUnity URPプロジェクト、MacでのUnityはうまくできなかった。
※ffmpeg,MP4Boxのインストールについては省略

1. Unityで動画の元となるPNG連番画像を作成(Windows)

Unityから背景が透過しているPNG画像を連番で出力します

Render Texture作成、設定


Size → 1920×1080 に設定 (ここでは2Kサイズの動画を想定)

Main Camera設定


Environment > Background Type → Color
Environment > Background Color の Alpha値 → 0
OutputEnvironment > Target texture → 上で作成したRender Textureを設定

Recorder設定

60フレーム、10秒の動画の場合

Frame Rate > Target FPS → 60 (ここでは60FPS想定)
Recording Mode を Frame Intervalにして Start → 0 End → 600
Add Recorder → Image Sequence
Input > Source → Render Texture Asset
Input > Render Texture → 上で作成したRender Textureを設定
Output Format > Media File Format → PNG
Output Format > Include Alpha → ON
Output File > File Name → ここでは movie_<Frame>
「The Post Processing Buffer Format does not support alpha~」と出るけどとりあえず無視

で、 START RECORDING します。

出力されたアルファ付きPNG

Output File > Path 配下に連番PNGファイルが出力されます

画像が透過になっていることを確認します

これを出力フォルダごとMacにコピー
以下はMacのターミナルでの操作となります

2. ffmpegで透過情報ありのApple ProRes動画を作成(Mac)

フレームレートが60fps
インプットの連番PNG画像が「movie_NNNN.png」
出力先の動画が「outMov.mov」

コマンド例

ffmpeg -r 60 -i ./movie_%04d.png -an -codec:v prores_ks -pix_fmt yuva444p10 -profile:v 4 -bits_per_mb 8000 -vf scale=in_color_matrix=bt709:out_color_matrix=bt709 ./outMov.mov

3. avconvertを使用して透過情報付きのHEVCに変換(Mac)

インプット動画は「outMov.mov」
出力解像度の指定は--preset
 2Kの時:PresetHEVC1920x1080WithAlpha
 4Kの時:PresetHEVC3840x2160WithAlpha
出力する動画は「TransparentMovie_nosound.m4v」

コマンド例
2Kで出力する場合

avconvert --preset PresetHEVC1920x1080WithAlpha -s ./outMov.mov  -o ./TransparentMovie_nosound.m4v

4Kで出力する場合

avconvert --preset PresetHEVC3840x2160WithAlpha -s ./outMov.mov  -o ./TransparentMovie_nosound.m4v

4. mp4boxで音を合成(Mac)

インプット動画は「TransparentMovie_nosound.m4v」
合成する音声ファイルは「sound.mp3」
出力動画は「TransparentMovie.m4v」

コマンド例

mp4box -add TransparentMovie_nosound.m4v -add sound.mp3 TransparentMovie.m4v

ファイル出来上がり例

作成した動画
背景が透明なため、浮かんでいるような表現ができます

ホロラボのテックブログ

Discussion