JavaScript にデフォルト以外のサウンドデバイスの使用を強制する

JavaScript にデフォルト以外のサウンドデバイスの使用を強制する

私は、JavaScript を通じてオーディオを再生している単一のページが、ブラウザーの残りの部分 (実際にはシステムの残りの部分) とは異なるサウンドカードを使用するように強制しようとしています。私の現在の理解では、ブラウザーはサウンドカード シンクに直接アクセスするのではなく、オーディオを再生するプラグインに委任します。これにより、理論的には、JavaScript が Flash や他のプラグインとは異なるサウンド シンクを使用できるようになります。実際に可能かどうかはわかりませんが...

これは配布を目的としたものではなく、コンソールなどを介して 1 台のコンピューターの出力を変更しようとしているだけであることに注意してください。

答え1

それは未来であり、今や可能です!関数deviceIdを使用して利用可能な出力を収集できます。次に、要素にmediaDevices.enumerateDevices希望を適用します。deviceIdAudiosetSinkId

const devices = await navigator.mediaDevices.enumerateDevices();
const outputs = devices.filter(({ kind }) => kind === 'audiooutput');
const output = outputs[1]; // Choose a device

const audio = new Audio();
audio.setSinkId(output.deviceId);
audio.play();

残っているのは、フィールドaudioを設定してサウンドを適用することだけです。srcsrcObject

関連するコードペン:https://codepen.io/smujmaiku/pen/oNjBmVj

注:audio.play()最初にユーザーによる操作が必要です。

また、旗を確認してくださいhttps://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId

答え2

不可能です。将来的には可能になるかもしれませんが、現時点では、Safari、Chrome、FireFox、Opera、その他のブラウザには、設定/環境設定で変更するオプションすらありません。また、ご存じのとおり、JavaScript はインターネット ブラウザで動作し、それら (インターネット ブラウザ) が実行できることを実行できます。

今、私は、パッケージ/コアフック/外部モジュールを記述して、JavaScript で何らかの方法で変更できるため、Node.js でこれを変更する可能性があると考えています。ただし、サウンドカードを変更した場合の影響は、Node.js + モジュールを使用するサーバー側クライアントにのみ適用されます。

これを変更したい場合(JavaScriptとインターネットブラウザを使用できない場合)、仮想オーディオケーブルを使用できます。http://en.wikipedia.org/wiki/Virtual_Audio_Cableこれは Windows 用のアプリケーションです。

同様の質問Firefoxでオーディオ出力デバイスを変更する

関連情報