Linux で Teams のバーチャル背景を入れる (2022年版)
2022年04月12日 火曜日
CONTENTS
2020年に投稿した Teams / Webex 対応! Linux でバーチャル背景を使う の最新版です。
久しぶりに Linux-Fake-Background-Webcam のレポジトリを眺めていたら、前回と少しやり方が変わっていました。
bodypix のセットアップがムズイ上に、CPU がぶん回って重たいので置き換えた、というのです。
確かに今使っているノート PC でも 10 FPS くらいしか出なくて、少々カクカクしていました。
利便性とパフォーマンスが向上しているようなので、早速試してみます。
セットアップ
PC は前回と同じ環境です。
- SONY VAIO PRO PG VJPG111
- openSUSE Leap 15.3
1. なるべく新しい Python をインストール
このあと pip でインストールする Mediapipe が新しめのバージョンを要求されるので、Python の最新版をインストールしておきます。openSUSE は複数のバージョンの Python を別パッケージとしてシステム内に混在してインストールできるようになっていますので、現時点で最新の Python 3.9 系をインストールします。(環境によっては、pyenv のほうが便利かもしれません)
# zypper in python39
2. Linux-Fake-Background-Webcam を clone してカーネルモジュールを読み込み
前回、仮想ウェブカメラの v4l2loopback モジュールをインストール済みの場合、この手順は不要です。
# zypper in v4l2loopback-utils v4l2loopback-kmp-default $ git clone https://github.com/fangfufu/Linux-Fake-Background-Webcam # cd Linux-Fake-Background-Webcam # ./v4l2loopback-install.sh
前は /etc/modprobe.d/ に手で書いていましたが、シェルになっていました。
root で実行するだけで、必要な記述が /etc/modprobe.d/linux-fake-background.conf に追加され、カーネルモジュールが読み込まれ(modprobe され)ます。
$ cat /etc/modprobe.d/linux-fake-background.conf options v4l2loopback devices=1 exclusive_caps=1 video_nr=2 card_label="fake-cam"
ここで、v4l2loopback が読み込まれ、/dev/video2 が生えていることを確認します。
$ ls -l /dev/video2 crw-rw----+ 1 root video 81, 0 3月 16 18:55 /dev/video2
3. 必要な Python パッケージをインストール
次に、公式の手順は install.sh を実行することになっていますが、Python 3.9 の pip を使っていますので、手で実行して依存パッケージをインストールします。
# pip3.9 install -r requirements.txt
たったこれだけで準備完了です。
使いかた
Teams や Zoom を起動する前に、先にバーチャル背景用の仮想 Webcam を起動しておきます。
# python3.9 fake.py
前回の方法とは異なり、この時点でカメラは有効になりません。
普通に Teams や Zoom から会議に参加し、カメラを ON にすると、オンデマンドで仮想 Webcam が起動するようになります。
Real camera original values are set as: 640x480 with 30 FPS and video codec 1448695129 Real camera new values are set as: 1280x720 with 30 FPS and video codec 1196444237 FPS: 30.05
バーチャル背景が有効になると、相変わらず全力で CPU は回りますが、30 FPS 出ています。
ちなみに /etc/modprobe.d/linux-fake-background.conf に書いてある、card_label=“fake-cam” が Teams アプリ等からウェブカメラを選択するときに表示される名前ですが、せっかくなので “President mode” にしてみました。
$ cat /etc/modprobe.d/linux-fake-background.conf options v4l2loopback devices=1 exclusive_caps=1 video_nr=2 card_label="President mode"
これで今日からあなたも大統領になりましょう。
追加情報
手前にバリーくんを入れる方法
- 前回エンジニアブログに書いた記事「Teams / Webex 対応! Linux でバーチャル背景を使う」の「応用編: 前景にネームプレートを入れる」をご覧ください。
- 本記事の方法は背景を入れるだけでなく、前景を入れることもできます。これは(少なくとも本稿執筆時点で)他のアプリにはない機能です! 社外とのオンラインミーティングが増えて、名刺代わりに二次元コードを背景に入れる手法がありますが、これなら自分が影になって二次元コードが隠れることもありません。
ネームプレートが反転している理由
Linux に対応しているウェブカメラが知りたい
- 最近、Logicool の C615n を買いました。Chrome OS 対応をうたっているだけあって、Linux でも挿すだけで使えました。マイクも内蔵されていますので、デスクトップ PC にも最適です。実勢価格 4,000円ほどで入手できるのも嬉しいポイント。
- ハードウエアの認識状況は次のとおりです。(Device-3)
# dmesg | fgrep Webcam [649481.714981] usb 5-3.4: Product: HD Webcam C615 [649482.388276] uvcvideo: Found UVC 1.00 device HD Webcam C615 (046d:082c) [649482.427501] input: HD Webcam C615 as /devices/pci0000:00/0000:00:08.1/0000:0b:00.3/usb5/5-3/5-3.4/5-3.4:1.2/input/input19 # inxi --audio Audio: Device-1: NVIDIA TU116 High Definition Audio driver: snd_hda_intel Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio driver: snd_hda_intel Device-3: Logitech HD Webcam C615 type: USB driver: snd-usb-audio,uvcvideo Device-4: GN Netcom Jabra EVOLVE LINK type: USB driver: jabra,snd-usb-audio,usbhid Sound Server: ALSA v: k5.3.18-150300.59.54-default