我小时候,娱乐的主要方式都是看电视,现在由于智能手机的普及,大家的主要娱乐方式也慢慢发生了变化,直播成为了大家常用的娱乐方式。不禁平台众多,像快手、西瓜视频、抖音、虎牙斗鱼各大直播网站,内容也非常丰富,除了游戏、运动、户外,甚至还有直播睡觉,写代码的。那么,这些形形色色的直播,是如何到我们手机上的呢?
主播
一个直播,大致可以分成3部分,第一部分是主播的部分,主播,很明显,就是要进行原始图像跟声音的一些采集。当采集完主播的图像跟声音后,会对这些进行编码,然后才上传给服务器。毕竟原始的图像可能非常大,会占用主播大量的带宽,消耗主播大量的流量,所以,需要对图像跟声音进行编码压缩。这是直播公司的一个核心技术,如果你当过主播,就会发现,家里同样的宽带,怎么有些平台就卡了,有些平台却很很流畅。当视频与音频压缩完成后,就会采用一定的协议,将数据上传到服务器后台,我们称之为推流。
服务器
服务器接受到主播传上来的视频跟音频,一般会先进行简单的机器审查,保证视频内容健康大方,之后,会再进行二次编码。有些人可能会问,不是在主播的客户端上面已经编码了么?怎么又编码了一次,这是因为编码是一项极耗系统资源的工作,需要更强大的服务器才能够支持。另外,主播可能上传的是蓝光的视频,服务器需要转成不同的清晰度给不同的观众。服务器转码完成后,就等着观众过来拉取了,这个称之为拉流。
观众
观众从服务器拉取到压缩后的二进制,开始在本地进行解码,解码完成后,就能够看到精彩的视频与音频。我们在观看直播的时候,经常有不同的线路可以选择,这是什么意思呢?原来是如果所有的人都到后台去拉取数据,那么,服务器的压力会非常大。通常,服务器会先把数据分发到各个边缘节点,例如CDN,用户直接去CDN拉取数据,减少服务器的压力。我们在直播页面选择不同的线路,通常就是切换不同的CDN。
总结
今天我们的介绍就到这里,相信大家已经基本了解了直播的基本流程,对于直播公司来说,最大的技术壁垒在于视频的压缩以及网络的带宽分配还有直播协议的改进,如何用更少的资源进行直播,是各个视频公司程序员共同的努力。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。同名公众号(沙茶敏碎碎念)
程序员圈子,欢迎程序员或者有志成为程序员的学生们加入,共同学习与进步。
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/776967.html