OBS Studioを使って、複数の仮想カメラを動かしてみた

OBS Studioを使って、複数の仮想カメラを使う方法についてです。

個人的に、今までうまくできなかったのですが、本内容のやり方でできたので、
誰かの参考になればと思い、共有させていただきます。
（もっといいやり方あるよ、という方がおられましたら教えてもらえれば幸いです。）


# 前提

前提として、以下がありますのでご注意ください。
 * 環境
   * AWS EC2 instance type: g4dn.xlarge
     * OSイメージ: NVIDIA Gaming PC - Windows Server 2019
   * OBS Studio version: 29.0.2
     * OBS Virtual Camera Plugin version: 3.0.0
   * 2023年4月頭頃に試した内容です。


# なぜこの方法をやりたかったか？

個人的に、これまで、以下のような活用をしたかったのですが、できなくて断念していました。
 * クラウドのAWS EC2(GPUあるが、カメラ無し)上で加工した映像をカメラ配信
 * アプリの表示映像を加工して配信

上記の活用イメージが以下の図です。
![use-image-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/4d3990ef-c09c-1cef-3f3d-805de963d3bc.jpeg)


この図中の2つ目の仮想カメラ化も、実はOBS Studioでできることを知りました。という内容になります。


# 事前準備

OBS Studioと仮想カメラのプラグインをインストールしておきます。（細かい手順は割愛させていただきます）

仮想カメラのプラグインは、仮想カメラ数を「2」に指定ください。（2以外でもよさそうですが、以下の説明手順は、2の場合になります）
![virtualcam-install-select-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/eade0047-5abb-4cdb-d6ef-21b68dfaf7b6.jpeg)



補足ですが、仮想カメラのプラグインは、OBS Studioのバージョン28以降も動作する以下のURLのものを活用しました。
 * [仮想カメラプラグインのGit Top URL](https://github.com/Avasam/obs-virtual-cam)
 * [仮想カメラプラグインのGit Release URL](https://github.com/Avasam/obs-virtual-cam/releases)

（[こちらの記事](https://zenn.dev/3w36zj6/scraps/cbf6c82d617efd#comment-c6ec72be76e27c)を参考にさせてもらい、現在の最新の29系でも動作するのを利用させてもらいました。情報共有ありがとうございました。大変参考になりました。）


# OBS Studioで複数の仮想カメラの使用

端的に言うと、2つOBS Studioを起動して、それぞれで、仮想カメラを開始する。というだけです。

念のため画像付きで以下に流れを載せておきます。

1. 1つ目の仮想カメラ開始
    1. 1つ目のOBS Studioを起動します。
    1. シーンやソースを設定します。（1つ目は、タスクマネージャーをソースに指定しました）
    ![obs-1-setting-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/136135a7-a203-d1f2-00bf-99a63f5d2c69.jpeg)
    1. 仮想カメラプラグインの仮想カメラ1（OBS Camera）を開始します。（補足すると、メニューの「ツール」から、「VirtualCam」をクリックし、仮想カメラプラグインのウィンドウを開いて、Target Cameraから仮想カメラを選択してStartボタンで開始します）
![obs-1-start-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/32c3cfd2-85c7-3a3b-088d-a6974f696104.jpeg)


1. 2つ目の仮想カメラ開始
   1. 2つ目のOBS Studioを起動します。
   1. 「すでに実行中です」といった警告が表示されますが、とにかく起動します。
   1. シーンやソースを設定します。（2つ目は、エクスプローラーをソースに指定しました）
   ![obs-2-setting-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/317df17e-ef39-3a6b-9d4c-bd4810ac7f6f.jpeg)
   1. 仮想カメラプラグインの仮想カメラ2（OBS Camera 2）を開始します。
![obs-2-start-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/f6d67296-abaf-df71-7f53-712052654091.jpeg)


以上で、複数（2つ）仮想カメラの使用ができています。
確認のため、アプリでカメラデバイスを開いて映像が表示されるか確認してみます。

Zoom Desktop Clientアプリで確認すると、カメラデバイスが複数あることが確認できます。
![zoom-video-select-camera-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/5cbe916c-91f2-2692-3026-2415c7159802.jpeg)
上図の各カメラについて補足です。
 * 「OBS-Camera」は、仮想カメラプラグインの1つ目の仮想カメラです。
 * 「OBS-Camera2」は、仮想カメラプラグインの2つ目の仮想カメラです。
 * 「OBS Virtual Camera」は、OBS Studio本体の仮想カメラです。

引き続き、Zoom Desktop Clientアプリで確認していくと、
カメラ「OBS-Camera」の表示は、タスクマネージャーでした。
これは1つ目のOBS Studioの映像です。（以下の図は、Zoomで自分だけを表示しています。）
![zoom-obs-1-display-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/d205c892-be52-6206-8a06-2f6ff58cfa87.jpeg)


カメラ「OBS-Camera2」の表示は、エクスプローラーでした。
これは2つ目のOBS Studioの映像です。（以下の図は、Zoomで自分だけを表示しています。）
![zoom-obs-2-display-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/d6363a79-021e-1aba-8106-6ab7b713b16a.jpeg)


カメラ「OBS Virtual Camera」の表示は、OBS Studioのアイコンの表示でした。（図は省略しております）
OBS Studioの本体側の仮想カメラは、開始していないので、このようにアイコンが表示されました。
試しに、3つ目のOBS Studioを起動して、背景緑色にし、本体側（プラグインではない方）の仮想カメラを開始すると、映像が表示されました。（以下の図は、Zoomで自分だけを表示しています。）
![zoom-obs-3-display-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/9471b2dd-2cc4-7764-9c20-9b8258fe9bfd.jpeg)



上記それぞれをデスクトップ上に並べて表示すると、以下のようになっています。
![all-desktop-display-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/943678/cc76b679-3808-4e21-2c66-1c5860c152c0.jpeg)
こまごまとしてややこしいですが、各ウィンドウは以下のように配置しています。
 * 左上：Zoom Desktop Clientアプリ
 * 左下：仮想カメラプラグインの仮想カメラ1（OBS-Camera）を動かしている1つ目のOBS Studio
 * 右下：仮想カメラプラグインの仮想カメラ2（OBS-Camera2）を動かしている2つ目のOBS Studio
 * 右上：仮想カメラ（OBS Virtual Camera）を動かしている3つ目のOBS Studio



# さいごに

過去調べた際には、[OBS Studioは複数の仮想カメラは非対応](https://style1925.hateblo.jp/entry/obs-virtual-camera#%E8%A4%87%E6%95%B0%E4%BB%AE%E6%83%B3%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6)と読める情報があったり、実際に自分で何回か試してみても、うまくできなかったので、あきらめていました。
でも、実現できそうな方法が一つ見つかったので、よかったです。今後機会があれば実際に試してみたいです。


あと、本投稿前に再度「multi virtual camera obs」のキーワードでネット検索して気づいたのですが、[こちらのようにポータブル（zip）版のOBSも活用して複数の仮想カメラを実現](https://obsproject.com/forum/threads/multiple-virtual-cameras.154742/)された方もおられたようですね。OBSに慣れている人には基本的な情報なのですかね。。。