0

私はこれを正しく理解できません。または、カメラを切り替えることさえ可能かどうか.

getUserMedia をもう一度呼び出す前にビデオ トラックを停止しようとしましたが、ビデオ トラックを停止すると前面カメラがオフになり、背面カメラがオンになることを期待しましたが、うまくいきません。


var oldStream; // the old stream from getUserMedia

Function SwitchCamera() {

    oldStream.getVideoTracks()[0].stop();

    navigator.mediaDevices.getUserMedia({audio: true, video: {deviceId: 'rear camera device ID'}).then(function(newStream){

        // this never runs

    }).catch(function(err){
        console.log(err); // Cannot connect camera
    });

}

モバイルでカメラを切り替えるために他に何かする必要がありますか? これは可能ですか?

4

1 に答える 1

0

モバイルでは、カメラをシャットダウンするのに十分な時間を与えるだけでよいようです。私のテストでは、約 1 秒 (1,000 ミリ秒) の遅延でラップgetUserMediaするだけで十分ですが、エラーをスローする前にカメラを 3 回連続して交換しようとしています。setTimeout実際のデバイスが停止またはオフになっているかどうかを確認する方法、または可能かどうかはわかりませんが、ブラウザーのセキュリティのために不可能であると思われます。

完璧な世界MediaStreamTrack.stop()では、トラックに関連付けられたデバイスが実際に停止/オフになっているかどうか、または他のトラックで使用されているためにまだ実行されているかどうかに関する情報を提供する promise を返します。

于 2020-04-13T15:59:30.840 に答える