2017-07-18 5 views
-1

Ich verwende ionic 2 mit webrtc, um einen Videostream von der vorderen und hinteren Kamera zu erhalten.WebRTC Schwarzer Bildschirm beim Spiegeln der Kamera auf Android-Gerät

Bitte beachten Sie meine Typoskript Code unten:

if (this.isFrontCam) { 
    constraints = { 
    mandatory: {}, 
    optional: [{sourceId: this.cameras[0]}] 
    }; 
} else { 
    constraints = { 
    mandatory: {}, 
    optional: [{sourceId: this.cameras[1]}] 
    }; 
} 


if (this.currentVideoStream && this.currentVideoStream !=null) { 
     this.currentVideoStream.getTracks().forEach(function (track) { 
     track.stop(); 
     }); 
     this.currentVideoStream.release(); 
     this.currentVideoStream = null; 
    } 



var n = <any>navigator; 
    n.getUserMedia = n.getUserMedia || n.webkitGetUserMedia || n.mozGetUserMedia || n.msGetUserMedia; 

    //getting local video stream 
    n.getUserMedia({ 
     audio: true, 
     video: constraints 
    }, function (myStream) { 
     alert("Current Video stream " + self.currentVideoStream); 
     self.currentVideoStream = myStream; 
     alert("New Stream"+ myStream); 
     //displaying local video stream on the page 
     (<HTMLVideoElement>document.getElementById('localVideo')).src = window.URL.createObjectURL(myStream); 

ich 2 verschiedene (vorne und hinten) bekommen Kameras Geräte-IDs (this.cameras), und wenn ich sie einzeln beide Kameras arbeiten wie erwartet, aber wenn ich Flip Sie verwenden den oben genannten Code (Tastenklick von der Benutzeroberfläche ruft diese Funktion auf) wie oben, sie funktionieren nicht. Es zeigt einfach schwarzen Bildschirm.

+1

ich ein paar Gedanken haben, aber haben diese selbst nicht getestet. 1. Haben Sie jedes Mal versucht, ein neues Videoelement zu erstellen? 2. Haben Sie versucht, videoElement.play() aufzurufen, nachdem Sie den Quellcode festgelegt haben? 3. Haben Sie versucht, srcObject anstelle von src zu verwenden. Dies ist die neue Spezifikation. Also: ( document.getElementById ('localVideo')). Src = myStream; Anstatt window.URL.createObjectURL zu verwenden, ist der alte Weg. –

+0

Bitte lesen [Unter welchen Umständen kann ich "dringende" oder andere ähnliche Sätze zu meiner Frage hinzufügen, um schnellere Antworten zu erhalten?] (// meta.stackoverflow.com/q/326569) - Die Zusammenfassung ist, dass dies nicht der Fall ist ein idealer Weg, um Freiwillige anzusprechen, und ist wahrscheinlich kontraproduktiv, um Antworten zu erhalten. Bitte unterlassen Sie das Hinzufügen zu Ihren Fragen. – halfer

+0

Ich war ein Teil von Hackathon, also brauche ich die Antwort so schnell wie möglich, also benutzte ich das Wort dringend, weil ich die Antwort innerhalb der Stunden brauche, damit ich restlichen Teil des Codes an einem Tag vervollständigen kann. Ich benutze den obigen Code zusammen mit webrtc für Video-Chat auf Android-Gerät. Ich habe sogar den von adam gegebenen Kommentar aufgefrischt. Also, ich brauchte es wirklich dringend. – user1188867

Antwort

0

Ich konnte dies lösen, indem Sie die folgenden 2 Zeilen entfernen:

this.currentVideoStream.release(); 
this.currentVideoStream = null; 

und das Hinzufügen von (<HTMLVideoElement>document.getElementById('localVideo')).play();

Verwandte Themen