您好,Safari 11上的WebRTC

WebRTC终于来到Safari

今天早上,我醒了,我们所知道的网络已经发生了巨大的变化。 WebRTC的梦想是实现开放Web的无处不在的p2p实时通信。 作为今年Apple出色的WWDC盛宴的一部分,他们在Safari 11中提供了对WebRTC的支持。 是。 现在毫无疑问,在未来的几天,几周和几个月里,将会有很多关于该主题的优秀文章,但是我只想分享我编写的演示应用程序。 眼见为实。

如果您已升级到iOS 11开发人员beta或macOS开发人员beta,则只需转到此处并允许像其他任何WebRTC演示一样访问您的相机即可。 这在移动设备上尤其令人惊奇。 如果您通过移动设备访问,请单击视频以从面向用户的摄像头切换到面向环境的摄像头。

如果您以前使用过WebRTC,则不会有很多重大更改,但是我个人之前没有处理过摄像机的选择,因此,这是我为该演示编写的代码的细分。

首先创建一个 dom元素,并为其提供以下属性。

  var video = document.createElement('video'); 
video.style.width = document.width +'px';
video.style.height = document.height +'px';
video.setAttribute('autoplay','');
video.setAttribute('muted','');
video.setAttribute('playsinline','');

下一步,设置您的WebRTC约束,包括视频将面对的方式。 在这种情况下,我希望它面向用户。

  var FaceingMode =“用户”; 
  var约束= { 
音频:错误,
视频: {
faceingMode:faceingMode
}
}

然后通过传递约束并侦听成功回调来启动getUserMedia 。 如果一切顺利,请将该流作为视频dom元素上的src传递。

  navigator.mediaDevices.getUserMedia(constraints).then(function success(stream){ 
video.srcObject =流;
});

最后,将视频dom元素附加到您的身体上。

  document.body.appendChild(video); 

只是为了好玩……这是一段代码片段,可通过单击视频在手机上从正面和背面的摄像头翻转。

  video.addEventListener('click',function(){ 
如果(faceingMode ==“ user”){
facingMode =“环境”;
}其他{
facingMode =“用户”;
}

约束= {
音频:错误,
视频: {
faceingMode:faceingMode
}
}

navigator.mediaDevices.getUserMedia(constraints).then(function success(stream){
video.srcObject =流;
});
});

我想对大多数Web开发人员说我的话,我要感谢 Apple团队将此开放标准作为优先事项。 现在该轮到我们用有趣的作品打动他们了。 祝大家好运!