首先,今天偶尔看了庄明浩先生的一篇演讲,大概内容如下(想看完整版的在这里 https://zhuanlan.zhihu.com/p/20717041):
直播大概是最近一段时间被资本市场疯狂关注,现在我们看到的这些公司上线都已经有段时间.以斗鱼为代表的直播平台,自14年创立到 现在已经有俩年的时间了。映客这一波为代表公司 ,创立的时候应该是15年年初。在15年下半年的时候,他们火过一波。今天为什么关注呢?有很多的原因,有资本市场的原因,有行业发展的原因,当然也有这些公司估值的原因等等。作为一个观察者,可能更多是一个用户。直播这俩年行业发展的很快,所以有很多新的事情。
个人感觉:
1.直播未来会成为所有人的“标配”,甚至不局限在视频行业;
2.远期是整个大视频领域的竞争;
3.所有人的目标其实只有一个:抢占用户的时间;
4.所有公司对直播的出发点只是秒开,流畅,美颜这三点;
那么问题来了,对于创业公司 ,“直播系”的大时代有可能成为平台吗?大视频领域也好,大社交领域也好,都已经有巨头存在了。独立的直播类公司比较难以独立生存。在中国,直播分为俩个派系,一是游戏拓展娱乐领域的在线直播平台;其次就是以映客 、花椒直播为代表的以手机为载体、强调人人参与、更强调社交的移动社交直播,这俩类公司有可能成为独立的平台,跟所有的娱乐也好,社交也好,并行在发展,创业公司基本集中在这俩个类目里面。中国有几个数据,大家可能没有听说过。1.中国真正意义上的直播,在各家直播平台做直播,或者注册经营的公司,大概在150万人左右,这是什么意思?比中国的出租司机都要多。我们所有的直播平台加在一起,覆盖的用户大概在三四千万左右,一天可能比打车的人还要多。简单的来讲,中国的网民大概有六点几亿,游戏用户大概有四点几亿,不到点五亿,一天所有的平台加起来,已经跑到3000万了。俩年的时间,游戏的人群吃完之后呢?
好了,下面进入正题:
如何搭建一个完整的视频直播系统?一个完整的直播系统大致包含这几个环节:采集,前处理 ,编码,传输,解码和渲染。在两端 传输的过程中再加上一个服务端处理。大致模型如下:
在主播推流端涉及到的环节有采集、前处理和编码,在观众端涉及到的环节就是解码和渲染,在这俩个端之间建立起传输通道的则是服务端,它负责接收主播端的推流,将其处理之后分发给观众播放端 :
1.采集
对iOS是比较简单的,Android则要做些机型适配工作,PC最麻烦各种奇葩摄像头驱动,出了问题特别不好处理,建议放弃PC只只支持手机 主播,目前几个新近的直播平台都是这样的。
2.前处理
现在直播美颜已经是标配,80%的主播 没有美颜根本没法看。美颜算法需要用到 GPU编程,需要懂图像处理算法的人,没有好的开源实现,要自己参考论文去研究 。难点不在于美颜效果,而在于GPU占用 和美颜效果之间找平衡。GPU虽然性能好,但是也是有功耗的,GPU占用太高会导致手机发烫,而手机发烫会导致 摄像头采集掉帧,iPhone6尤其明显,因为iPhone6的CPU和前置摄像头很近。
3.编码
肯定要采用硬编码,软编码720p完全没希望,勉强能编码也会导致CPU过热烫到摄像头。硬编码 兼容性又是一个大坑,Android上要有人去填。编码 要在 分辨率,帧率,码率,GOP等参数设计上找到最佳平衡点。
4.传输
自己做不是很现实,交给 CDN服务器商,也就是贵了点,相信 有志于做直播平台改变世界的你不差钱。假设2W PCU大约每月带宽费用 100万左右,因为清晰流畅的720p要1.5mbps左右。CDN只提供了带宽和服务器见得传输,发送和接收端的网路 连接抖动缓冲还是 要 自己写的。不想要卡顿,必然要加大缓冲,会导致延迟高,延迟高影响互动性,要做权衡。
5.解码
也肯定要硬解码,目前手机支持硬解了,只是安卓上还有兼容性 大坑要填。
6.渲染
这个难点不在于绘制,而在于音画同步,目前几个直播做的都不好, 此外音频还有几个坑要填,比如降噪,音频编码器的选择,各种蓝牙耳机,各种播放模式的适配等,如果你想做主播和观众连线聊天,还要有个回声消除的问题。
后台还有数据库 ,缓存,分布式文件存储,消息队列,运维系统等。