オンラインミーティングの負荷は高いか?
働き方改革だ、新しい日常だ、オンライン化だ、という声が上がって半年近く経つが、とりあえず使っているオンライン会議の機材にも少しずつ不満が出てきた。
その不満の一つが、PCへの負荷が高いことだ。
ちなみに、Web会議ではノートPC本体のカメラを使うのが一般的だろう。ただ、自分はカメラが広角であることを嫌気して「外部カメラ⇒HDMI出力⇒コンバーター⇒USB入力⇒OBS⇒バーチャルカメラ出力⇒Zoom」という面倒なやり方を採っている。
「Web会議 "ごとき" が重たいはずないだろう」と思っていたし、今でもそう思っている。しかし、OBSを介する分だけ重たくなるのは承知の上だが、実際問題としてタスクマネージャーで確認するとCPUの負荷が50%を超えることも多く、ノートPCではファンがうるさい上にサーマルスロットリングに当たるので断続的に処理落ちが発生して不快である。
(そもそも、一時期はCPUの負荷が70%を超えていることもあった。さすがにこれは会議中に使わないChromeを閉じることで回避した)
うるさいだけならまだしも、サーマルスロットリングは回避したい。
ハードウェア支援が使える処理はできるだけハードウェアに頼った方が良いので、ソフトウェアごとのGPUの設定も見直したが、特にこれと言って大きな改善は見られなかった。
ちなみにiGPUは共有メモリを使用するので、帯域の問題を回避するためにOBSやZoomの処理をGeforce側に割り振る事も試したものの、むしろデーターのコピーに帯域を食われているように見えたし、発熱が有意に減少しているようには見えなかったので、Geforceは通電せずにiGPU内部で処理を完結させた方が良いという結論に至った。
クーリングファンの設定はサーマルスロットリングを回避するためアクティブにしてある。CPUは低電圧化済みだ。
WindowsUpdateは1カ月ほど黙らせてあるし、常駐ソフトの類は極力何もしないように設定してある。
OBSの出力解像度は720pに落とし、ビットレートも1000kbps未満に落とし、エンコーダーはiGPUの支援を使うようにしてある。
八方ふさがりかと思われたが、OBSのソースの各入力のプロパティーにある「表示中でない場合非アクティブ化する」チェックボックスにチェックを入れたところ、ガクっと負荷が下がったのだ。
OBSにてPC本体のカメラと外付けのカメラを切り替えられるように、両方とも使用可能な状態にしていたがために、常時両方のカメラのデコード処理が必要となってしまい、結果として負荷を高めていたようだ。
何故この設定に気づいたかと言うと、
Nikon純正のWebCamユーティリティーがリリースされた
↓
ダメ元で試したが手持ちのカメラは非対応だった
(対応機種ごとに専用のファイルが存在している模様)
↓
WebCam化に「digiCamControl」を使ってみる
https://sourceforge.net/projects/digicamcontrol/
↓
こちらでは成功してOBSでもZoomでも使えた
(汎用性という意味では結構優秀な印象)
↓
ただし、CPUの論理コア1つを完全占有していることが発覚
↓
実装次第ではWebCamのデコード処理は意外と負荷が高い?
↓
OBSにて常に2系統の入力を有効にしていたことを思い出す
↓
使っていない系統を削除せずに無効化する方法を探る
↓
それっぽい設定を発見、テスト
↓
意外と効果大きかった
という感じである。
重たいと思っていたOBSの動作が、実は自分の設定ミスであったことと、他のツールとの比較においてOBSは比較的低負荷であることが分かったというのが今回の収穫だろうか。
使いもしないカメラを複数繋げている人は少ないだろうが、ノートPCのカメラに満足できず外付けする人は一定数いるはずで、その中にはOBSを使っている人もそれなりの割合で存在すると思う。
OBSの設定を試行錯誤した結果、不要なソース設定が残ったままという人もいるだろう。
そういった数少ない人の参考になれば幸いだ。
それでは皆さん、ごきげんよう。