2016-04-24 20 views
5

Tôi hiện đang làm việc trên VoIP bằng WebRTC. Nó sẽ là một ứng dụng UWP được viết bằng JavaScript.RTCPeerConnection có hoạt động trong Microsoft Edge không?

Bây giờ, tôi đang cố gắng kiểm tra xem nó hoạt động hay không bằng cách kiểm tra các mẫu từ https://webrtc.github.io/samples trên Microsoft Edge.

Nó chỉ ra rằng nó hoạt động tốt ngoại trừRTCPeerConnection.

Ví dụ: khi tôi mở https://webrtc.github.io/samples/src/content/peerconnection/audio trong Edge, nó đã cho tôi getUserMedia() error: NotFoundError khi tôi nhấp vào nút gọi. Trên Chrome, nó hoạt động tốt.

Một ví dụ khác là khi tôi cố gắng https://apprtc.appspot.com, nó đã cho tôi

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 

Vì vậy, làm thế nào tôi nên khắc phục điều đó? Adapter.js cũng được gọi. Tôi cũng cho phép mọi thứ cần thiết.

Hoặc tôi không nên sử dụng WebRTC cho dự án này. Nếu vậy, tôi nên sử dụng cái gì?

Chúc mừng!

+0

trông giống như sự cố với cam/micrô của bạn. Kiểm tra kết quả của navigator.mediaDevices.enumerateDevices ví dụ: sử dụng [demo này] (https://webrtc.github.io/samples/src/content/devices/input-output/) –

Trả lời

9

Microsoft Edge triển khai ORTC, một người anh em họ phân cấp thấp hơn của WebRTC không có đối tượng bao quát toàn bộ đối tượng RTCPeerConnection.

Nhưng tin tốt là adapter.js, chồng chéo WebRTC chính thức, shims RTCPeerConnection cho bạn trên Edge, vì vậy bạn sẽ có thể sử dụng WebRTC theo cùng một cách trên tất cả các trình duyệt.

Ví dụ: bản trình diễn này hoạt động với tôi ở Edge, Firefox và 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>

Các vấn đề liên quan