Skip to content
dynamis edited this page Mar 23, 2020 · 12 revisions

WebRTC の使い方

TL;DR - Amethyst で WebRTC を使うには Firefox ブラウザービルドを使うなどしてドメイン毎にカメラ利用許可設定を事前に保存したプロファイルを使ってください。

Amethyst では Firefox 通常の UI を搭載しておらず、許可確認ダイアログなどの UI (ロケーションバーの一部として実装されているポップアップ表示のものなど) は使えない。典型的には Geolocation API や WebRTC など利用者の許可を確認して動作する API がそのままでは利用できないが、事前に特定のドメインに対しての許可 permission を設定しておくことでこれらの API も利用可能になる。

Firefox/WebViewer のパーミッション管理

サイト毎の設定は API パーミッションや Cookie 設定などすべてプロファイルディレクトリ (/home/root/.mozilla/firefox/xxxxxxxx.default//home/root/.renesas/webviewer/xxxxxxxx.default/ など) 配下の permissions.sqlite という SQLite3 DB に記録されている。この sqlite の moz_perms テーブルに許可設定を追記することで、Firefox は WebRTC などをユーザー確認無しで利用可能となる。例えば mozilla.github.io で WebRTC (getUserMedia) のビデオカメラ利用許可を記憶している場合は type = camera, permission = 1, expireTime = 0 な行が記録されている。

SELECT * FROM moz_perms WHERE type = 'camera'
# id    origin    type    permission    expireType    expireTime    modificationTime
# 1    2145    https://mozilla.github.io    camera    1    0    0    1560835066806

カメラ・マイクの使用許可設定を追加する方法

SQLite の CLIインターフェース sqlite3(1) を用いて permissions.sqlite のテーブルにレコードを追加することができます。

カメラを使用許可する場合の例

type に "camera" を指定して moz_perms テーブルにレコードを追加します。

以下のコマンドは、例として https://mozilla.github.io の使用許可設定を追加しています。

$ sqlite3 {パス名}/permissions.sqlite <<SQL_END
insert into moz_perms (origin, type, permission, expireType, expireTime, modificationTime)
  values ("https://mozilla.github.io", "camera", 1, 0, 0, 0);
SQL_END

マイクを使用許可する場合の例

type に "microphone" を指定して moz_perms テーブルにレコードを追加します。

以下のコマンドは、例として https://mozilla.github.io の使用許可設定を追加しています。

$ sqlite3 {パス名}/permissions.sqlite <<SQL_END
insert into moz_perms (origin, type, permission, expireType, expireTime, modificationTime)
  values ("https://mozilla.github.io", "microphone", 1, 0, 0, 0);
SQL_END

Firefox ブラウザービルドを使って許可設定を保存する

Firefox ブラウザービルドで許可したいサイトにアクセスして許可確認ダイアログを出し、そこで設定を保存する形で許可をすると、ユーザープロファイルの permissions.sqlite にその許可設定が保存されます。Firefox ブラウザービルドを終了後、Firefox のプロファイルディレクトリから permissions.sqlite を WebViewer のプロファイルディレクトリに上書きコピーしてから起動すれば許可設定がされている状態となり、WebViewer でも同じドメインで利用可能になります。

サイトのパーミッション付与

Firefox ブラウザであれば許可確認ダイアログで次回以降確認しないチェックを入れて許可をすればそのドメインでは次から確認されない。但し、カメラのデバイス ID を指定していないコードの場合、検出されるデバイスリストの最初のものを使おうとしてエラーとなるため、接続するデバイスの ID を constraints で指定して getUserMedia を使うコードを書く必要がある。

Clone this wiki locally