找回密码
 立即注册
LiveVideoStack 首页 资讯 查看内容
  • QQ空间
  • 回复
  • 收藏

展望2018音视频技术:AV1,AI,区块链,WebRTC(二)

2018-1-3 17:51


传输路径技术


在前面我们对实时音视频归纳为:1V1模式和1对多模式,这两种模式其实传输路径设计是不一样的。1V1模式主要是怎么通过路由路径优化手段达到两点之间最优,这方面Skype首先提出基于P2P的Real-time Network模型。而1对多模式是一个分发树模型,各个客户端节点需要就近接入离自己最近的server服务器,然后在server与server构建一个实时通信网络。


  • P2P前向收敛技术


对于1V1模式的实时音视频通信,很多时候我们以为两点之间直连是延迟最小质量最好的通信链路,其实不是。整个骨干网的结构并不是网状,而是树状的,这个从同城网通电信之间互联的质量可以得出结论,如果涉及到国际之间互联更是复杂无比。一个好的1V1实时音视频系统会设计一个对等多点智能路由的传输算法,就是通过多节点之间的动态计算延迟、丢包等网络状态来进行路径选择,这是个下一跳原则的选择算法,只要保证每个节点自己发送包的下一跳的延迟和丢包最小,那么整个传输路径就是最小最优,一般TTL小于4。寻找下一跳的过程是一个P2P节点前向收敛技术,它需要一个函数f(x)来做收敛。图3是一个传统1V1和基于P2P relay的1V1对比示意图。


图3:P2P多路径传输示意图


  • proxy传输技术


对于1对多模式的实时音视频通信,需要一个中心server来控制状态和分发流数据,但参与通信的节点不都是对中心server网络友好,有可能某些节点连不上中心server或者丢包延迟很大,无法达到实时通信目标需求。所以一般会引入就近proxy机制来优化传输网络,客户端节点通过连接距离最近的proxy到中心server。这种方式不仅仅可以优化网络,还可以起到保护中心server的作用。


图4:proxy传输模式示意图


  • 分段计算


不管是P2P relay模式的1v1,还是就近proxy的1V多模式,在数据传输过程会做各种传输补偿来应对丢包,例如:FEC、ARQ等,如果进行ARQ还需要对重传的数据做临时保存。这里遵循的是分段计算的原则,这个原则大致是:每一段网络上一跳节点必须独立计算到下一跳节点之间的丢包、延迟,并将接收到数据cache在内存中,根据这段网络的状态启用对应的FEC、ARQ和路由选择策略,不影响其他分段传输策略。


图5:分段计算与网络节点示意图


  • WebRTC网关


在实时音视频系统中需要在Web上进行实时通信,各个浏览器都已支持WebRTC,所以WebRTC是Web上实时音视频通信的首选。但WebRTC是基于浏览器的客户端点对点系统,并没有定义多路通信标准和服务中转标准,不管是1V1模式还是1对多模式,需要引入WebRTC网关来接入自定义的实时系统。网关负责将WebRTC的SDP、ICE、STUN/TURN、RTP/RTCP翻译成自定义系统中的对应协议消息,实现无缝对接WebRTC。WebRTC很多类似的开源网关,例如:licode、janus等。


动态缓冲区


在实时视频的播放端会有一个自动动态伸缩的JitterBuffer来缓冲网络上来的媒体数据,为什么要这个JitterBuffer呢?因为TCP/IP网络是一个不可靠的传输网络,音视频数据经IP网络传输时会产生延迟、丢包、抖动和乱序,JitterBuffer可以通过缓冲延迟播放来解决抖动乱序的问题。但JitterBuffer如果缓冲时间太长,会引起不必要的延迟,如果缓冲时间太短,容易引起音视频卡顿和抖动。所以JitterBuffer在工作的时候会根据网络报文的抖动时间最大方差来动态确定缓冲时间,这样能在延迟和流畅性之间取得一个平衡。


JitterBuffer除了缓冲解决抖动和乱序的问题以外,为了延迟和流畅性之间的制约关系,它还需要实现快播和慢播技术,当JitterBuffer中数据时间长度小于确定的抖动时间,需要进行慢播,让抖动缓冲区数据时间和抖动时间齐平,防止卡顿,当JitterBuffer中的数据时间长度大于确定的抖动时间,需要进行快播,接近抖动时间,防止累计延迟。


媒体处理


  • 回声消除


在实时音视频系统中,回声消除是一个难点,尽管WebRTC提供了开源的回声消除模块,但在移动端和一些特殊的场景表现不佳。专业的实时音视频系统会进行回声消除的优化。回声消除的原理描述很简单,就是将扬声器播放的声音波形和麦克风录制的波形进行抵消,达到消除回声的作用。因为回声的回录时间不确定,所以很难确定什么时间点进行对应声音数据的抵消。在专业的回声消除模块里面通常会设计一个逼近函数,通过不断对输出和输入声音波形进行在线学习逼近,确定回声消除的时间差值点。如图6所示。


图6:回声消除模型与逼近函数


回声消除整个过程对CPU计算有一定的要求,尤其是在移动端设备上,所以在设计回声消除模块的时候会将回声消除算法设置几个计算等级,不同的等级不同的CPU计算量,根据执行设备的性能来做策略调节。

原作者: 袁荣喜 来自: LiveVideoStack
文章点评
相关文章