Sto provando a chiudere la webcam con la funzione javascript (deve essere chiusa dopo aver ricevuto una risposta Ajax), ma sembra impossibile chiudere senza aggiornare la pagina. Tutti i metodi per chiuderlo come video.src = null, video.pause ... ecc non funzionano affatto su nessun browser. Il modo unico è quello di chiudere il flusso passato come parametro sulle funzioni di successo, quindi c'è un modo per utilizzare questo oggetto al di fuori della funzione successo per chiudere la webcam?interrompe lo streaming della webcam di getUserMedia senza aggiornare la pagina
So che questa domanda è stato chiesto prima (Stop/Close webcam using getUserMedia and RTCPeerConnection Chrome 25), ma le mie esigenze sono diverse, così mi avrebbe bisogno di aiuto per risolvere questo problema
grazie!
EDIT: Il mio codice di lavoro cercando di chiudere la webcam:
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 è davvero complicato per pubblicare qui il codice XD
Mmmm ok, ho provato a inserire qualcosa di simile nel mio codice ma non so come, perché il tuo codice è completamente diverso. Ho visto anche il tuo vecchio problema ma è ancora più difficile da capire per me. Perché stai salvando l'oggetto stream nell'oggetto "self" se poi usi "this" per fermare lo stream? Inserirò il mio codice qui, quindi potrebbe essere che tu possa dirmi come implementare la tua soluzione: – user2158954
Ammetto che usare "io" potrebbe confondere senza l'intero contesto. Ho adattato la mia risposta un po '. Basta mantenere il riferimento in una variabile globale o con scope localStream. – asgoth
incredibile! Ho appena provato su Chrome e Firefox e funziona perfettamente !! Ora che ricordo, ho provato anche qualcosa di identico una volta, ma non ha funzionato. Ora sarebbe perfetto se potessi inviare l'acquisizione dell'immagine su tela come richiesta senza usare la noiosa ajax, ma questo è un altro argomento jej. Grazie mille! La cosa unica è: posso usarlo con HTTPS? – user2158954