Linux で Teams のバーチャル背景を入れる (2022年版)

2022年04月12日 火曜日


【この記事を書いた人】
古賀 勇

IIJ ネットワーク本部アプリケーションサービス部所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

「Linux で Teams のバーチャル背景を入れる (2022年版)」のイメージ
おさらい

2020年に投稿した Teams / Webex 対応! Linux でバーチャル背景を使う の最新版です。

久しぶりに Linux-Fake-Background-Webcam のレポジトリを眺めていたら、前回と少しやり方が変わっていました。
bodypix のセットアップがムズイ上に、CPU がぶん回って重たいので置き換えた、というのです。

確かに今使っているノート PC でも 10 FPS くらいしか出なくて、少々カクカクしていました。
利便性とパフォーマンスが向上しているようなので、早速試してみます。

セットアップ

PC は前回と同じ環境です。

 

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

     

古賀 勇

2022年04月12日 火曜日

IIJ ネットワーク本部アプリケーションサービス部所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

Related
関連記事