企业级直播平台架构和设计

news/2024/12/22 23:56:57/

1. 首先非常不建议企业自己研发和部署直播平台,原因大概有以下几点:

        a. 流程特别复杂,不光是简单的推流和拉流这么简单;

        b. 研发成本异常高(流媒体开发人员、开发周期、现在直播第三方服务都白菜价了);

        c. 服务器、带宽、CDN、质量监测、鉴黄、存储、运维 等等成本非常高;

        d. 稳定性是你们终生要不断优化和调试的工作,这块成本很高;

        e. 建议使用第三方直播服务,整个平台非常可控;

        ......

2. 看了第一条如果还是要持续坚持研发属于自己的直播平台,希望接下来的内容能帮助到你;

3. 客户端要具备的能力:

        a. WIN & MAC 要有主播/观众 端的客户端,当然也可以用 OBS(开源);

        b. Web & H5 & 小程序 & IOS & Android  都要具备可集成的SDK和推流和拉流的能力;

        c. Flash 显然已经被淘汰了,现在的推流和拉流协议必须要支持:HLS、FLV、RTMP、WebRTC,简介如下;

                HLS:就是 m3u8,苹果公司开发的,(时间延迟较高),他会把一个时间间断的视频流切成N片,保存为ts格式,浏览器拉取的是一个视频文件list,解析文件list去拿到视频,造成了时间的延迟,目前依然为主流格式,

                FLV:flash vedio,基于HTTP协议,能够较好的穿透防火墙,网络延迟降低,目前为主流视频流格式;

                RTMP:实时消息传输,低延迟基于TCP协议,也可以封装在HTTP上,RTMP协议有几个变种:RTMPE 增加了加密,RTMPT基于HTTP请求之上,防火墙穿透; RTMPS 协议类似于RTMP,增加了SSL/TLS的功能;

                WebRTC:基于网页的视频协议,基于UDP协议,谷歌开源,目前支持Chrome内核浏览器,低网络延迟,流量少、性能高,RTMP和HLS主要基于TCP传输,为了保证传输质量会造成很多ACK,在网络不好的情况下会产生很多重传包,而WebRTC传输是基于RTP和RTCP,重传策略是基于NACK完成,有三种方案MCU/SFU/MESH,目前为主流视频直播方案(多人连麦互动);

4. 直播平台---流媒体服务器推荐框架选型:

        a. SRS 是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群,一直在维护迭代;

        b. FFMPEG 用于视频流的格式转换和视频画面处理,比如 加水印、字母、视频流转码,RTMP转HLS / FLV、视频清晰度转换 RTMP原画 转 360P/720P/1080P 等等,视频录制等等;

        c. OBS推流拉流工具;

        d. MSE 基于chrome浏览器的播放器加密拓展,之前都是把整个视频连接放到页面里,非常不安全,现在是基于MSE协议进行各个视频码流的播放,这个过程做了 防盗链和token校验;

        e. WebRTC: 基于谷歌开源,也有几个不错的开源框架:licode/jitsi;

        f. 第三方服务,鉴黄/鉴暴,通过旁路进行视频画面切片传到第三方服务鉴别;

5. 直播平台---存储方案选型:

        a. 分布式存储即可,Ceph,第三方(阿里OSS、华为OBS)

        b. Mysql 多主多从

        c. Redis & ignite

        d. 时序性数据库influxdb

        e. 消息队列 rabbitmq / kafuka

6. 直播平台---平台开发语言选型:

        a. 后端PHP、python、java;;

        b. 前端Js、JQuery、Vue;

7. 直播平台---视频流分发选型:

        a. CDN,融合多家CDN做主备;

        b. IP地址库,通过IP地址优先就近原则分配拉流/推流节点;

8. 直播平台---业务架构:

        a. 基础设施层:流媒体系统、埋点监测系统、大数据分析系统(平台数据、用户行为数据 等)、运维监控系统、消息系统、安全系统、分布式存储系统、DevOps平台、调度系统 、算法模块 等等;

        PaaS:这块存在的价值逐渐被缩小;

        b. 能力层:

                i. 直播LSS:多端推/拉流、直播转码、实时录制、实时字幕、美颜/滤镜、直播合法性监控;

                ii. 点播VOD:上传/录制/下载、转码、存储、多端播放 等;

                iii. 互动系统:多人连麦、PK、实时在线混流、多路合成一路;

                iv. 物料平台:支持各种格式文档上传、Canvas白板等等;

                v. IM: 广播消息、礼物播报、NLP、IM权限管理(禁言等);

                vi. 互动组件:礼物、公告、签到、投票/积分、红包、问卷考试、邀请卡、白名单控制、物品推荐等等;

                vii. ......

        c. 中台:

                i. 业务中台:API中心(SDK、API、Wiki、Demo)、权限控制 等;

                ii. 用户营销中心:行为仓库、用户画像、标签系统、营销策略库、会员营销策略 等等;

               iii. 数据营销中心:智能推荐、广告系统(RTB/DSP/DMP=)、平台搜索引擎、SEO优化策略;

                iv. 数据监控中心

                v. 共享中心:

        d. 前台:SaaS、定制化、解决方案(政企、医疗、教育、电商、金融、保险、场景 等等)

9.  直播平台---通讯流程:

        a. 直播端(client/mob/h5/web):发起直播请求到流媒体服务器,流媒体服务器进行发起端权限校验,服务端通过权限校验后给直播发起端一个信令,允许把直播流推到流媒体服务器;正常来说推流一般是RTMP协议,如果是WebRTC协议 流媒体会进行转码为 RTMP格式; 如果为旁路(多人互动),对WebRTC进行多路采集由流媒体服务器进行混合最终输出一路旁路; 这个时候会有一个小判断,直播发起后,服务器的调度模块会优先通过IP等信息就近分配推流节点;

        直播前会进行环境检查:摄像头、麦克风、网络等;

        b. 流媒体服务器群:接收前端推流、进行视频流处理(转码HLS/FLV/RTMP等,清晰度转换:360/720/1080P 等、视频画面处理(字幕、打点等)、视频录制(保存为m3u8格式、进行视频切片、存储、鉴黄等))、然后将最终处理好后的视频源流和各个清晰度的流 推向融合CDN(融合CDN就是把流推送到多家CDN厂商,比如阿里云腾讯云之类,做CDN热备);

        c. 融合CDN系统:存在调度、质量监控、视频格式输出 等模块,调度(CDN多家厂商,按照权重配比,优先/次先 分配给拉流端)、质量监控(对CDN上所有的视频流进行巡检,发现网络延迟高的立马对这家CDN进行地区降权,因为很有可能这家CDN 在上海很卡,在北京流畅,优先分配网络延迟低的),现在好多CDN厂商都具备直播CDN,不需要服务器对拉流端各个视频格式的转换,CDN就替你做了处理,CDN会自动输出拉流格式(HLS/FLV等等),正常一路CDN至少有4路流(原画、360、720、1080P),而且CDN的出现大大降低了直播整个平台的拉流复杂度;

        d. eCDN,基于P2P的协议传输,为了解决内网分发的性能瓶颈问题,如果1000人都在一个公司观看一场直播,那么之前的方案就是1000人都从公司的路由器作为出口进行CDN拉流,这样无疑是浪费网络资源,为了解决这个问题 底层流媒体新增了P2P协议,内网观看的群体,通过设备性能选举出1个或多个listener,向其他设备传输视频流,这样大大减少了公网流量的支出,而且为了防止内网阻塞,一旦P2P出现问题,我们会进行降级,使用CDN进行拉流;

        e. 拉流调度系统,根据拉流端的IP和网络状况等信息,结合CDN调度系统,获取到节点最近和根据拉流端的网络情况动态切换 视频清晰度;

        f. 运维系统:就主流那几套,k8s、docker、grafana、zabbix、直播/房间监控(自己开发) 等等;

        g. SaaS平台:就平台的集群化部署,SSO联登、组件服务(礼物、IM ....)等等,这个每家的逻辑不一样;

        h.  安全措施:防火墙、WAF、等保三级、重保、接口参数全加密 等等

        i.  以上平台看起来简单,如果真要自己团队开发是个非常大的成本;

        j.  信令服务器,通过websocket协议进行信令的接收和信令的广播;

        l.  ... ...

10. 怎么监测直播/画面质量:

        a. 直播方的帧率、码率和直播方画面的的清晰度 来计算分值;

        b. 视频的雪花点监测;

        c. 直播方的上传网络速度;

        d. 画面是否扭曲、拉伸等非正常情况;

        e. ... ...

11. 专业名词释义:

        a. GOP:(Group of Pictures)画面组,关键帧间隔,一个GOP就是一组连续的画面,每个画面都是一帧,一个GOP就是大量帧的集合。直播的视频数据流,其实是一系列的视频帧率组件,包括I帧、P帧等。一个GOP就是以一个I帧,多个P帧开始。当用户第一次观看的时候,播放器需要找到I帧才能开始播放,而播放器会到服务器寻找到最近的I帧反馈给用户。因此,减少GOP帧的数量,能减少播放器加载GOP帧所用的时间。在直播推流端GOP一般建议设置为1~2s。
        b. 码率: 又叫比特率,计算公式:码率(kbps)=文件大小(KB) * 8 / 时间(秒),取决为网络传输速度;

        c. 帧:以帧称为单位的图像连续出现在显示器上的频率(速率),帧分为N制和Pa制,帧取决于视频播放的连贯性、

12. 为何基于H264而非H265

        不想写了,后续在补充吧


http://www.ppmy.cn/news/685913.html

相关文章

android直播app下载地址,g直播app官方下载安装

软件介绍 G直播是Gensee直播/教育平台的移动客户端app!首家提供播放器编辑器功能,无需编程,课堂场景自助式设计,所见即所得。提供多款直播播放器选择(纯视频、两分屏、三分屏、互动增强等),作为移动端设备参加直播的首…

官方文档中docker安装php插件xdebug

docker安装php插件 直接上代码常见问题如果查看系统类型如何查看xdebug合适的版本安装异常提示Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.configure: error: in /tmp/pear/temp/pea…

HoloLens2与Unity的Socket通信踩坑日记

最近想让Hololens中获取电脑中更新的数据,打算使用套接字的方式进行通信,明明在unity中模拟测试可以进行正常通信,但是将软件部署到HoloLens上通信总是失败,找了很久的原因,找了很久的原因,终于能够正常通信…

上证指数

上证指数(SH000001)  的全称是 上海证券交易所股票价格综合指数,是由上海证券交易所编制的股票指数,1990年12月19日正式开始发布。该股票指数的样本为所有在上海证券交易所挂牌上市的股票,其中新上市的股票在挂牌的1…

上汽荣威E50 颇有想法的纯电动产品

作为市场上一款颇有想法的纯电动产品,荣威E50的地位却略显尴尬。一来它并不在上汽集团荣威品牌的4S销售体系中,也就是说您无法在荣威4S店里见到它,二来目前它仅在上海地区销售,除非您有上海户籍的亲戚,替您买了开回去&…

Adidas、金拱门、KFC、乐天玛特,零售巨头的选址秘诀都在数据里了

导读:在当前复杂的零售环境下,选址对于零售企业而言变得格外重要,因为位置就是线下流量的直接入口。本文将从三个维度来为大家揭晓如何通过地理方法解决选址问题?融合机器学习的智能地图如何赋能商业选址? 1.0时代&…

美通企业日报 | 星巴克全球首位AI咖啡师上线;爱立信南京智能工厂投入运行...

要闻 恒隆地产位于杭州的高端综合商业项目正式开工万豪中餐厅携手美食纪录片导演陈晓卿解锁粤菜文化铁姆肯公司将以约1.65亿美元收购德国拜尔科博集团星巴克全球首位“AI咖啡师”上线爱立信南京自动化智能工厂投入运行 IT科技与互联网 浪潮云参与编制的云计算国家标准正式发布。…

联合利华在天津成立植卓肉匠亚洲研发中心;第129届广交会在云端圆满落幕 | 美通企业日报

今日看点:联合利华在天津成立植卓肉匠亚洲研发中心。第129届广交会在云端圆满落幕。雅萌官宣龚俊为青春代言人。阿斯利康与世和基因共建广州生物诊断创新中心。全球规模最大FlexFactory生产平台落地广州。复游城-太仓阿尔卑斯国际度假区主题概念全面发布。中兴通讯专…