在this document中,它使用URL.createObjectURL
來設置視頻源。 (這是接聽電話的代碼)。爲什麼通過URL.createObjectURL生成WebRTC遠程視頻源
var offer = getOfferFromFriend();
navigator.getUserMedia({video: true}, function(stream) {
pc.onaddstream = e => video.src = URL.createObjectURL(e.stream);
pc.addStream(stream);
pc.setRemoteDescription(new RTCSessionDescription(offer), function() {
pc.createAnswer(function(answer) {
pc.setLocalDescription(answer, function() {
// send the answer to a server to be forwarded back to the caller (you)
}, error);
}, error);
}, error);
});
我期望video.src是檢索遠程視頻的地址。所以它應該是固定的,並由連接的另一方(發起呼叫的人)給出。但是URL.createObjectURL
的值是在回答者側生成的,並且它的事件取決於函數何時被調用。它如何被用來獲取遠程視頻流?
編輯: URL.createObjectURL
的結果看起來像blob:http://some.site.com/xxxx-the-token-xxxx。有了這個字符串,視頻組件如何知道在哪裏加載遠程流?是否有存儲在某處的{url:stream}的散列圖?如果是這樣,視頻組件如何訪問hashmap?
流對象不會存儲令牌字符串,您可以通過stream.toURL
獲取該令牌字符串。但它與URL.createObjectURL
的結果不同。 URL.createObjectURL
的值取決於時間。如果你連續調用它兩次,你會得到不同的值。
謝謝你jib!這幫助我縮小了導致我的問題的原因。但我仍然無法弄清楚我原來的問題。你可以看看我的問題[這裏](http://stackoverflow.com/q/41917545/3838949)?我的iceConnectionState從「檢查」跳轉到「關閉」。我不確定是什麼導致了這個問題。 –