WebRTC 1.0标准虽然已经定稿,但各个浏览器的实现都还不成熟,处于快速迭代中,网易云信CTO赵加雨针对实时通信技术演进、WebRTC国内外发展与趋势、以及开发难点和不足做了详细分析。本文是『WebRTC-互联网音视频新标准?』系列的第四篇,如果您对WebRTC技术的未来有分析和洞见,欢迎联系 contribute@livevideostack.com。
策划 / LiveVideoStack
关于分享嘉宾:赵加雨,网易云信CTO,曾深度参与 Cisco Jabber、Webex Meeting、网易视频云等多项分布式实时通信类产品的架构与研发,具备多年海外工作经验及大型研发团队管理经验,擅长构建高并发的实时通讯类的互联网产品。
LiveVideoStack:您参与开发了WebEx Meeting,Cisco Spark到现在的WebRTC,开发音视频应用的难度与流程有了哪些变化?挑战在哪里?
Rain: WebEx是十几年前的产品,那个时候的带宽还很低,做音视频的人才也很少,研发的难度还是很大的,为了实现低带宽场景下的桌面共享和音视频通话,WebEx也是做了很多黑科技的。发展到今天带宽已经不是问题,但是人们对于音视频的期望和要求也变高了,加上各种弱网和跨网的问题,音视频研发的难度仍然很高,而WebRTC的开源在一定程度上降低了音视频研发的门槛,实现一个简单的音视频应用变得相对容易了,但是要想实现一个高质量的音视频应用,难度仍然很大。
LiveVideoStack:从小团队到大团队,直到担任CTO,每个阶段面临的最大挑战是什么?如何找到不断前行的动力?
Rain:从普通工程师一路走来,个人能力在不断提高,相应的承担的胆子也越来越大,从自己做到带团队做,到现在作为CTO,每个阶段有每个阶段的挑战。作为CTO,需要对整个团队的技术架构和技术方向负责,对技术团队的成长和团队建设负责,也要有一定的业务意识,和其他团队一起对业务负责。个人能保持不断成长,我的心得是要保持好奇心,对于新技术要保持不断学习,另外要不断走出舒适区,每一次走出舒适区都是成长最大的时候。第三是尽量和牛人一起工作,在类似网易这样的公司,和顶级的团队和顶级的人才一起工作成长会非常大。
LiveVideoStack:对于有兴趣(或转行)学习音视频开发的初学者,您有什么建议?有没有推荐学习的图书资料?从哪些技术栈开始入手?
Rain:音视频技术栈比较长,有侧重算法的,也有侧重工程的,有编解码相关的,也有网络和传输相关的,有服务端开发,有算法层开发,也有各种端适配,有基于UDP的实时音技术,也有基于TCP的直播技术,一个人很难覆盖所有的技术点。个人建议是结合自己的技术背景和兴趣,选择某一个点开始,然后逐渐深入。当选择一个方向后,可以看相关的资料,音视频的技术书籍比较少,但是有大量的RFC文档,因此需要一定的英文阅读能力。当然,最好的入门方式是加入类似网易云信这样的专业音视频团队,跟着项目和同事学习,同时大量阅读RFC文档。
关于WebRTC
LiveVideoStack:去年苹果宣布在iOS 11中支持WebRTC,至此完成了主流PC浏览器和移动端的全覆盖,您认为它会成为今年的技术热点和趋势吗?
Rain:我相信会的,WebRTC从发布至今一直是技术的热点,Safari 11开始支持WebRTC后,这表示所有主流OS上的default browser都支持WebRTC了,这会进一步推动WebRTC的应用。WebRTC是P2P的,没有考虑服务端,也没有考虑与其他系统的集成,有些公司会基于WebRTC技术来构建音视频应用,另外由于WebRTC的普及,各音视频应用也会考虑支持WebRTC,将浏览器作为音视频应用的入口。
LiveVideoStack:WebRTC在国外的发展是如何一步一步走到现在的?您对国内目前的应用现状如何看?
Rain:自从Google在2011年开源WebRTC后,这一技术就一直备受关注,但是由于音视频技术的复杂性和规范制定的滞后性,前几年的WebRTC技术一直处于试用阶段,并不稳定,最早支持WebRTC技术的Chrome浏览器和Firefox浏览器,Chrome在功能上相对稳定一点,但在遵循规范上做的不够好,Firefox在遵循规范上做的更好,但是功能上不够成熟。过去几年的WebRTC技术实现和规范制定都在快速迭代中,因此并没有成熟的商业化产品出现,直到最近2年,出现了越来越多的WebRTC应用,也有更多音视频应用支持WebRTC,相信WebRTC在教育、远程医疗等场景下会有较为广泛的应用。
LiveVideoStack:国外使用WebRTC的项目或者创业公司的情况如何?有什么是我们可以去借鉴和学习的地方。
Rain:随着支持WebRTC的浏览器越来越多,国外出现了不少创业公司,完全基于WebRTC技术来实现音视频通话,没有SFU/MCU,可以实现双人通话,也可以通过mesh的方式实现3-4人的多方通话,由于没有流媒体服务端,也没有流量成本,因此可以以比较低的价格来提供相对简单的音视频服务,另外也有一些创业公司并不是构建音视频应用,而是利用WebRTC技术并结合来其他一些技术来构建有意思的应用,譬如结合Web Audio API, File API, MSE,Canvas/WebGL等技术,还有一些公司利用DataChannel来实现完全基于web的P2P分发网络,WebRTC和其他的一些HTML5技术一起赋予了browser更多的能力,这里可以挖掘出不少玩法。
LiveVideoStack:去年的W3C技术大会提出通过QUIC来实现WebRTC,对此您如何看待?
Rain:QUIC是Google提出的传输层协议,是一种可靠UDP协议,用于解决TCP协议的队首阻塞、建立连接慢、带宽利用不足、时延大等问题,随着QUIC协议的成熟,应该会被利用到更多地方,包括WebRTC的DataChannel。
LiveVideoStack:WebRTC对主流视频编解码的支持还并不是很好,尤其是对于H.265的支持,您如何看待这个问题?他未来会去做支持吗?包括AV1等等。
Rain:WebRTC目前支持VP8/VP9/H264,支持H265并没有太多技术上的问题,目前主要的问题还是license,而这个问题短期内还看不到解决的可能,因此H265在WebRTC里的支持还不太乐观。AV1是AOM联盟推出的视频编码标准,AOM联盟的目标是在视频领域复制OPUS在音频编码领域的成功,实现一个能适应多种场景(高时延和低时延,软编和硬编,视频与录屏等等)的视频编码器,AOM获得了非常多公司的支持,AV1编码器的进展也比较快,随着AV1的成熟,WebRTC应该会比较快的支持AV1。
LiveVideoStack:在应用WebRTC开发过程中,您认为或者遇到的难点有哪些以及解决方案式怎样的?
Rain:WebRTC标准刚刚定稿,各个浏览器的实现都还不成熟,也处于快速迭代中,因此基于WebRTC的研发一方面要兼容各个浏览器的区别,也需要快速跟上浏览器的迭代速度,另外WebRTC并没有定义信令怎么做,也没有服务端的方案,也没有录制、转码等,要实现一个完整的音视频应用还需要做非常多的工作。如果是基于libwebrtc来构建音视频应用,需要非常资深的团队花比较多的时间才能吃透libwebrtc的代码,而这些代码也在快速迭代中,你可能也需要将这些基于P2P场景的策略算法修改成适合多人会话场景。
LiveVideoStack:您认为哪些行业会成为WebRTC的突破点和最佳实践应用?
Rain:WebRTC实现了在web端的低时延音视频通话的能力,因此需要web端低时延音视频的场景都可以利用webrtc技术来实现,譬如在线教育和远程医疗。不过这里也要提醒一下,WebRTC并不是解决音视频应用所有问题的银弹,它仅仅解决了音视频应用的一部分问题,提供了一个音频处理框架、网络拥塞控制框架,P2P打洞与网络连接框架,音视频引擎等,所有的策略算法都是为了P2P场景下的语音通话来实现的,你的产品可能并不是这样的场景,那么就不能使用WebRTC,或者要做深度修改。譬如网易云信,作为PaaS平台需要满足各种场景下的音视频应用,有一类应用就是音乐教学,既有音乐又有通话,音乐的声音是全频段的,因为有通话,回音消除也是需要的,为了保证音乐教学场景下的声音效果,从语音采集到语音3A前处理,再到网络拥塞控制策略等等,都需要针对音乐教学这样的场景来做特别的策略算法。
WebRTCon 2018 8折报名
WebRTCon希望与行业专家一同分享、探讨当下技术热点、行业最佳应用实践。如果你拥有音视频领域独当一面的能力,欢迎申请成为讲师,分享你的实践和洞察,请联系 speaker@livevideostack.com。更多详情扫描下图二维码或点击阅读原文。