【Electron】LinuxアプリでWebカメラを複数プロセスから呼び出せない

レンダラープロセスでMediaStreamでカメラ映像を表示しつつ、メインプロセスでnode-webcam - npmを使って定期的にカメラ映像を撮影しようとしたところ、表題の問題にぶつかった。

macOS向けアプリケーションでは発生しない。

答え

video - Is it possible for two processes to access the webcam at the same time? - Ask Ubuntu

上記記事の回答にあるように、 v4l2loopbackなどで映像ソースを仮想カメラ複数にループバックさせて、レンダラープロセスとメインプロセスで使い分ける。

だめだったこと

以下のようにしてメインプロセスの定期撮影時にレンダラープロセスのMediaStreamを停止しようとしたが、Webカメラの解放までの時間が安定しなかった。

function stopStreamedVideo(videoElem) {
  let stream = videoElem.srcObject;
  let tracks = stream.getTracks();

  tracks.forEach(function(track) {
    track.stop();
  });

  videoElem.srcObject = null;
}

コード引用元:MediaStreamTrack.stop() - Web API | MDN