2022-03-27 (日)
とても眠い…….
ChromeのheadlessモードでgetDisplayMedia()を使うの,--use-fake-ui-for-media-stream
オプションを付けて起動するとキャプチャ対象の選択ダイアログを表示せずにMediaStreamが取得できるようになるのか.ただ,対象を列挙する手段がないのでプライマリモニタに対してしか使えないっぽい.
chrome.desktopCapture.chooseDesktopMedia()
にアクセスするためのChrome extensionを追加すれば色々できそうだけど,そこまでやるならElectronとかでスタンドアローンなアプリにしたほうが良さげ.
* Electron
初めて使ったけど,Node.js + Chromiumで簡単にGUIアプリケーション作れるのは良い.
desktopCaptureモジュールでストリームを列挙できるので,これをレンダラープロセスに渡せばMediaStreamを取得できる.
試した見た感じだと,スクリーンのIDやウインドウハンドルがわかれば,desktopCapture経由しなくてもいきなり,直接getUserMedia()にストリームのID渡してキャプチャできるのか.
怖いと思ったけど,Electronはそういうものらしい.https://utf-8.jp/public/2016/0307/electron.pdf
Webアプリケーション感覚で開発できるけど,うっかり自分の管理下に無いスクリプトを読み込んだりすると危ない感じ.昔のバージョンに較べると安全になったと説明されてるけど,がんばれば実行したユーザの権限で色々できてしまいそうに見える.