Я пытаюсь закрыть веб-камеру с помощью функции javascript (она должна быть закрыта после получения некоторого ответа Ajax), но это невозможно закрыть, не обновляя страницу. Все методы для его закрытия как video.src = null, video.pause ... и т. Д. Вообще не работают в любом браузере. Единственный способ - закрыть поток, переданный как параметр, в функции успеха, так что есть какой-либо способ использовать этот объект вне функции, чтобы закрыть веб-камеру?остановить потоковое воспроизведение веб-камеры getUserMedia без обновления страницы
Я знаю, что этот вопрос был задан до (Stop/Close webcam using getUserMedia and RTCPeerConnection Chrome 25), но мои потребности различны, поэтому я должен был бы некоторую помощь, чтобы решить эту проблему
спасибо!
EDIT: Мой рабочий код пытается закрыть веб-камера:
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia;
if(navigator.getUserMedia){
var video_constraints = {
mandatory: {
maxHeight: 480,
maxWidth: 640
},
optional: []
};
var self = this;
self.navigator.getUserMedia({
audio: false,
video: video_constraints
}, self.onSuccess, onError);
}
else{
alert('An error has occurred starting the webcam stream, please revise the instructions to fix the problem');
}
function onSuccess(stream) {
var video = document.getElementById('webcam');
if(navigator.webkitGetUserMedia || navigator.mozGetUserMedia){
video.src = window.URL.createObjectURL(stream);
}
else if(navigator.msGetUserMedia){
//future implementation over internet explorer
}
else{
video.src = stream;
}
self.localStream = stream;
video.play();
}
function onError() {
alert('There has been a problem retrieving the streams - did you allow access?');
}
function closeWebcamConnection(){
this.localStream.stop();
}
uff..it действительно сложно размещать сюда код XD
Mmmm ok, я попытался поместить что-то подобное в свой код, но я не знаю, потому что ваш код совершенно другой. Я также видел твою старую проблему, но мне все еще сложно понять. Почему вы сохраняете объект потока в объекте «self», если вы используете «this» для остановки потока? Я буду размещать здесь свой код, таким образом, возможно, вы можете сказать мне, как реализовать свое решение: – user2158954
Я допускаю использование «я», возможно, путаясь без всего контекста. Я немного адаптировал свой ответ. Просто сохраните ссылку в глобальной или ограниченной переменной localStream. – asgoth
невероятный! Я только что протестировал в Chrome и Firefox и ... отлично работает !! Теперь, когда я помню, я тоже пытался что-то подобное, но это не сработало. Теперь было бы идеально, если бы я мог отправить захват изображения холста в качестве запроса без использования утомительного ajax, но это еще одна тема jej. Большое спасибо! Единственное, что можно сделать, можно использовать с HTTPS? – user2158954