关于微软WebRTC的问答

作者:James Cadd(原文链接

翻译:刘通

 

         尽管微软已经不像十几年前那样是人们默认的系统及平台,但是它还是有着庞大且活跃的开发者及用户群体。超过4亿的设备运行Windows 10系统,以及有数百万的.NET和Visual Studio用户。事实上,我自己的第一个WebRTC应用就是在.NET上用XSockets完成的。

         除了一些第三方WebRTC库,Edge浏览器和Skype支持WebRTC/ORTC,微软也有一些不那么著名或者未公开的WebRTC项目在进行。上周,他们公开了登录在UWP(Universal Windows Platform)上的WebRTC,这又是一个在世界上拥有庞大开发者群体的项目。

         对此,我向James Cadd,微软在Windows开发者平台方面的软件经理,问了一些关于这个项目的细节问题。

uwp1

 

Q:跟我们讲讲Windows的这个全新的WebRTC项目吧

A:过去五年间,WebRTC对应用软件的开发有强大的冲击,现在已经拥有10亿用户。在微软,我们需要WebRTC来让我们的开发者可以在我们的Windows 10平台上开发相关应用,包括桌面端,移动端,Xbox,HoloLens/VR以及IoT设备。我们希望能够给用户提供Google代码库完全兼容的产品,和他们使用同样的API,语言,以及框架。为了达到这个目的,我们启动了一个项目将WebRTC代码库转移到Universal Windows平台上,然后对其进行优化,使其在资源及功率受限的设备上能够更高效的运行。

         上个星期,我们以NuGet包的形式使WebRTC可用于UWP(Universal Windows平台)库,并且在GitHub上上传了一个开源项目。开发者可以在很多应用中使用这个库,包括Xbox上面的HTML/JS软件,HoloLens的C++ Unity项目,以及跨平台运行的C# Xamarin应用。UWP的WebRTC是一个WinRTCP库,意味着它不仅仅可以在所有的Windows 10平台上运行,也可以通过各种语言的项目和框架运行,包括C++,C#,JavaScript,React Native和TypeScript。

 

Q:它看起来是像标准的WebRTC 1.0,还是ORTC呢?

A:这个库是标准的WebRTC。有另外一个独立的,叫做ORTC Lib的库,可以给UWP提供ORTC API支持。

         让我们看一个用C#写的代码示例。这些API对于之前在其他平台上进行过WebRTC工作的开发者应该很熟悉。注意事件注册以及异步代码使用的是标准的C#机制。

uwp2

 

Q:WebRTC UWP项目与Edge浏览器中的功能关联性如何?它支持哪些codec呢?

A:Edge浏览器支持ORTC,而且正如本篇所写的它在内部预览版本中也支持WebRTC 1.0。区别是Edge浏览器只在桌面版中支持WebRTC和ORTC,但是UWP库可以再所有的Windows 10平台上运行。另外,WebRTC UWP库(以及ORTC Lib)现在已经在全平台支持DataChannel和SCTP,尽管DataChannel目前还在考虑范围中,还没有正式登陆Edge浏览器。UWP库支持H.264(有硬件加速功能),VP8VP9Opus,G.711以及G.722 codec以及舒适噪声和DTMF模块。

 

Q:喔,看起来有很多不同的Edge实现。这都是从同一个源衍生出的吗?

A:不,不是的。从两年前刚刚开启这个项目的时候,WebRTC还不能在Edge浏览器上使用(在内部预览版中也不行),所以整个项目是单独研发的。与之一起进行的还有将其开源的工作,而这并不是Edge浏览器想要完成的。

uwp3

 

Q:有意思,那么这些实现与Google管理的官方Chromium WebRTC repo有什么区别呢?

A:Google的WebRTC源支持在iOS系统,安卓系统,以及Win32(电脑版)系统上进行本地开发。我们实际上是通过对Google的Win32代码库进行更改来开启我们的WebRTC UWP项目,将其改到能够适应UWP。我们去掉了其对DirectX的依赖,并且换做微软媒体基础(Microsoft Media Foundation)来改善整体表现以及电能消耗,并且使用WASAPI对音频通道进行改进。

 

Q:那么这个项目是开源的吗?

A:这个项目是开源的,而且可以通过点击这里来在GitHub上看到。它也可以在NuGet上查到。我们尽我们所能尝试把它做到像Google一样免费且公开。

 

Q:有哪些示例可用?

A:现在已经有一些示例可供大家使用,其中有一部分是Google示例的UWP接口。UWP版本在这里演示了PeerConnection,AppRTC以及DataChannel。另外,我们将全功能的Windows 10 VoIP示例搬移了过来,叫做Chatterbox。详情请参考这里的readme

 

Q:目标客户是谁呢?这是不是一个针对特定用户群的应用呢?

A:这个库是针对在Windows 10设备上进行UWP开发的开发者。其中包括了使用C++,C#,F#,JavaScript,TypeScript,Python或者任何其他WinRT兼容的语言。

 

Q:开发者可以免费的使用UWP WebRTC吗?

A:是的。WebRTC UWP库在NuGet上是可以免费下载的,也是GitHub上的开源项目。开发者也可以免费的使用包括Visual Studio Code以及Visual Studio Community在内的工具。

 

Q:使用WebRTC或者ORTC搭建一个电脑端UWP应用,相对于使用Chromium的Electron,有什么好处呢?

A:UWP应用可以在所有Windows 10设备上使用,包括Xbox和HoloLens,而使用Electron搭建的Win32应用只能在电脑端上使用。

uwp4

 

Q:相比于NuGet上其他WebRTC和ORTC包,这次发布的UWP WebRTC有什么不同呢?

A:这次发布的是接入WebRTC唯一的UWP端口,可以在NuGet上看到。微软一直在致力于给这个项目提供支持,使其一直与最新的Chrome资源保持一致。正如这里写的一样,最新的NuGet包是基于M54源的。微软还与Open Peer基金会协作开发ORTC UWP NuGet包,其借用我们的UWP相关经验,但是声明一点我们不拥有也不会支持这个代码库。

 

Q:你能说出来几个使用这个技术的应用软件吗?

A:Blackboard软件是最早支持这个项目的应用之一,并且与微软一同从事代码库的建设工作。他们Windows移动版的app使用的是此项目。还有,Caw.Me也在Windows版本中把Slack通话插件改成了使用此项目。

 

Q:那这个项目得到积极的支持吗?有人会对问题和请求回应吗?

A:是的,此项目正处于积极的开发状态下。我们会定期并入最新的Chromium源来保持浏览器的兼容性—就像之前说的,这个项目是基于WebRTC M54的。我们还会对问题进行回馈,在GitHub上做公关工作,并且欢迎任何人加入我们的Slack频道来与开发团队进行直接的交流。

 

Q:之后会有持续的更新吗?如果有,可以分享一下你们规划的路线吗?

A:是的,对此项目的开发会持续下去。在未来的几个月,我们会从Chromium源中提取出新的东西(版本号待定)。

 

Q:除了在电脑版Win 10以外,还有哪些平台测试过此项目呢?IoT核?Xbox?HoloLens?

A:此项目已经在电脑版Windows 10中,移动版Windows,Xbox,HoloLens,以及IoT(DataChannel)中进行过测试,而且我们支持所有平台。

 

Q:除了关键的Visual Studio工具以外,还有哪些工具,函数库,或者插件可以用在全新的WebRTC UWP堆栈中呢?

A:WebRTC UWP库以及ORTC Lib库是标准的NuGet包,而且它们可以在任何你调用它们的地方正常工作。它们可以与开发者之前使用的任何框架一起工作,比如Xamarin,React Native,和Electron。

uwp5

 

采访者:chad hart

被采访者:james cadd

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营