コロナ禍でイベントがバーチャル化するなか、いままでのオフラインイベントのようなステージ上での講演のような動画を作成できる「Virtual Stage」が発表されました。なお、リアルタイムではなく録画データを使用した後処理になります。
www.youtube.com
オープンソースなので機材を準備すれば誰でも同じ動画を作成することがきでます。
github.com
実際に作ってみた動画がこちらです
www.youtube.com
撮影環境はこのようになっています。真っ白な壁に向かってAzure Kinectで撮影します。
環境
環境はこのようになっています(画像はGitHubより引用)
PCにAzure Kinectを2台接続しています(なお、Azure Kinectは1台でも最後まで動作します)
この環境で「Speaker.Recorder」を起動すると、Azure Kinectの録画(カラー、深度)と、PowerPointのスライド録画と音声が、それぞれ記録されます。
撮影したAzure Kinectの録画データを「Background Matting」というソフトウェアを使用して背景の除去を行います。
「Background Matting」は下記をベースに、Azure Kinectの深度データを使って除去の精度を向上させているようです。
grail.cs.washington.edu
撮影手順
撮影の手順は大きく下記のようになります。
流れ
準備
- ハードウェア
- NVIDIAのGPUが搭載されたPC
- Azure Kinect BodyTracking SDKを使用しているためNVIDIAのGPU(CUDA)が必要です
- Azure Kinect
- 各種ソフトウェアのインストール
- 「Speaker.Recorder」のビルドに必要なソフトウェアの設定
- 「Background Matting」の実行に必要なソフトウェアの設定
撮影
- 「Speaker.Recorder」で講演を記録します
- 「Background Matting」で講演者の背景を除去した動画を作成します
- 背景が除去された動画を使用して、講演動画を作成します
準備
GitHubからプロジェクトをダウンロードします。
github.com
Speaker.Recorder
「Speaker.Recorder.sln」を開き「Speaker.Recorder」をスタートアッププロジェクトに設定してビルドします。
ビルド環境は下記になります。
- Windows 10 64 ビット版 version 1903 以降
- Windows 10 SDK 10.0.18362
- Visual Studio 2019 16.5.5
アプリケーションの実行には下記が必要です
Background Matting
Background MattingはPythonのスクリプトです。ここでAzure Kiectの録画データを使って背景除去を行います。
環境構築はちょっと手間がかかります。
撮影
最初に「Speaker.Recorder」で講演の記録を行います。
「Speaker.Recorder」を実行すると、PowerPointの選択(必要な場合)、背景の記録、撮影、後処理の順で進んでいきます。
講演に使用するPowerPointファイルを指定すると、スライドと音声が記録された動画もAzure Kinectの録画ファイルと一緒に生成されます。
PowerPointファイルを開いた時にこのようなエラーがよく発生します。アプリを再起動して直ることもありますが、場合によってはスライドを作り直す必要もあるかもしれません。
録画が完了するとドキュメントフォルダの「Recorded Sessions」に記録された動画が保存されます。
- kinect0.mkv: Azure Kinectの録画データ(mkvファイル)
- presentation.mp4: スライドと音声の動画
- slides.pptx: 実際のスライドファイル
続いて「Background Matting」を実行します。「BackgroundMatting」フォルダの「run.ps1」が実行用のスクリプトです。
これを開くと下記のようになっています。--input および --outputを指定します。 全体を変換する場合 --startおよび--durationは削除します(この時「--fixed_threshold "640," ’」の最後の「’」は削除します)。
conda activate bgmatting
$Env:CUDA_VISIBLE_DEVICES=0
python .\bg_matting.py `
--name "Speaker" `
--input D:\Speaker\ `
--output_dir D:\Speaker\output\ `
--fixed_threshold "640," `
--start 34 `
--duration 234
conda deactivate
スクリプトが正常に終了すると --output で指定したフォルダに背景除去された動画が生成されます。
- kinect0_color_Speaker.mp4: オリジナル動画
- kinect0_matte_Speaker.mp4: 背景が除去された動画
- kinect0_out_Speaker.mp4: マスク動画
編集
kinect0_matte_Speaker.mp4を動画編集ツールなどでグリーンバック動画として利用します。
完成した動画がこちら。背景やスライドの重ね合わせについては、いろいろアイデアがでそうですね。
www.youtube.com
参考
元の動画を並べたもの
www.youtube.com
背景除去を行った動画
www.youtube.com
編集後1
www.youtube.com
編集後2
www.youtube.com