Logicool C270 を Linux の Web カメラとして活躍させる
C920x ではなく C270 の理由
自分一人が映れば十分なのだが C920x は無駄に画角が広くて余計なものが映る
カメラの設置位置がどうしても自分から 70cm は離れてしまうため
至近距離だったらこうはならないのだが、これ以上近くにカメラを持ってくると部屋の景観が悪くなるので嫌だ
ソフトウェア側の設定でどうにでもできるし、udev rule を使えばその設定の自化もできるが、手間はかけないに越したことない
画質が良いわけじゃない
最大解像度は C920x の方が高いので、解像度をそのままに画角だけ狭くしてくれたら画質が良くなりそうなものだが、それができない
Logicool のサイトでズームは 1 倍までって書いてあるわけで、ハードウェア側ズームができない
解決方法は自分とカメラの距離を近づけることであり、それならば高解像度も活きそうなものだが、前述の通りそれは嫌
逆に言えば至近距離で使えるのなら C920 の方が満足度は高そう
C920x は聴覚的にも視覚的にもやかましい
駆動中にシャーッという音がすることがあるが C270 は無音
ハードウェア側で何か頑張っちゃってるんだろうね、大した恩恵はないのだが…
稼働中であることを示す LED が C270 に比べてだいぶ激しく主張する
ちなみに C920 の方が C270 と比べて良い点といえば
三脚取り付け用のネジ穴が C270 になくて C920 にはある点
おかげで C270 は 100 均グッズをどうにか組み合わせてカメラアームに取り付けている
Logicool BRIO 100 が良さそう
2023 年 11 月時点で NEW って書いてある。Linux でも動いてくれることを願うが…。
何が良さそうかというと
C270 にないプライバシーシャッターがついてる
画角は C270 に近い狭さである 58 度 (C270 は 55 度) をキープしつつより高画質の 1080p 対応、30 FPS
この時点ですでに嬉しい予感がしているが、万が一解像度を上げきれなかったとしても FPS は今より高くできることを期待
現状、C270 を 864x480, 20FPS (この解像度に対する最大 FPS) で使っている
ただ、20 FPS でも特に困ってないんだな。10 FPS とかにするとさがにカクつき始めるが
C270 と同様オートフォーカスがない
C920 は妙なオートフォーカスのおかげでろくなことが起きない
設定でオフにできるから完全な欠点とまではいかないが…
値段も手頃
OBS と併用してみる
何がやりたいかというと、OBS でいじった結果を仮想カメラとしてビデオ会議ツールの input にできると最高ということである。
しかし、OBS もそこまで魔法の箱ではないような気がしてきたので、ちょっと補正に使う程度に今のところとどまっている。
エンコードにハードウェアアクセラレーションを用いる
File -> Settings -> Output -> Streaming
Video Encoder のプルダウンに Hardware にあれ選べばいいのだが、うーん、ない。Software (x264) のみ。
によればドライバが必要っぽい。
自分の場合は AMD Radeon RX 6600 なので
VA-API on Radeon HD 2000 and newer GPUs is supported by libva-mesa-driver.
VDPAU on Radeon R600 and newer GPUs is supported by mesa-vdpau.
とのことで、知らなかったのだが VA-API と VDPAU という別々の API が存在してるようだ。AUR にプロプライエタリなやつもあると書いてあるが、とりあえず OSS のものを両方入れてみる。
code:shell
sudo pacman -S libva-mesa-driver mesa-vdpau
そして念のため再起動。
ぐぬぬ、これでもプルダウンに出ることはなかった。
環境変数をセットしろとあったので以下も試したが、やはり駄目。
code:shell
env VDPAU_DRIVER=radeonsi LIBVA_DRIVER_NAME=radeonsi obs
プロプライエタリの方を使ってみるか。AMD 本家からの DL だし、Intel や Nvidia に比べたら AMD の方が Linux サポートが真面目なイメージがある。
code:shell
sudo pacman -Rnds libva-mesa-driver mesa-vdpau
paru amf-amdgpu-pro
再び再起動。
やはりだめ。
むしろ、OSS ドライバを消したせいで vainfo も vdpauinfo もエラこれのーが出るようになった。amf-amdgpu-pro は VA-API と VDPAU もカバーしているのではなかったのか??
と、ここでパッケージ obs-studio-amf を発見したので paru で入れてみた。
やっと Hardware が選べるようになった!
pacman -Syu したらまたダメになったんですけど?????
libva-mesa-driver mesa-vdpau を改めて入れてみた。しかし変わらん。
いや、そもそも色々間違ってたわ。
amf 系のパッケージはどちらも不要で、AUR に依存する必要なし。
1. File -> Settings -> Output -> Streaming
2. で、このあと 上部の Output Mode を Advanced に変更
3. Video encoder を x264 から FFmpeg VAAPI H.264 に変更
4. VAAPI Device に RADEON hoge hoge が現れる
でした。公式リポジトリの obs-studio を入れよう。
Virtual Camera ってボタンがあるから押せばいいの?
OBS で調整した結果をビデオ会議で使う場合にはこれをやればいいんだろうか?
Arch Wiki に従い必要なカーネルモジュールを導入しないと Virtual Camera 起動時にエラーが標準(エラー?)出力に出てくる。
code:shell
sudo pacman v4l2loopback-dmks
sudo modprobe v4l2loopback
んー?Google Meet から仮想にアクセスできないな。
と、ここで日本語の Arch Wiki に ユーザーを video グループに追加します という、英語の Arch Wiki にない情報を見つけたので試してみる。
code:shell
sudo usermod -aG video $USER
で、ブラウザを再起動して…と。
うん、関係なかった。
答えはここにあった。
code:shell
$ echo "options v4l2loopback video_nr=42 exclusive_caps=1" | sudo tee -a /etc/modprobe.d/v4l2loopback.conf
exclusive_caps=1 の設定がないとアプリケーションから読めないっぽい。
ちなみに video_nr は /dev/videoX の X の値を決めてるだけだから何でもいい。
あとは手動の modprobe を自動化して、と。
code:shell
$ echo v4l2loopback | sudo tee -a /etc/modules-load.d/modules.conf
あとは Virtual Camera ボタンを押せばアプリケーションから選択できるようになる。
ちなみに手でボタンを押すのが面倒な場合、起動時パラメータ設定できる。
自分の場合、.xprofile に以下を記載することで手動設定をなくした。
code:.xprofile
obs --startvirtualcam --scene {シーン名} --minimize-to-tray &
背景削除してみる
code:shell
$ paru -S obs-backgroundremoval
でも CPU の代わりに GPU を使おうとするとクラッシュする。
code:log
error: obs-backgroundremoval /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1193 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() ONNXRuntimeError : 1 : FAIL : Failed to load library libonnxruntime_providers_tensorrt.so with error: libcudnn.so.8: cannot open shared object file: No such file or directory ライブラリ不足説。
でもこれ CUDA 系だなー。我が家は AMD だから……。
StreamFX が良いらしい
AUR にあるぞ。
code:shell
paru -S obs-streamfx
だめだ cmake のあたりでエラーになった。
こいつかな。
PKGBUILD の build() に export PKG_CONFIG_PATH="/usr/lib/ffmpeg4.4/pkgconfig" を加えろと。