2015-09-07 33 views
4

我在試圖實時更換相機時出現問題,它適用於本地視頻,但遠程用戶無法看到新相機,仍然可以看到舊相機。我試圖停止流並重新啓動,但仍然無法正常工作。這只是我的一些代碼。 我到處搜索,找不到解決方案。有人可以幫我嗎?WebRTC - 實時更換設備/相機

function init() { 
     getUserMedia(constraints, connect, fail); 
} 

$(".webcam-devices").on('change', function() { 
    var deviceID = this.value; 
    constraints.video = { 
     optional: [{ 
      sourceId: deviceID 
     }] 
    }; 
    stream.getTracks().forEach(function (track) { track.stop(); }); 
    init(); 
}); 
+0

抱歉,我從代碼中可以看到的東西並不多,您能否提供相關代碼,以瞭解您要在哪裏更改遠程對等流? – mido

回答

3

您需要實際更改您在PeerConnection中發送的曲目。在Firefox中,您可以使用RTPSender.replaceTrack(new_track);進行更改,而無需重新協商(現在已添加到規範中)。否則,您需要將新的流/曲目添加到RTCPeerConnection,並刪除舊的,然後再處理onnegotiationneeded事件和renegotatiate

見@臂架的小提琴之一:Jib's replaceTrack() fiddle

function flip() { 
    flipped = 1 - flipped; 
    return pc1.getSenders()[0].replaceTrack(streams[flipped].getVideoTracks()[0]) 
    .then(() => log("Flip! (notice change in dimensions & framerate!)")) 
    .catch(failed); 
}