web-dev-qa-db-ja.com

webrtcでマイクをミュート/ミュート解除する方法

ここから、webrtcでローカルストリームのマイクをミュート/ミュート解除する方法を読みました: WebRTCのヒントとコツ

ローカルストリームを開始すると、マイクはデフォルトで有効になっているため、audioTracks [0] .enabled = falseに設定すると、ローカルストリームのマイクがミュートされますが、trueに戻すと、ミュートを解除できます。ローカルストリームのコードのミュート/ミュート解除は次のとおりです。

 getLocalStream(function (stream,enable) {
        if (stream) {
            for (var i = 0; i < stream.getTracks().length; i++) {
                var track = stream.getAudioTracks()[0];
                if (track)
                    track.enabled = enable;
                //track.stop();
            }
        }
    });

ローカルストリームでマイクのミュートを解除する方法を誰かに提案してもらえますか?.

8
user526206

あなたのメソッドgetLocalStreamが実際にnavigator.getUserMediaを呼び出していると思います。この場合、これを行うと、元のストリームではなく、別のストリームが取得されます。元のストリームを使用して行う必要があります

mediaStream.getAudioTracks()[0].enabled = true; // or false to mute it.

または、チェックすることもできます https://stackoverflow.com/a/35363284/1210071

12
Adrian Ber

enabledmutedの2つのプロパティがあります。 enabledは設定用で、mutedはリモート側(他の人)では読み取り専用です(試しましたが、mutedの設定は機能しません。基本的に、値は機能しません。変更される)

stream.getAudioTracks()[0].enabled = true; //リモートのものはmuted変更を取得します

3
Xin

ああ、これを行うための良い方法があります:

mediaStream.getVideoTracks()[0].enabled = !(mediaStream.getVideoTracks()[0].enabled);
2
user526206

「有効」の値を読んで設定する必要があります。 「有効」の値は「ミュート」用です。 「ミュート」値は、ストリームを現在再生できないかどうかに関係する読み取り専用の値です。

MediaStreamTrackインターフェイスのenabledプロパティはブール値であり、トラックがソースストリームのレンダリングを許可されている場合はtrue、許可されていない場合はfalseです。これは、トラックを意図的にミュートするために使用できます。有効にすると、トラックのデータがソースから宛先に出力されます。それ以外の場合は、空のフレームが出力されます。

オーディオの場合、無効にされたトラックは無音のフレーム(つまり、すべてのサンプルの値が0であるフレーム)を生成します。ビデオトラックの場合、すべてのフレームは完全に黒いピクセルで埋められます。

Enabledの値は、本質的に、一般的なユーザーがトラックのミューティング状態と見なすものを表しますが、mutedプロパティは、フレームが失われたシナリオなど、トラックが一時的にデータを出力できない状態を示します。輸送中。

1
RumOldField