TL;DR
- Arch Linux上で仮想カメラデバイスを作成します.
- OBSで映像キャプチャや画面キャプチャを1つの映像に合成します.合成映像をOS上の仮想カメラに流します.
- 仮想カメラの映像をZoomのカメラデバイスとして設定し,配信します.
- Zoomに限らず,DiscordやGoogle Meetなどのカメラ出力をする場合に利用できます.
準備
- Arch Linux(ubuntu等の他のディストリビューションでも可能です)
- Windowsでは手順が異なります.
- OBS Studio
- Zoom(カメラ入力ができればなんでもよい)
セットアップ
仮想カメラのセットアップ
v4l2loopbackを使って仮想カメラをセットアップします.
以下AURヘルパーであるyayを使ってインストール作業を行っています.他のディストリビューションではパッケージ名等が異なる可能性があります.
まず,以下のパッケージをインストールします.
$ yay -S v4l2loopback-dkms
標準カーネルを使っている場合はカーネルヘッダーファイルをインストールして,カーネルモジュールをコンパイルする必要があります.
$ yay -S linux-headers
v4l2loopbackモジュールを読み込みます.video_nr=42
はデバイス番号を指定します.exclusive_caps=1
を指定すると,Google Chrome等のブラウザ上で仮想カメラが認識されます.
sudo modprobe v4l2loopback video_nr=42 devices=1 exclusive_caps=1
モジュールが読み込めたら以下の手順で確認します.video42
が作成されていればOKです.
$ ls /dev | grep video
video42
$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
/dev/video42
設定の永続化
カーネルモジュールの読み込みを起動時に行いたい場合は設定ファイルに書き込んでおきます.
options v4l2loopback video_nr=42 devices=1 exclusive_caps=1
v4l2loopback
OBSのセットアップ
OBSをインストールします.また,OBSの映像をv4l2に流し込むためのプラグインもインストールします.
obs-studio
はcommunity版もありますが,ブラウザ機能がないため,必要があればGit版をインストールします.詳細はこちらの記事を参照ください.
$ yay -S obs-studio obs-v4l2sink
プラグインがインストールされた状態でOBSを起動すると,メニューのツールタブ下にv4l2sink
の選択肢が増えています.
設定を開くと以下のスクリーンショットのような画面が表示されるので,Device Pathに/dev/video42
を指定して,Startをクリックします.
Zoomのセットアップ
Zoomを使って仮想カメラのテストをします.AURからインストールできます.
$ yay -S zoom
Zoomを起動して,適当にミーティングを開始します.
そのまま自分のカメラ映像を設定してもよいですが,今回は画面共有時に仮想カメラを指定して表示してみようと思います.
画面共有のウィンドウを選択する際に,AdvancedのタブからContent from 2nd Cameraを選択します.
他のカメラが接続されている場合は,左上に表示されるSwitch Cameraをクリックして仮想カメラに切り替えます.
OBSの画面を流せるので,ソースやシーンを活用すれば通常の画面共有よりも高度なことができるようになるかと思います.