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

28 | 让我们一起探索Medooze的具体实现吧(下)

DTLS连接的建立过程
EventLoop模块中其他几个类的功能
poll API
poll的基本工作原理
异步I/O事件中触发写事件的条件
SFU数据包收发过程
ICE连接建立过程
异步I/O事件模型
Medooze核心组件的基本功能
Medooze的架构
推流模型
录制回放模型
Medooze的SFU模型
思考时间
本次总结
上次总结
Medooze的具体实现

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

上一篇文章中,我向你介绍了 Medooze 的 SFU 模型、录制回放模型以及推流模型,并且还向你展示了 Medooze 的架构,以及 Medooze 核心组件的基本功能等相关方面的知识。通过这些内容,你现在应该已经对 Medooze 有了一个初步了解了。
不过,那些知识我们是从静态的角度讲解的 Medooze ,而本文我们再从动态的角度来分析一下它。讲解的主要内容包括:WebRTC 终端是如何与 Meooze 建立连接的、数据流是如何流转的,以及 Medooze 是如何进行异步 I/O 事件处理的。

异步 I/O 事件模型

异步 I/O 事件是什么概念呢?你可以把它理解为一个引擎或动力源,这里你可以类比汽车系统来更好地理解这个概念。
汽车的动力源是发动机,发动机供油后会产生动力,然后通过传动系统带动行车系统。同时,发动机会驱动发电机产生电能给蓄电池充电。汽车启动的时候,蓄电池会驱动起动机进行点火。
这里的汽车系统就是一种事件驱动模型,发动机是事件源,驱动整车运行。实际上,Medooze 的异步 I/O 事件模型与汽车系统的模型是很类似的。那接下来,我们就看一下 Medooze 中的异步 I/O 事件驱动机制:
Medooze 事件驱动机制图
上面这张图就是 Modooze 异步 I/O 事件处理机制的整体模型图,通过这张图你可以发现 poll 就是整个系统的核心。如果说 EventLoop 是 Medooze 的发动机,那么 EventLoop 中的 poll 就是汽缸,是动力的发源地。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了Medooze的具体实现,从静态和动态两个角度进行了分析。文章首先比喻了异步I/O事件模型为汽车系统,引出了Medooze中的异步I/O事件处理机制。详细介绍了poll的工作原理和使用方法,以及EventLoop模块中各个类的功能及说明。接着,文章从ICE连接建立过程的动态角度展开,描述了DTLS连接的建立过程,包括参与人加入房间后的调用关系和具体连接建立过程。通过这些内容,读者可以深入了解Medooze的技术特点,包括其异步I/O事件处理机制和ICE连接建立过程。文章内容详实,适合技术人员深入学习和了解Medooze的具体实现。 在SFU 数据包收发过程中,文章详细介绍了共享者数据包流入、转发给观看者的数据流出过程,以及相关模块的处理逻辑。通过对数据包的流转过程进行简要说明,读者可以了解到Medooze服务器中的具体实现模块EventLoop的重要作用,以及对事件驱动机制的一定了解。同时,文章还介绍了DTLS连接建立过程和数据包的流转过程,使读者对Medooze的基础架构以及SFU的实现细节有了深刻的理解。 总的来说,本文通过深入解析Medooze的具体实现和技术特点,为读者提供了深入学习和了解Medooze的机会,同时也为技术人员提供了宝贵的学习资源。

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

全部留言(6)

  • 最新
  • 精选
  • 极客雷
    为什么都不用epoll,Janus也是

    作者回复: 这块确实是需要优化的点

    2021-03-26
  • Joseph
    老师介绍的非常仔细,谢谢老师!

    作者回复: 谢谢!

    2019-09-18
  • frank
    重点是介绍libmediaserver.a?mcu不介绍吗?

    作者回复: 这是medooze的核心,你可以用它实现SFU,也可以用它来实现 MCU,现在MCU应用的地方很少

    2019-09-17
    2
  • 周龙亭
    DTLS连接建立过程中,WebRTC客户端是怎么参与的?

    作者回复: 在第 30 篇文章中有介绍

    2019-09-17
  • 良师益友
    为什么不用epoll呢?

    作者回复: 这是需要优化的点!

    2019-09-17
  • 正平
    异步IO触发写时间的时机: 当本端收到对方发送的ACK确认包后 删除了本端的一些数据,或者 socket 的写缓冲区也就是writebuffer 可用空间大于设置的低水位(默认是1B),就会标记fd的 POLLOUT标记,下次epoll或者poll轮询的时候,会返回用户可写事件。
    2020-05-19
    1
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部