Android Chrome Переключение с передней на заднюю камеру с помощью JavaScript - PullRequest
0 голосов
/ 10 апреля 2020

Я не могу понять это должным образом, или даже если возможно переключить камеры.

Я пытался остановить видео дорожку перед повторным вызовом 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
    });

}

Что еще мне нужно сделать, чтобы переключить камеры на мобильный? Это вообще возможно?

1 Ответ

0 голосов
/ 13 апреля 2020

На мобильном, кажется, нам просто нужно дать камере достаточно времени, чтобы выключиться. Для моего тестирования достаточно обернуть getUserMedia в setTimeout с задержкой около 1 секунды (1000 мс), хотя я также собираюсь попытаться заменить камеру 3 раза подряд, прежде чем выдать ошибку. Я не уверен, как, или даже если это возможно, проверить, действительно ли устройство остановлено или выключено, но я подозреваю, что это невозможно из-за безопасности браузера.

В идеальном мире MediaStreamTrack.stop() вернется обещание, которое дает нам информацию о том, действительно ли устройство, связанное с треком, действительно остановлено / выключено или оно все еще работает из-за того, что оно используется в других треках.

...