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

简介: 编者按:音视频技术的历史可能要追溯到19世纪末——特斯拉与爱迪生的伟大时代。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


编者按:音视频技术的历史可能要追溯到19世纪末——特斯拉与爱迪生的伟大时代。直到今天,他们的发明依然伴随我们生活的每时每刻。2018年音视频技术将有哪些突破?来自学霸君的资深架构师袁荣喜从编解码器、客户端、传输网络、动态缓冲区以及媒体处理技术几个方面解析实时音视频技术。展望2018,区块链、AI、WebRTC、AV1将成为关键词。


本文由LiveVideoStack与《程序员》杂志联合策划,并将在《程序员》杂志2018年1月刊发布。最后,感谢《程序员》杂志主编卢鸫翔的建议与高效配合。


文 / 袁荣喜

策划 / LiveVideoStack,《程序员》杂志

责编 / 卢鸫翔


实时音视频技术是源于早期的VoIP通信,随着后来互联网的发展进程,这项技术2003年被Skype引入到PC桌面系统,开启了整个实时音视频技术新纪元。经过15年的进化,基于PC上的实时音视频技术日渐成熟,也涌现了像WebRTC这样的开源项目。但随着近几年移动互联网和4G的兴起,实时音视频领域有了更广泛的应用,引来了新的技术难题和挑战。经过2016年直播大战后,音视频应用得到了用户的认可,直接促成了2017年实时音视频应用的大爆发,在娱乐方面出现了像狼人杀、陌生人视频社交、在线抓娃娃等风口;在协作应用领域出现了Slack和Zoom等多人远程协作应用;在行业应用上也有很大的突破,例如像VIPKID、学霸君1V1等强劲的在线教育产品。在苹果8月份宣布新一代iOS浏览器Safari支持WebRTC后,实时音视频技术成为了时下热门技术体系。


但实时音视频相关技术门槛非常高,很多细节并不为人所知,其中涉及到平台硬件、编解码、网络传输、服务并发、数字信号处理、在线学习等。虽然技术体系繁多,但总体上归纳两类:1对1模式和会议模式。我从这两个分类对实时音视频相关技术做简单介绍,主要有以下几方面: 


  • 编解码器

  • 客户端上传

  • 实时传输网络

  • 动态缓冲区

  • 媒体处理技术


编解码器


谈到视频编码器,就会想到MPEG4、H.264、H.265、WMA等等,但不是所有的视频编码器都可以用来作为实时视频的编码器,因为实时视频编码器需要考虑两个因素:编码计算量和码率带宽,实时视频会运行在移动端上,需要保证实时性就需要编码足够快,码率尽量小。基于这个原因现阶段一般认为H.264是最佳的实时视频编码器,而且各个移动平台也支持它的硬编码技术。


  • H.264/ AVC 


H.264是由ITU和MPEG两个组织共同提出的标准,整个编码器包括帧内预测编码、帧间预测编码、运动估计、熵编码等过程,支持分层编码技术(SVC)。单帧720P分辨率一般PC上的平均编码延迟10毫秒左右,码率范围1200 ~ 2400kpbs,同等视频质量压缩率是MPEG4的2倍,H.264也提供VBR、ABR、CBR、CQ等多种编码模式,各个移动平台兼容性好。


  • VP8/VP9 


除H.264以外,适合用于实时视频的编码器还有Google提供的VP8,VP8采用了H.264相似的编码技术,计算复杂度和H.264相当,不支持SVC,相同视频质量的压缩率比H.264要小一点,不支持B帧。而后Google又在VP8的基础上研发了VP9,官方号称VP9在相同视频质量下压缩率是VP8的2倍,对标的对手是H.265,VP9已经嵌入到WebRTC当中,但VP9编码时CPU计算量比较大,对于VP9用于实时视频我个人持保留意见。不管是VP8还是VP9硬编方式只有Android支持,iOS和其他的移动平台并不支持。


  • 音频编码器


实时音视频除了视频编码器以外还需要音频编码器,音频编码器只需要考虑编码延迟和丢包容忍度,所以一般的MP3、AAC、OGG都不太适合作为实时音频编码器。从现在市场上来使用来看, Skype研发的Opus已经成为实时音频主流的编码器。Opus优点众多,编码计算量小、编码延迟20ms、窄带编码-silk、宽带编码器CELT、自带网络自适应编码等。


0?wx_fmt=png

图1:语音编码器编码延迟与码率对比


客户端推流


实时音视频系统都是一个客户端到其他一个或者多个客户端的通信行为,这就意味着需要将客户端编码后的音视频数据传输到其他客户端上,一般做法是先将数据实时上传到服务器上,服务器再进行转发到其他客户端,客户端这个上传音视频数据行为称为推流。这个过程会受到客户端网络的影响,例如:Wi-Fi信号衰减、4G弱网、拥挤的宽带网络等。为了应对这个问题,实时音视频系统会设计一个基于拥塞控制和QoS策略的推流模块。


  • 拥塞控制


因为客户端有可能在弱网环境下进行推流,音视频数据如果某一时刻发多了,就会引起网络拥塞或者延迟,如果发少了,可能视频的清晰不好。在实时音视频传输过程会设计一个自动适应本地网络变化的拥塞控制算法,像QUIC中的BBR、WebRTC中GCC和通用的RUDP。思路是通过UDP协议反馈的丢包和网络延迟(RTT)来计算当前网络的变化和最大瞬时吞吐量,根据这几个值调整上层的视频编码器的码率、视频分辨率等,从而达到适应当前网络状态的目的。


  • QoS策略


客户端推流除了需要考虑网络上传能力以外,还需要考虑客户端的计算能力。如果在5年前的安卓机上去编码一个分辨率为640P的高清视频流,那这个过程必然会产生延迟甚至无法工作。为此需要针对各个终端的计算能力设计一个QoS策略,不同计算能力的终端采用不同的视频编码器、分辨率、音频处理算法等,这个QoS策略会配合拥塞控制做一个状态不可逆的查找过程,直到找到最合适的QoS策略位置,图2是一个实时音频的QoS策略迁移过程实例。


0?wx_fmt=png

图2:实时语音的QoS状态迁移


传输路径技术


在前面我们对实时音视频归纳为: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对比示意图。


0?wx_fmt=png

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


  • proxy传输技术


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


0?wx_fmt=png

图4:proxy传输模式示意图


  • 分段计算


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


 0?wx_fmt=png

图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所示。


0?wx_fmt=png

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


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


  • 人脸与AI


直播时代人脸美颜和特效已经不再是稀奇的功能了,这得益于AI深度学习和神经网络的发展。值得一提的是,已经有通过对抗神经网络进行人脸替换的技术,这个技术是通过CycleGAN算法模型将视频中每个像素替换成目标像素,以此来达到偷梁换柱的目的。未来一个普通主播替换成明星脸的现象会越来越多。


总结与思考


实时音视频领域涉及的技术众多,有控制网络延迟的,有抗丢包的,有用于增强流畅度的,有用于减少成本的。这其中还有很多悬而未决的问题,例如跨国零延迟实时传输、大规模实时分发、超高清实时、实时VR/AR等。这个领域的技术还在不断发展,随着硬件和算法的不断升级,这些问题正在逐步被解决。在这里简单对未来这方面技术做个展望。


2017年的新一代iPhone上已经嵌入了H.265的硬编模块,接下来很多手机厂商都会植入H.265的硬编模块来提高手机的竞争力。这一局面将加快H.265在实时音视频的应用。除了H.265外,Google联合各个浏览器厂商正在加紧研发AV1新一代互联网视频编码器,预计在2018年放出alpha版测试,AV1在专利费和浏览器兼容上有很大的优势,这是个非常值得期待的事。


在实时音视频传输方面也正在与当下流行的AI和深度学习结合,基于机器学习的拥塞控制算法已经在实验阶段,基于大数据和神经网络的实时传输链路优化也在各大云厂商中开展,我个人看好利用AI和深度学习技术来进行网络调优、传输路径优化和时延控制,这块在未来几年会有相对应的突破。而与区块链的结合可能更多是基于成本上的考虑,例如迅雷的玩客币、赚钱宝等,这类技术方向会催生出新一代的CDN实时分发网络。


行业应用上,在线教育会继续在师生注意力、教育效果上对实时音视频上做深挖,很有可能会引入实时AR/VR来增强用户体验和认知感觉。实时音视频正在成为计算机视觉的下一个发展方向,会持续输出到IoT、毫秒级实时视频监控等行业领域。


关于作者


袁荣喜,学霸君资深架构师,16年的C程序员,好求甚解,善于构建高性能服务系统和系统性能调优,喜好解决系统的疑难杂症和debug技术。早年痴迷于P2P通信网络、TCP/IP通信协议栈和鉴权加密技术,曾基于P2P super node技术实现了视频实时传输系统。2015年加入学霸君,负责构建学霸君的智能路由实时音视频传输系统和网络,解决音视频通信的实时性的问题。 近几年专注于存储系统和并发编程,对paxos和raft分布式协议饶有兴趣。尤其喜欢数据库内核和存储引擎,坚持不懈对MySQL/innoDB和WiredTiger的实现和事务处理模型进行探究。热衷于开源,曾为开源社区提过些patch。业余时间喜欢写技术长文,喜欢读唐诗。


LiveVideoStack招募全职技术编辑和社区编辑


LiveVideoStack是专注在音视频、多媒体开发的技术社区,通过传播最新技术探索与应用实践,帮助技术人员成长,解决企业应用场景中的技术难题。如果你有意为音视频、多媒体开发领域发展做出贡献,欢迎成为LiveVideoStack社区编辑的一员。你可以翻译、投稿、采访、提供内容线索等。


通过contribute@livevideostack.com联系,或在LiveVideoStack公众号回复『技术编辑』或『社区编辑』了解详情。

相关实践学习
搭建简易多人在线视频会议系统
本场景将介绍使用音视频服务单间一个简易的视频会议室。
相关文章
|
3天前
|
人工智能 搜索推荐 安全
AI技术在医疗领域的应用与挑战
【10月更文挑战第27天】 本文探讨了人工智能(AI)在医疗领域的应用,包括疾病诊断、药物研发和患者管理等方面。同时,也分析了AI在医疗领域面临的挑战,如数据隐私、伦理问题和技术局限性等。通过对这些方面的深入分析,我们可以更好地理解AI在医疗领域的潜力和发展方向。
95 59
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
27 11
|
2天前
|
供应链 物联网 区块链
未来已来:区块链技术、物联网与虚拟现实的融合与创新
【10月更文挑战第28天】在数字化浪潮的推动下,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步渗透至我们的日常生活中。本文将探讨这些技术的发展趋势,以及它们如何相互融合,创造出前所未有的应用场景。我们将通过实际案例,展示这些技术如何改变工业、医疗、教育和娱乐等多个领域。最后,我们将展望这些技术未来的发展方向,以及它们可能带来的社会变革。
24 12
|
1天前
|
机器学习/深度学习 人工智能 算法
AI技术在医疗健康领域的应用与挑战####
本文旨在探讨人工智能(AI)技术在医疗健康领域的创新应用及其面临的主要挑战。通过深入分析AI如何助力疾病诊断、治疗方案优化、患者管理及药物研发,本文揭示了AI技术在提升医疗服务质量、效率和可及性方面的巨大潜力。同时,文章也指出了数据隐私、伦理道德、技术局限性等关键问题,并提出了相应的解决策略和未来发展方向。本文为医疗从业者、研究者及政策制定者提供了对AI医疗技术的全面理解,促进了跨学科合作与创新。 ####
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
2天前
|
供应链 区块链
探索区块链技术在供应链管理中的应用
【10月更文挑战第28天】 本文深入探讨了区块链技术如何革新传统的供应链管理系统,通过提供一个去中心化、透明且不可篡改的数据记录平台,来增强整个供应链的透明度和效率。文章首先介绍了区块链技术的基本原理及其核心特性,随后分析了当前供应链管理面临的主要挑战,并详细讨论了区块链技术在解决这些问题中的潜在作用。通过具体案例分析,本文展示了区块链技术在实际供应链管理中的应用效果,包括提高数据透明度、降低运营成本、增强供应链各环节之间的信任等方面。最后,文章还探讨了实施区块链解决方案时可能遇到的技术与非技术障碍,并对未来区块链技术在供应链领域的发展趋势进行了展望。
14 2
|
2天前
|
人工智能 运维 数据挖掘
跨界融合:AI与5G技术如何共同推动数字化转型
【10月更文挑战第29天】本文探讨了人工智能(AI)与第五代移动通信技术(5G)的结合如何推动数字化转型。通过高速、低延迟的5G网络和AI的数据分析能力,两者相辅相成,实现了智能化网络运维、增强网络功能和多行业的实际应用。文中提供了网络流量预测和故障预测的示例代码,展示了技术的实际应用潜力。
11 1
|
2天前
|
机器学习/深度学习 人工智能 算法
AI赋能大学计划·大模型技术与应用实战学生训练营——吉林大学站圆满结营
10月30日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·吉林大学站圆满结营。
|
2天前
|
人工智能 自然语言处理 安全
AI技术在智能客服系统中的应用与挑战
【10月更文挑战第28天】本文将深入探讨人工智能(AI)技术在智能客服系统中的应用及其面临的挑战。我们将通过实例分析,了解AI如何改善客户服务体验,提高效率和降低成本。同时,我们也将关注AI在实际应用中可能遇到的问题,如语义理解、情感识别和数据安全等,并提出相应的解决方案。
|
4天前
|
人工智能 安全 Cloud Native

热门文章

最新文章