写在开始之前
之前也分享过不少零散的技术文章,包括音视频、图像处理和流媒体服务相关的技术都略有涉猎。但是,都写得比较偏具体功能的实现,不够系统。因此也让很多读者产生迷惑和不解。需要读者对流媒体相关的架构和知识有一定的了解之后才能上手。
对于开发者而言,这些都还好说。但是对于非技术型读者来说,可以说是直接劝退了,因此本系列文章分为面向开发者得技术向 和 非技术向两种教程分别更新,对于“非技术向”系列教程将不会出现代码编写,力求通俗易懂;对于开发者得“技术向”系列教程将会出现大量得代码开发和优化教程。
本系列文章将以具体的应用场景作为实战教程,系统的讲解整个直播平台的架构是如何设计的,如何开发这些子系统或者模块功能,从而搭建一套完整的直播平台。
直播平台结构
为了防止出现盲人摸象的问题。以我们将由面到点的从整体了解整个直播平台的结构,然后把这个面分解成一个个子系统或者具体模块功能,这样,我们才能够清晰的了解直播平台下每个系统模块的功能是做什么的,如何运行的。
最简单的直播平台结构:
事实上我们只要搭建了流媒体服务,就已经完成最简单的直播平台了。剩下的就是等直播UP主推流,然后用户观看就可以了,是不是很简单。
当然了,光是这样还不行,用户不知道如何获取和播放你得直播地址,直播UP主也不知道往哪里推流,直播平台就是帮助用户显示直播UP主的房间,方便筛选和观看,也方便用户发弹幕能够和正在直播的up主交流。至于直播UP主这块的推流,还是需要知道直播地址并使用OBS等推流工具进行推流才可以直播。
CDN分发:
为什么会用到CDN分发,这是因为使用直播平台观看直播的用户多了以后出现了一个重大问题,那就是带宽不够了。
怎么办?可想而知,光靠带宽硬抗肯定是不现实的。而且国内带宽费用可不便宜。所以这时候需要CDN来帮助缓解流媒体中心服务器的带宽压力了,CDN分发一般会按照流量收费,天下没有免费的午餐。
这时候直播平台的结构变成了这样:
推流端
推流端一般使用的软件是OBS推流工具。这个工具就不多赘述了,用的实在很广泛。
当然了,对于开发者而言,肯定需要的是FFmpeg 和 opencv了,FFmpeg是做音视频编码推流,opencv当然是用来实现美颜。
流媒体服务
流媒体服务就是实时视频的中转站。
流媒体服务一般而言:nginx,srs,red5等等,这个系列的后续教程会主要涉及nginx和srs。
拉流播放端
PC端:VLC
web端:videojs,flv.js,hls.js,ckplayer等等
移动端:ijkplayer
微信小程序:最好用企鹅云的播放,否则会出现兼容性问题,亲测只有企鹅自己的网页播放器才可以同时兼容QQ微信小程序和公众号。
系列教程后续会主要使用VLC测试拉流播放,虽然VLC延迟很大,但是兼容性是最好的,网页端测试主要使用videojs和flv.js以及企鹅的播放器
CDN分发
很多CDN服务商都支持rtmp,flv,hls等流媒体的分发,由于涉及具体厂家,不打广告,这里就不列举了。
下一章
从零开始开发和搭建直播平台-流媒体服务搭建之1-nginx流媒体服务搭建
从零开始开发和搭建直播平台-流媒体服务搭建之2-srs流媒体服务搭建
javacv系列
以前写的流媒体服务搭建
nginx-rtmp服务搭建:https://blog.csdn.net/eguid_1/article/details/51749830
感谢支持eguid原创文章。欢迎转载文章,但还请注明出处,创作不易,万分感谢!