В this document он использует URL.createObjectURL
для установки источника видео. (Это код для ответа на вызов).Почему удаленный источник видеоролика WebRTC сгенерирован URL.createObjectURL
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. С помощью этой строки, как компонент видео знает, где загрузить удаленный поток? Есть ли hashmap {url: stream} где-то? Если да, то как видеокомпонент получает доступ к хэш-карте?
Объект потока хранит строку токена, которую вы можете получить с помощью stream.toURL
. Но он отличается от результата URL.createObjectURL
. Значение URL.createObjectURL
зависит от времени. Если вы вызываете его дважды подряд, вы получаете разные значения.
Спасибо, стрела! Это помогло мне сузить причины моей проблемы. Но я до сих пор не могу понять свою оригинальную проблему. Не могли бы вы взглянуть на мой вопрос [здесь] (http://stackoverflow.com/q/41917545/3838949)? Мой iceConnectionState перескакивает с 'check' на' closed'. Я не уверен, что вызывает проблему. –