从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32580 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

38 | 实战推演:带你实现一个支持万人同时在线的直播系统

缓冲区情况
暂停、恢复播放时间
播放时间
视频分辨率、帧率、码率
video.js
flv.js
VLC
Ijkplayer
视频采集
音频采集
视频美颜
视频预览
视频编码
音频编码
音频检测
RTMP数据传输
信令处理
观众端获取观看地址
视频流推送
CDN API操作
信令服务器控制
多家CDN网络接入
如何判断用户在播放音视频流时是否出现过卡顿?
精细统计
数据采集
费用结算
监控服务质量
Web端
PC端
移动端
播放器集成
数据统计模块
采集层
编码与展示层
传输层
功能
CDN网络
思考时间
流量统计
观众端架构
主播客户端架构
万人直播架构
实战推演:带你实现一个支持万人同时在线的直播系统

该思维导图由 AI 生成,仅供参考

本文我们将第三模块所讲的知识做一次梳理,让你在整体上了解“万人直播”到底是怎样实现的。我们将从万人直播的整体架构、主播客户端架构、观众客户端架构和流量统计这四个方面向你讲述万人直播的构建。
通过这几个方面的介绍,我想你就知道了一个真正的“万人直播”是如何构建起来的。

万人直播架构

下面这张万人直播架构图与《31 | 一对多直播系统 RTMP/HLS,你该选哪个?》一文中介绍的直播架构图很类似,它们之间最大的不同在于真正的万人直播系统中并不会只使用一家 CDN 网络,而是接入多家 CDN 网络。在使用它们时,你可以按照一定的比例将“节目”分配到不同的 CDN 网络上。
万人直播架构图
多家 CDN 网络的管理一般是由信令服务器控制的。当要接入某家 CDN 网络时,你可以通过信令服务器的注册界面进行注册。在注册界面中,一般要求填入 CDN 厂商的名字、分配比例、CDN API 操作地址等信息。
比如,当某个主播要分享一个节目时,信令服务器首先根据分配比例决定使用哪个 CDN 网络,然后获得该 CDN 网络的 API 操作地址。获取到 CDN 网络的 API 操作地址后,它就可以调用该 CDN 网络提供的 HTTP/HTTPS API 进行操作了,创建域名、生成直播地址、生成拉流地址等等。有了这些地址后,就可以将音视频流推送到 CDN 网络,观众端获取到观看地址后就可以“观看”节目了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章深入探讨了实现一个支持万人同时在线的直播系统的架构和实现细节。首先介绍了万人直播的整体架构,包括多家CDN网络的接入和管理,以及信令服务器的作用。接着详细介绍了主播客户端和观众端的架构,强调了播放器的重要性,并推荐了移动端和PC端的播放器选择。另外,文章还介绍了流量统计模块的重要性,以及如何采集数据以监控服务质量和进行费用结算。通过图文并茂的方式,生动地展现了万人直播系统的构建过程,深入浅出地介绍了技术细节,对于想要了解直播系统架构和实现细节的读者来说,是一篇非常有价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • bigeast
    看接收端两帧之间的渲染间隔,大于某个阈值就记为一次卡顿。视频间隔可以比音频大一些。

    作者回复: 对的。大大的赞!

    2020-03-21
    7
  • John
    请问老师 如果我要在APP里用webrtc做一个非视频的百人群聊功能 只使用p2p的连接 能实现么

    作者回复: 一路 640*420 的视频咱们估算是 500kbps, 那么 100 人同时与一个人通信就需要 100*500kbps, 也就是说需要 50M的带宽。而这 100 人的 NAT 类型千奇百怪。你想想这样做靠谱吗?

    2019-11-16
    2
    3
  • 神经旷野舞者
    卡顿应该是帧延迟了,可以检测没秒传了几个,和服务器对一下,不过这样感觉计算量太大

    作者回复: 目前处理卡顿的方法就是在一开始多缓冲一些数据哈!

    2019-12-18
    2
  • Jason
    我猜测,视频卡顿是因为帧数不足导致,所以可以通过统计用户播放的总帧数来统计。

    作者回复: 卡顿并不会丢帧。因为 TCP 连接,不会丢数据的。除非断连了。

    2019-10-10
    2
    2
  • piboye
    客户端直接推到多个cdn不合适吧?应该是服务端负责推送到多个cdn吧?

    作者回复: 两种方案都比较常用

    2020-12-31
    1
  • 酸橙
    老师,请教下,如果是obs推流端网络抖动或闪断导致了卡顿,有什么好的解决方案吗?是否需要建立自己的媒体中心来保障输出连续的流,通过转码中心预留的缓存自动无缝拼接,跳过中间的空挡

    作者回复: 对于推流端最好的解决办法是购买好的带宽,你只要肯花钱,运营商就可以给你提供很好的带宽。这个花费比你自己去建媒体中心花费的少的多的多

    2020-01-18
    1
  • 阳仔
    这套支持万人的直播系统,没有使用 webRTC ? 可以通过 webRTC 实现么?成本会不会较大?

    作者回复: 可以将WebRTC 与 万人直播融合到一起。这样就实现在即可以进行实时通信,又可以进行万人直播的效果。

    2019-11-03
    2
    1
  • 老师,请教下,安卓是否可以做到边下载,边转码,边播放。达到类似直播的效果。原因是我们这边反馈服务端处理可能时间很长,想把细节处理的工作放到安卓端

    作者回复: 没有这样做的。如果说服务端认为处理时间很长,那么客户端做这个事儿就更麻烦了。

    2019-10-10
    1
  • 刘丹
    请问老师在实际使用中,OBS等工具能否把同一个直播流同时推送到多个CDN?常见的开源观众客户端是否支持自动切换CDN,还是我们要改播放端的代码手工切换呢?

    作者回复: 每个 OBS客户端只能向一个 CDN 推流,主播可以开多个客户端。不过最好的方式是你在后台自己进行多个 CDN 的中转。 另外,开源客户端不支持自动切换。你要自己实现。这些都是上层逻辑,不是播放器要考虑的事儿。

    2019-10-10
    2
    1
  • Jocelyn
    老师您好 请教两个问题:1. 请问这个部分除了您在文章中罗列的 还有哪些需要记录呀?“每个用户使用 CDN 网络时必须要记录下来的信息”;2. 请问如何记录卡顿和卡顿原因呢?

    作者回复: 当缓冲区里的数据为0时就是卡断,卡顿原因都是网络问题

    2021-03-30
收起评论
显示
设置
留言
21
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部