前言:
今天的给大家简单的介绍一下音视频技术主要应用于哪些产品, 以及这些产品都涉及到哪些技术,并简单讲一下每种技术的难点,最后我想谈一谈音视频直播的未来。
产品分类:
现在大家一谈到音视频直播就会想到花椒、映客等娱乐直播,还有斗鱼、熊猫等游戏直播,这两种直播我们将它们统称为泛娱乐化直播。其实音视频直播技术不光应用于这类泛娱乐直播,还有很多其它类型的直播,如音视频会议、教育直播等,这两种我们称之为实时互动直播。
泛娱乐化直播主要有音频,视频,聊天,打赏等功能。
实时互动直播除了具有音频,视频,聊天,打赏功能外,一般还包括 文档共享、桌面共享、白板共享、批注等功能。
泛娱乐化直播与实时互动直播区别:
泛娱乐化直播与实时互动直播的区别还是比较大的,从技术门槛来说实时互动直播比泛娱乐化直播要高好几个级别。
泛娱乐化直播的一般场景是一个网红主播在上面给大家分享,粉丝们与网红的主要沟通方式是通过聊天的方式。在这种场景下,直播平台主需要保障网红的视频与声音保持同步就可以了。粉丝对于网红声音、视频的延迟不太关心,也就是说网红从开口说话到粉丝收听到网红的声音和视频延迟10秒或20秒用户都是可以接受的。
实时互动直播与泛娱乐化直播场景有非常大的区别,我们在音视频会方为例,比如在一场会议中同时有30人参加,每个与会者都有可能参与讨论交流,并根据前一位发言者所讲的问题发表自己的看法。所以它要求会中每个人都能够说知,都能进行视频共享。在这种场景下,它对实时性就有了非常高的要求,如果在音视频会议中语音延迟超过500ms那用户的感受就会非常差。实际上音视频会议的规范上有明确的规定,音频的实时互动小于300毫秒实时互动的体验会非常好,在我们实际的应用中, 我们发现如果音频延迟不超过500毫秒用户的体验还是非常不错的。
为了达到实时互动的目的实时互动直播要做非常多的工作,如网络优化,音视频的优化,服务器优化等。
另一方面,实时互动直播由于一般应用于音视频会议和在线教育,所以在功能上也比比泛娱乐化直播多很多。这一点已经在上面一节提到过。
所以说 实时互动直播泛娱乐化直播技术门槛高了好几个级别。
技术漫谈:
我们来讲一下音视频直播都用到了哪些技术。说到音视频直播我们最先想到的技术就是音频技术和视频技术。其实音频技术和视频技术它们的大体处理流程都是差不多一般都分为五大步:数据采集,编码,传输,解码和渲染。然后IM聊天,这主要是服务端的工作,IM主要解决的问题是大负载问题,以及消息丢失和消息重复问题。桌面共享,桌面共享可以用视频技术实现,也可以用VNC技术实现,相较而言VNC优势更大。文档共享,比较简单的方式是将各种文档都转成jpg格式,更好点的可以转成矢量图,这样图片进行放大,缩小时不会失真。传输,对于实时性不高的产口可以使用RTMP, 对于实时性比较高的必须使用UDP,一般会选用RUDP(可靠性UDP),既可以保证传输速度,又可以防止丢包。下面我们对这几个方面做一下详细介绍:
数据采集。对于音频来说采集到的数据是PCM格式,对于视频数据采集的格式是YUV格式。
数据压缩编码。数据采集完之后需要对数据进行压缩编码。音视频使用的压缩技术称为有损压缩技术。而像我们平RAR,ZIP工具进行的压缩都是无损压缩。就是说解压后的数据与原始数据一样叫做无损压缩,数据解压后和原始数据高像接近称为有损压缩,音视频编码属于后者。对于音频来讲,常用的编码格式有,speex, AAC, OPUS, G.711等,现在比较常用的是AAC,一是它音质比较好,二是RTMP对AAC支持的比较好。对于视频编码格式有H.264, H.265, VP8, VP9等,目常基本上都是使用H.264.注意,衡量有损压缩好坏的指标就是看同等压缩率的情况下,解压后的数据与原始数据之间的差别大小,差别越小证明压缩的算法越优。当然在实时互动直播中,我们为了实时性就需要牺牲一部分质量或者也有可能为了质量而牺牲一些实时性,这需要仔细的权衡。
传输。数据压缩完之后通过网络传输。对于泛娱乐化的直播平台一般都使用RTMP进行数据的传输,RTMP是在TCP之上的网络协议。对于实时互动直播则必须使用UDP进行数据传输。UDP数据的传输速度上比TCP有天然的优势。RTMP是Adobe公司发明一种传输协议,目前所有的CDN网络对RTMP的支持是非常好的,但它的问题就是延迟性比较大。使用RTMP造成延迟主要有两个方面原因,一是RTMP网络协议由于是基于TCP协议的,本身延迟就比UDP大,另一方面是CDN架构造成的。CDN首先从顶级结点接收数据,然后以树状形式分发到端结点,这个过程链条比较长,导致整体的延迟非常大。而且延迟时间不固定,有可能某段时间延迟3、5秒,也有可能过一段时间延迟就达到了30秒这都是有可能的。
解码。就是将对编码数据做反向操作。如音频是AAC编码,则它再解为PCM格式数据。视频是H.264再解为YUV数据。
播放和渲染。对于音频直接将PCM数据放入到音频驱动缓冲驱,驱动程序就会将音频播放出来。对于视频一般会通过 opengl利用 GPU进行图像渲染。
IM聊天:
对于直播产品中的聊天与QQ之类聊天软件还有不少区别,尤其娱乐直播,在一场直播中可能有上万人参上,其中一个用户发消息就要分发1万份,10000人同时发,就是1亿的消息量,具有短时大并发的特性。可以在用户接入设计上要考虑多点接口,而在下发时要做限流控制,同时在客户端也要限制用户发消息的频率。
桌面共享:
桌面共享可以使用视频技术也可以使用VNC技术,相较而言VNC技术更占优势。VNC主要是以下几点好处:
共享者桌面不发生变化时,就没有数据产生,这样可以节省带宽流量,而视频即使不动也会产生一定流量。
VNC可以保障桌面的清晰度,而视频由于是动态变化的,所以很难做到这点。
可以进行远程控制,视频技术无法实现。
文档共享:
文档实现共享的方式很简单,就是将各种类型的文档如 word, ppt, excel, txt, pdf等都转成图片。当时转成的图片可以是 jpg 也可以是矢量图。矢量图的好处是图片进行缩放时不失真。一般的实现方式都是实现一个虚拟打印机来实现。
传输:
这里主要说一下 RUDP, 我们知道TCP是流式的,可靠传输,而UDP是不可靠传输。它们都是基于IP协议的,而IP协议是不可靠的包传输方式。那么TCP是怎么成为流式可靠传输的呢?这里不可以做详细介绍,但其核心就是发送/应答机制,丢包/超时重传机制,滑窗控制(慢增长,快下降)机制。而RDUP也是利用这几个机制来达到可靠性的要求。
为什么直播火了:
2015年直播一下火了,对于直播为什么能火我来谈一下我的看法,我是从2010年做网络音视频会议平台的,那个时候国内还很少有做这类产品的公司,即使有也大多不是很成功。国外有一家比较大的公司叫WebEx公司,它是全球第一家做网络音视频会议上市的公司,也是我们想超越的一个目标公司。
在当时来讲技术的门槛还是比较高的,既要解决音视频的问题,又要解决传输的问题, 还要解决 服务端高负载、大并发、高可用等问题,所以做一个音视频会议或实时互动直播的产品是非常麻烦的。这几年随着开源社区的不断贡献,如我们熟知的ffmpeg, x264, webrtc等开源库的出现;Adobe RTMP协议的推广;CDN价格的降低,技术的成熟;以及智能手机的普及,大大降低了直播技术的门槛。
技术已经不是那么高不可攀,而人们对视频天然有大量的需求,直播产品的出现,网红的出现,以及资加的注入,加速了或推动了市场的繁荣,到2015年出现在大爆发。但这种繁荣是虚假繁荣。网红的出现只是短期满足人们的新鲜感,这类产品并不是一个长期需求。所以从2015年下半年,直播就已经开始走下坡路。最后能生存下来的泛娱乐直播必须要进行痛苦的转型。
未来的方向:
泛娱乐直播的衰落并不代表着直播没有前途,而我觉得直播行业才刚刚开始。只是不要把它简单的用在为了娱乐而娱乐的产品上。如在把直播与在线教育结合,与会议结合,与安防行业结合,与媒体行来结合都是一错的道路。
而在技术上,模式识别(人脸识别)、语音识别与分析、VR技术、图像处理等技术的加入会让人们享受后更好的产品体验。
最后:
今天的分享就到这里了,如果你也喜欢音视频开发,相互交流,一起进步;同时如果大家看到我没更新,不是在偷懒,一般是在给自己疯狂输入;好了,我们下期见!
、