WebRTC1.0标准虽然已经定稿,但各个浏览器的实现都还不成熟,处于快速迭代中,网易云信CTO赵加雨针在接受LiveVideoStack采访时,针对实时通信技术演进、WebRTC国内外发展与趋势、以及开发难点和不足做了详细分析。

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前处理,再到网络拥塞控制策略等等,都需要针对音乐教学这样的场景来做特别的策略算法。

网易云信国际短信上线啦!

WebRTC:并非解决音视频应用所有问题的银弹相关推荐

  1. 基于webrtc多人音视频的研究(一)

    所周知,WebRTC非常适合点对点(即一对一)的音视频会话.然而,当我们的客户要求超越一对一,即一对多.多对一设置多对多的解决方案或者服务,那么问题就来了:"我们应该采用什么样的架构?&qu ...

  2. 【转】WebRTC多人音视频解决方案

    文章目录 1. 引言 2. 解决方案 2.1 Mesh解决方案 2.2 Mixer解决方案 2.3 Router解决方案 2.4 三个解决方案的流量对比 3. 应该使用哪种架构? 4. 参考资料 1. ...

  3. WebRTC 中收集音视频编解码能力

    在 WebRTC 中,交互的两端在建立连接过程中,需要通过 ICE 协议,交换各自的音视频编解码能力,如编解码器和编解码器的一些参数配置,并协商出一组配置和参数,用于后续的音视频传输过程. 对于音频, ...

  4. webrtc简单案例——音视频采集和播放

    webrtc简单案例--音视频采集和播放 目录 打开摄像头并将画面显示到页面 打开麦克风并在页面播放捕获的声音 同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 1. 打开摄像头并将画面显示到 ...

  5. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

    用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...

  6. iOS WebRTC多人音视频建立的流程

    前言 本文主要以"代码是最好的注释"为基点,介绍在处理iOS端多人音视频的建立流程. 在看本篇前建议先了解一下多人音视频通讯现在的常用架构,参考<WebRTC多人音视频聊天架 ...

  7. 基于WebRTC实现1v1音视频聊天室

    一. 前言 WebRTC(Web Real-Time Communication)旨在将实时通信功能引入到浏览器,用户无需安装其他任何软件或插件即可在浏览器间进行实时通信功能.本文介绍基于 WebRT ...

  8. 一对一语音直播系统源码——如何解决音视频直播技术难点

    直播作为对实时性和互动性要求较高的音视频应用场景,存在着诸多技术难点,即使是一对一的直播模式也不例外.低延迟.流畅性.回波消除.国内外互操作性.大规模并发等问题都是开发过程中的难点.但是,在开发过程中 ...

  9. rtc/webrtc 2017实时音视频大会分享

    Share of RTC2017 Walker.Xu RTC2017 RTC实时互联网大会在美国已成功举办8届,是全球范围影响最大最权威的实时通信行业技术会议.该会议吸引了来自全球数万名开发者和技术大 ...

最新文章

  1. centos7 安装Git
  2. 实在不好意思,最近写个项目,一直没时间来灌水
  3. 学习 PixiJS — 碰撞检测
  4. 华为被上汽狂DISS:智能驾驶时代车企呼唤“主权”?
  5. operator new,new operator,placement new的区别
  6. mysql5.7.12 my.ini文件_MySQL5.7缺少my.ini文件的解决方法
  7. 使用React和Spring Boot构建一个简单的CRUD应用
  8. Python开发基础--- 进程间通信、进程池、协程
  9. 洛谷 P2689 东南西北【模拟/搜索】
  10. 手机uc浏览器夜间模式怎么设置调成全黑
  11. 你的Unity3d代码质量还可以提高200%
  12. php artisan key,Laravel:php artisan key:generate三种报错解决方案,修改默认PHP版本(宝塔面板)...
  13. 我见过不少赚了钱,投资孵化一堆店铺的,一般而言后续发展都会出问题的
  14. Bootstrap导航栏实例讲解
  15. 【雨林木风】装机人员常用软件工具盘Y6.5
  16. 计算机毕业设计ssm校园办公管理系统
  17. 为什么CSDN登陆是明文传输账户密码
  18. 项目管理——N个模板
  19. eas bos 常用代码
  20. css svg做动图,如何制作svg动态图

热门文章

  1. 简单tarjan》一道裸题(BZOJ1051)(easy)
  2. C#实现bitmap图像矫正
  3. Ubuntu 开机自动执行脚本
  4. 用数据驱动思想来设计游戏-读《游戏编程精粹1》
  5. phpstudy sqlsrv v8.1_phpStudy
  6. MAC上安装iTerm2+oh my zsh+设置Dracula主题
  7. Keil uVision5 之 C51 与 MDK 共存
  8. python fonttool_Python wx.Font方法代码示例
  9. 计算机视觉--图像处理基础操作学习博客参考1
  10. bind()和connect()函数:绑定套接字并建立连接