SkypeでSIGMA fpをウェブカメラとして使いたい (Linux)

最近、リモートワークが流行したお陰で、ビデオ会議をする機会が増えました。 ビデオ会議をしていると、カメラの画質や画角に不満を感じる方も多いのではないでしょうか。 ノートパソコン内臓のウェブカメラの画質は筆舌に尽くしがたいものがあります。 ISOノイズたっぷりの映像に、ダイナミックレンジが低すぎて立体感が失われた日には、誰も貴方の顔を認識できないでしょう。 「人の顔のようなもの」がずらりと並んだ画面を見て、恐怖を感じた人もいると聞きます。 一説によると、ビデオ会議中に猫が現れるのは、飼い主をその恐怖から守るためだと言われています。

そんな闇鍋のようなビデオ会議を卒業するため、最高級のウェブカメラである SIGMA fpSkype で使ってみます。 私の覚書なので、Linux のことしか考えていません。

Skype では SIGMA fp を使えない

SIGMA fp はパソコンと接続するときに「マスストレージ」と「ビデオクラス (UVC)」を選択できます。 UVC を選択すると、パスコンからはウェブカメラと同じカメラデバイスとして認識されるので、超絶高画質な映像をニャンニャンできるというわけです。 Zoom だと複雑な設定をしなくても、SIGMA fp を使うことができます。

しかし、Skype ではどうもうまくいきません。MacLinuxで試してみた所、どちらでもウェブカメラとして使えませんでした。 今までは、別なソフトでカメラ画像を表示して、それをスクリーンキャプチャして配信して凌いできました。 この知性のかけらもない実現手段に、枕濡らした夜は数えきれません。

アイディア

OBS Studioプラグインである obs-v4lsink を使います。 Linux ではカメラデバイスは v4l (Video4Linux) で扱っています。 ループバックカメラデバイスを作るカーネルモジュールを組み込むことで、仮想的にカメラとして認識されるデバイスを作ることができるので、そこに OBS の映像を流す段取りです。

セットアップ

v4l2loopback のインストール

仮想カメラデバイスを作る v4l2loopback はパッケージが既にあるので、インストールは簡単です。

sudo apt install v4l2loopback-dkms v4l2loopback-utils

インストール後、カーネルに組み込みます。

sudo modprobe v4l2loopback

組み込まれたか確認します。

$ lsmod | grep v4l
v4l2loopback           36864  0
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
v4l2_common            16384  1 videobuf2_v4l2
videodev              180224  5 uvcvideo,v4l2loopback,v4l2_common,videobuf2_core,videobuf2_v4l2

また、ビデオデバイスの情報を v4l2-ctl で確認してみます。

$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
    /dev/video1

NEC HD WebCam (usb-0000:00:14.0-4):
    /dev/video0

私の環境では /dev/video1 が仮想デバイスに割り当てられているようです。

obs-v4l2sink のインストール

OBS Studio のインストールは簡単なので省きます。公式サイト通りにインストールして下さい。

obs-v4l2sink も https://github.com/CatxFish/obs-v4l2sink に従ってやればいいのですが、一応手順を書いておきます。

sudo apt install qtbase5-dev
git clone git@github.com:CatxFish/obs-v4l2sink.git
git clone --recursive https://github.com/obsproject/obs-studio.git
mkdir obs-v4l2sink/build
cd obs-v4l2sink/build
cmake -DLIBOBS_INCLUDE_DIR="../../obs-studio/libobs" -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install

OBS Stduio の設定

画面下の「ソース」に「映像キャプチャデバイス」を追加します。

f:id:aabe0:20200512212419p:plain

新規作成をチェックし、「SIGMA fp」と入力します。

f:id:aabe0:20200512212647p:plain

SIGMA fp を UVC モードでパソコンに接続しておきます。 次の画面で SIGMA fp をデバイスとして選び、OK を押します(他の設定は変えなくて良い)。

f:id:aabe0:20200512212513p:plain

ソースが追加されたら、画面上部のメニューの「ファイル」から「設定」を選び、「映像」の出力解像度を「640x360」まで下げます。 他の解像度でも配信はできますが、大きい解像度ほど遅延が大きくなる可能性があります。

f:id:aabe0:20200512213030p:plain

設定完了後、メニューの「ツール」から「V4L2 Video Output」をクリックします。

f:id:aabe0:20200512213137p:plain

仮想ビデオデバイスを指定して、「Start」します。

f:id:aabe0:20200512213148p:plain

これで、SIGMA fp の映像がリサイズされて仮想カメラデバイスに転送された状態になります。

Skype 側の設定

「Dummy Video Device」を選ぶと、あら不思議!SIGMA fp の映像が Skype で使えるようになります!

f:id:aabe0:20200512213437p:plain