Electron アプリを開発しましたが、アプリの読み込み時にウイルス対策 (ESET) で初めて「Webcam アクセス試行」が発生しました。他の誰かがこれを経験しましたか?
私のアプリはウェブカメラを使用しておらず、ウェブカメラを必要とするコードもありません。
オーディオ録音のためにオーディオにアクセスするコードがあります。ウイルス対策で Web カメラへのアクセスを拒否しましたが、アプリは設計どおりに機能します。ただし、アプリをロードするたびにウイルス対策の警告メッセージが表示されます。ご想像のとおり、これはクールではありません。
これは、ESET (v14.2.10.0) を更新した直後に表面化したため、トリガーされる新しいルールがいくつかあります。これは何かに対する ESET の過敏性ではないと想定する必要があります (AV の機能がどのように機能するのかわかりませんし、ウイルス対策を「非難」することは、ユーザーに提供するための適切な対応とは思えません)。 -私のコードのAPI。
私のオーディオ アクセスでは、ネイティブ Web API を使用しています: AudioContext、Navigator、MediaDevices、MediaRecorder。コードの主な行は次のとおりです。
// getting list of all AUDIO devices:
// const audioSources = await navigator.mediaDevices.enumerateDevices({ audio: true });
// ^ above does NOT filter by audio only
const audioSources = await navigator.mediaDevices.enumerateDevices();
// creating a recorder object:
const audioContext = new AudioContext();
const dest = audioContext.createMediaStreamDestination();
const audioParams = {
deviceId: "6e5fc2d7ffa5c6c04e06d282a5aa743e983e585a7e12118c80c0cd8646cce4b7", // this ID is from audioSources object
}
const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: audioParams });
const audioIn = audioContext.createMediaStreamSource(mediaStream);
audioIn.connect(dest);
const audioOptions = {
bitsPerSecond: 128000,
mimeType: 'audio/webm; codecs=opus',
};
const recorder = new MediaRecorder(dest.stream, audioOptions);
などのnavigator.mediaDevices.enumerateDevices()
パラメータを取らないため、カメラ リクエストがトリガーされます。{ audio: true }
enumerateDevices()
の結果を使用しenumerateDevices()
てデバイス ID にアクセスし、それを渡して.getUserMedia()
特定のデバイスを選択します。これにより、ユーザーは同じ録音に対して 1 つ以上のオーディオ入力を選択できます。
オーディオ デバイスの利用可能なメディアをクエリする/ビデオを除外する方法はありますか?
使用可能なすべてのオーディオ デバイスを識別する別の方法はありますか?
.getUserMedia()
ストリームとして返すデバイスを選択するには、他にどのような方法がありますか?
これに関して私が見つけた唯一の既存の情報は、閉鎖された Atom コミュニティ フォーラム にあったものでした。Electron は理由もなく私のウェブカメラにアクセスし続けています- 2 人の開発者が 2020 年 9 月に異なるウイルス対策ソフトウェアで同じ動作を発見しました。解決策はありません。
元々は Electron 8.5.0 を使用して見られました。13.1.2 にアップデートした後も問題が残る
ソフトウェアのバージョン: Electron 13.1.2、ESET 14.2.10.0