カメラ
linuxにはv4l2loopback
なるカーネルモジュールが存在しており、これを使用することで仮想カメラを作成することが可能です。
仮想カメラの作成(モジュールのインストールとロード)
ubuntuの場合、apt
から落としてくることが可能です。
sudo apt install v4l2loopback-dkms
インストールが完了したらmodprobe
を使用してモジュールの読み込みを行ってください。
sudo modprobe v4l2loopback card_label="WebCam@1" exclusive_caps=1
上記にあるexclusive_caps=1
はchrome等で使用する場合に必要なようです。(参考)
仮想カメラへの入力
さて、仮想カメラに流すソースを用意する方法についてですが、OBS Studioが手軽です。ただし、仮想カメラのサポートはv26.1以上なので注意してください。
適当な動画ファイルなどを使用してストリームを開始したら、以下に示すように"Start Virtual Camera"を選択することで仮想カメラへの入力が始まります。
その他、ffmpegを利用することでも仮想カメラへの入力ができるようです。(参考)
仮想カメラの使用
各アプリケーションによって異なりますが、入力をcard_label=
にて指定したものを利用すれば、仮想カメラが見えるようになっているはずです。
仮想カメラの削除(モジュールのアンロード)
仮想カメラの使用が終わったら、以下のようにモジュールをアンロードすることで元の状態に戻せます。
sudo modprobe --remove v4l2loopback
オーディオ
ミキサとしてpluse-audioを使用している場合について解説します。
仮想デバイスの作成
以下のコマンドで仮想出力デバイスとそのループバックを作成できます。
pacmd load-module module-null-sink sink_name=VirtOutput0 sink_properties=device.description=VirtOutput0
pacmd load-module module-loopback source=VirtOutput0.monitor source_dont_move=true
仮想オーディオへの入力
必要な音源をyoutubeやオーディオアプリケーションなどで流し、pluseaudioのコントロールパネルを使用して出力先を作成したデバイスに繋げばokです。
カメラ入力などで既にOBS Studioを使用している場合、ここから音声入力にも出力することも可能です。その場合、まずは設定画面から以下のように"Monitoring Device"を先程作成した仮想デバイスに指定します。
その後、“Advanced Audio Properties"から、必要な音源について"Monitor Only"を指定してください。
これにより、OBS Studioから音声を入力することが可能になります。
仮想オーディオの使用
これもカメラ同様、各アプリケーションにて入力デバイスとしてsource=
で指定したものを利用すればokです。
追記:なぜかchromeでは仮想マイクを選択することができません。原因はわかりませんがとりあえずの解決策としてはpluse audioのコントローラーからchromeの入力を強制的に仮想デバイスとすることができます。
仮想オーディオの削除
カメラ同様、以下のようにモジュールをアンロードすることで元の状態に戻せます。
pacmd unload-module module-loopback
pacmd unload-module module-null-sink