当我们观看各类直播时,当我们与家人朋友进行视频通话时,当我们利用远程监控查看孩子在幼儿园的状况时,这其中涉及的技术就是视频通信技术.
随着现代通信技术和业务的发展,以传送语言视频为一体的视频通信业务已经成为通信领域发展的热点,其在视频会议,远程视频医疗,远程视频教育等方面得到越来越广泛的应用.而高效稳定的视频通信系统是开展各类视频通信业务的基础.
一,如何构建视频通信系统
构建视频通信系统是一项综合了数据采集,处理和显示技术,数据压缩编解码技术和网络传输技术的系统性工程.而一个基础的视频通信系统过程主要包含以下三个步骤:
数据发送方采集数据:包括音频,视频以及文本等多媒体数据;
通过网络将压缩的数据传送到接收方;
数据接收方接收到数据后,解码得到多媒体数据,进行显示和播放.
但是在日常的业务中,不同的业务对视频通信系统的技术要求的侧重点是不一样的,例如:对于视频会议,要求双方或多方的视频通信过程能实时进行,延时尽可能低,同时要保持通信过程流畅不卡顿;而对于视频监控系统,则对视频清晰度要求较高,能保留画面中的重要细节内容,而对延时比较宽容.
尽管不同的业务有不同的侧重点,如何构建一个高效稳定的视频通信系统,却一直是视频通信运营商的追求.
(图 1. 构建一套视频通信系统,是一项综合了音视频处理,编解码以及网络传输等技术的综合性工程.)
二,如何构建高效稳定的视频通信系统
1. 数据采集技术:需要能高效及时地获取到高质量的原始数据.
例如:在实时视频通话应用中,通常需要对采集到的音频预处理,主要有滤除背景杂音,检测并消除回音等;在监控视频中,则会对采集到的视频进行去雾,改善强光干扰,夜间图像增强等处理.
2. 数据压缩技术:数据压缩中的视频压缩技术,是整个视频通信系统中的核心技术.
由于原始视频的数据量非常大,如果不经过压缩,将会给传输和存储带来极大的压力.而高效的视频编码技术能在满足传输带宽的限制下保持尽可能高的质量,或者在保证一定质量的条件下,获得尽可能高的压缩率.
在低延时的业务中,对压缩速度的要求也非常高.比如要达到每秒 20 帧的帧率,就要求压缩每一帧的时间低于 50 毫秒,同时还要兼顾到压缩的性能.目前主流的视频编码标准 H.264/AVC,可以获得不错的性能和速度的折中.下一代的视频编码标准是 H.265/HEVC,虽然其码率相比 H.264 在同等编码质量的情况下能节省 45%,但是由于其专利问题和巨大的计算量,目前还没有得到广泛应用.
在屏幕分享和视频通话业务中,要根据不同的场景设置分辨率.前者需要看清屏幕文字等细节,对分辨率要求很高;后者,由于人脸总体是平坦的,分辨率则可以设置得低一些.如果是闭环的通信系统,甚至可以根据具体应用开发非标准编解码技术或改进现有的标准编解码技术.
3. 网络传输技术:视频通信系统的关键技术.
压缩后的数据需要根据合适的网络传输协议打包,打包后的数据经过网络传输到接收端,接收端再根据网络协议解析出压缩数据.根据业务类型以及传输数据的类型,需要选取不同的传输协议.
最常用的两种传输协议是传输控制协议 TCP 和用户数据包协议 UDP:TCP 是面向连接的可靠传输协议
,但是延时相对较大;UDP 是无连接,不可靠的传输协议,但是延时相对较小.
在视频通信系统中,主要包括多媒体数据(音频,视频,文本等数据)和控制信令数据(登入服务器,用户连接变动等消息).其中控制信令数据,起到了调度通信各方的作用,对整个系统的正常运行非常重要,需要稳定的传输,所以一般采用 TCP 协议,以达到稳定传输的目的.而对于多媒体数据,由于对延时要求高,而且丢包对整个系统的运行影响不大,往往采用 UDP 协议,以达到及时传输的目的.
但是这样的选择也不是绝对的,比如在对多媒体数据延时要求不高的业务中,也可以采用 TCP.或者根据特定场景开发某种协议,比如基于 UDP 协议开发一种重传机制的协议,在满足低延时的前提下,同时避免数据传输的丢失导致通信中断.总之,网络传输技术对于通信稳定流畅的进行至关重要,需要结合业务本身进行合理设计.
4. 多媒体数据的解码播放:视频通信系统的最后一步.
要达到音画同步,同时避免出现花屏的效果.解码时,需要根据解码标准检测是否丢失了数据,对解码失败的视频帧采取不予显示或请求重发等措施,避免出现不完整解码帧,也就是花屏的现象.同时对音视频的播放,要根据时间戳进行同步播放,否则会极大地影响用户体验.对于解码得到的音频,由于采样率变化,压缩失真等影响,往往要经过滤波,自动增益等处理,从而得到圆润而不刺耳的声音效果.当然,在多人通信中,首先还要对多路音频进行混音.
三,构建高效稳定的视频通信系统的影响因素
传输带宽的不稳定
.网络环境复杂多变,尤其是移动网络环境,
传输带宽可能是实时变化的
.在这样的网络环境下要实现视频通信的流畅进行,需要编码的输出码率能自适应变化.如果一段时间内网络带宽变得紧张,而编码输出码率仍然较高,则无法及时传输数据,接收方就会出现卡顿的现象,对用户体验影响很大;而当网络带宽有很大富余的时候,如果还是采用低码率进行编码,则是对带宽的浪费,同时接收方的视频质量也较差.
四,解决办法
要实现流畅高质量的视频通信,
编码端需要根据实时的网络状态进行压缩率的调整
,这可以通过改变量化参数,改变分辨率或改变帧率等方法实现.而对网络状态的实时感知,就需要网络传输模块对网络状态进行统计监测,并将网络的实时状态信息提供给编码端.
图 2. 网络传输模块根据丢包率等统计信息,向编码器反馈网络状态,编码器根据网络状态对编码参数进行调整,改变输出码率.
当然也可以设计一种编码端和解码端的正,反馈机制来实现码率控制.具体来说,可以在编码端设计某种检验码,使得解码端收到消息后能够知道是否丢包,从而进行丢包统计.根据统计结果估计出网络状态,然后给编码端发送反馈信息.根据反馈的信息,编码器一方面可以向解码器重新发送丢失的重要数据;另一方面也可以得知网络状态,及时实施合适的码率控制措施,使得通信流畅地进行.采用这种设计模式时,编解码系统就构成了一个完整的闭环系统.此时媒体数据对于网络传输是透明的,因而网络传输模块只需要提供传输通路.
(图 3. 解码端根据解码失败率估计网络状态,将信息反馈给编码器,同样能起到码率实时控制的功能.此时网络传输模块不需要关心所传输的内容,只是提供了传输通路.)
五,总结:
要保证视频通信系统的稳定流畅运行,除各个技术模块的性能都足够好之外,还需要各个模块之间合理高效的配合.这其中最主要的是
编码模块和网络传输模块的配合,以及编码和解码端的正,反馈机制
.
总的来说,构建一个完善高效的视频通信系统是一项极其复杂的,需要多项关键技术密切配合的系统性工程;同时也是需要根据业务的具体要求合理地开发和优化的工程.
来源: https://juejin.im/post/5a587d3ef265da3e3a6dbb33