2017-07-18 140 views
-1

我使用離子2與webrtc從前後相機獲取視頻流。WebRTC黑屏同時在Android設備上翻轉相機

請參閱下面我打字稿代碼:

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); 

我得到2個不同的(前後)攝像頭的設備ID(this.cameras),如果我使用他們的個人兩款相機都工作​​正常,但是當我翻轉他們使用上面的代碼(按鈕點擊從UI調用此函數)像上面他們不工作。它只是顯示黑屏。

+1

我有一對夫婦的想法,但還沒有這個測試自己。 1.您是否嘗試每次創建新的視頻元素? 2.您是否在設置src後嘗試調用videoElement.play()? 3.您是否嘗試過使用srcObject而不是src。這是新規格。所以: ( document.getElementById('localVideo'))。src = myStream; 而不是使用window.URL.createObjectURL這是老方法。 –

+0

請閱讀[在什麼情況下我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](/ meta.stackoverflow.com/q/326569) - 總結是,這不是這是解決志願者問題的理想方式,可能會對獲得答案產生反作用。請不要將這添加到您的問題。 – halfer

+0

我是黑客馬拉松的一員,所以我儘快需要答案,所以我使用緊急詞,因爲我需要在幾個小時內答覆,以便我可以在一天內完成代碼的其餘部分。我使用上面的代碼以及webrtc在Android設備上進行視頻聊天。我甚至提出了亞當給出的評論。所以,我真的很需要它。 – user1188867

回答

0

我能夠通過刪除下面的兩行解決這個問題:

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

並添加(<HTMLVideoElement>document.getElementById('localVideo')).play();