Page 302 - Web性能权威指南
P. 302

var ice = {"iceServers": [
                                   {"url": "stun:stunserver.com:12345"},
                                   {"url": "turn:user@turnserver.com", "credential": "pass"}
                               ]};

                     var signalingChannel = new SignalingChannel(); ➌
                     var pc = new RTCPeerConnection(ice); ➍

                     navigator.getUserMedia({ "audio": true, "video": true }, gotStream, logError); ➎

                     function gotStream(evt) {
                       pc.addstream(evt.stream); ➏

                       var local_video = document.getElementById('local_video');
                       local_video.src = window.URL.createObjectURL(evt.stream); ➐

                       pc.createOffer(function(offer) { ➑
                         pc.setLocalDescription(offer);
                         signalingChannel.send(offer.sdp);
                       });
                     }
                     pc.onicecandidate = function(evt) { ➒
                       if (evt.candidate) {
                         signalingChannel.send(evt.candidate);
                       }
                     }

                     signalingChannel.onmessage = function(msg) { ➓
                       if (msg.candidate) {
                         pc.addIceCandidate(msg.candidate);
                       }
                     }

                     pc.onaddstream = function (evt) {
                       var remote_video = document.getElementById('remote_video');
                       remote_video.src = window.URL.createObjectURL(evt.stream);
                     }

                     function logError() { ... }
                   </script>

               ➊ 输出本地流的视频元素
               ➋ 输出远程流的视频元素
               ➌ 初始共享的发信通道
               ➍ 初始端连接对象
               ➎ 取得本地音频和视频流
               ➏ 通过端连接注册本地 MediaStream
               ➐ 把本地视频流输出到视频元素(本地视图)



               292   |   第 18 章
   297   298   299   300   301   302   303   304   305   306   307