2016-04-24 5 views
5

В настоящее время я работаю над использованием VoIP через WebRTC. Это будет приложение UWP, написанное на JavaScript.Работает ли RTCPeerConnection в Microsoft Edge?

Теперь я пытаюсь проверить, работает оно или нет, путем тестирования образцов с https://webrtc.github.io/samples на Microsoft Edge.

Оказалось, что он отлично работает За исключениемRTCPeerConnection.

Например, когда я открыл https://webrtc.github.io/samples/src/content/peerconnection/audio в Edge, он дал мне getUserMedia() error: NotFoundError, когда я нажал кнопку вызова. В Chrome он работает нормально.

Другой пример, когда я попытался https://apprtc.appspot.com, он дал мне

Messages: 
Error getting user media: null 
getUserMedia error: Failed to get access to local media. Error name was NotFoundError. Continuing without sending a stream. 
Create PeerConnection exception: InvalidAccessError 

Version:  
gitHash: c135495bc71e5da61344f098a8209a255f64985f 
branch:  master 
time:  Fri Apr 8 13:33:05 2016 +0200 

Итак, как я должен исправить это? Adapter.js также называется. Я также разрешаю все, что нужно.

Или я не должен использовать WebRTC для этого проекта. Если да, то что я должен использовать?

Cheers!

+0

Это похоже на проблему с вашей камерой/микрофоном. Проверьте выход навигатора. MediaDevices.enumerateDevices, например. используя [эту демонстрацию] (https://webrtc.github.io/samples/src/content/devices/input-output/) –

ответ

9

Microsoft Edge реализует ORTC, более низкоуровневый децентрализованный двоюродный брат WebRTC, который не имеет всеобъемлющего объекта RTCPeerConnection.

Но хорошей новостью является то, что adapter.js, официальная полифония WebRTC, планки RTCPeerConnection для вас на Edge, поэтому вы должны иметь возможность использовать WebRTC одинаково во всех браузерах.

Например, эта демонстрация работает для меня в Edge, Firefox и Chrome.

var pc1 = new RTCPeerConnection(), pc2 = new RTCPeerConnection(); 
 

 
navigator.mediaDevices.getUserMedia({ video: true, audio: true }) 
 
    .then(stream => pc1.addStream(video1.srcObject = stream)) 
 
    .catch(log); 
 

 
var add = (pc, can) => can && pc.addIceCandidate(can).catch(log); 
 
pc1.onicecandidate = e => add(pc2, e.candidate); 
 
pc2.onicecandidate = e => add(pc1, e.candidate); 
 

 
pc2.onaddstream = e => video2.srcObject = e.stream; 
 
pc1.oniceconnectionstatechange = e => log(pc1.iceConnectionState); 
 
pc1.onnegotiationneeded = e => 
 
    pc1.createOffer().then(d => pc1.setLocalDescription(d)) 
 
    .then(() => pc2.setRemoteDescription(pc1.localDescription)) 
 
    .then(() => pc2.createAnswer()).then(d => pc2.setLocalDescription(d)) 
 
    .then(() => pc1.setRemoteDescription(pc2.localDescription)) 
 
    .catch(log); 
 

 
var log = msg => div.innerHTML += "<br>" + msg;
<video id="video1" width="160" height="120" autoplay muted></video> 
 
<video id="video2" width="160" height="120" autoplay></video><br> 
 
<div id="div"></div> 
 
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>

Смежные вопросы