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

30 | 实战演练:通过WebRTC实现多人音视频实时互动直播系统

RTP音视频消息处理
DTLS握手
STUN消息处理
IncomingStream/OutgoingStream
media-server
media-server-node
update信令作用
音视频数据传输
媒体协商
数据采集
用户加入房间
WebSocket连接建立
创建RTCPeerConnection对象
网络质量监控
数据安全机制
DTLS-ICE连接建立
SDP信息交换
join信令处理
WebSocket连接
HTTP/HTTPS请求
音视频流数据转发能力
WebSocket服务
HTTP/HTTPS的WWW服务
Medooze使用STUN/DTLS等协议的原因
阅读Medooze源码建议
Medooze实现多方通信的全局理解
数据包时序图
媒体服务器
SFU逻辑处理
WebSocket服务
WebRTC客户端流程图
WebRTC客户端与Medooze交互过程
服务端功能
Medooze服务器总结
WebRTC客户端说明
多人音视频会议整体结构
思考时间
小结
服务端架构图
Medooze整体架构
Medooze实现多人音视频互动
实战演练:通过WebRTC实现多人音视频实时互动直播系统
参考文章

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

关于通过 WebRTC 实现多人音视频实时互动的实战,其实我们在上一篇文章中已经向你做过详细介绍了,其中包括如何编译 Medooze 源码、如何将编译出的 Medooze SFU 进行布署,以及如何去使用等相关的内容。
那么今天我们再从另外一个角度来总结一下 Medooze 是如何实现多人音视频互动的。
下面我们就从以下三个方面向你做一下介绍:
首先是多人音视频会议整体结构的讲解,这会让你从整体上了解利用 Medooze 搭建的流媒体服务器与 WebRTC 客户端是如何结合到一起运转的;
其次再对 WebRTC 客户端进行说明,你将知道无论是 Medooze 还是使用其他的流媒体服务器,对于客户端来讲它的处理流程基本是不变的;
最后是 Medooze 服务器的总结,让你了解 Medooze 各模块是如何协调工作的,实际上这部分知识我们在之前的文章中已经做过介绍了,但为了让你对它有更深刻的认识,这里我们还会从另外一个角度再重新剖析。

Medooze 整体架构

文中接下来这张图清晰地展示了 Medooze 是如何实现多方通信的,你可以先参考下:
Medooze 多方通信整体结构图
从这张图你可以看到,它主要分成两大部分:服务端客户端。下面我们就从这两个方面向你详细描述一下 Medooze 实现多方通信的过程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC多人音视频实时互动直播系统的实现是一项复杂而重要的技术挑战。本文详细介绍了Medooze多方通信整体结构,从服务端和客户端两个方面展开。服务端提供了HTTP/HTTPS的WWW服务,WebSocket服务用于信令通信,以及音视频流数据转发的能力。客户端通过HTTP/HTTPS请求获取浏览器可运行的JavaScript代码,与Node.js服务器建立WebSocket连接,并发送join信令到服务端。随后,客户端与服务端通过WebSocket通道交换SDP信息,建立DTLS-ICE连接。连接建立后,客户端与服务器之间建立安全机制,实现音视频数据传输。在音视频数据传输过程中,双方对网络进行监控,通过RTCP协议上报网络质量信息。对于多人音视频互动,每个加入会议的人都要执行相同的逻辑。Medooze通过服务端和客户端的协作,实现了多人音视频互动的功能。WebRTC客户端在多方通信中的基本处理逻辑包括创建RTCPeerConnection对象,建立WebSocket连接,进行信令通信,音视频数据采集,媒体协商,以及音视频数据传输。服务端由WebSocket服务、SFU逻辑处理以及媒体服务器组成,媒体服务器包括media-server-node和media-server。Medooze使用STUN/DTLS等协议是为了实现安全的音视频数据传输,而且这些协议是必要的,不能省略。本文为读者提供了全面的技术细节,帮助他们快速了解WebRTC实现多人音视频实时互动直播系统的工作原理。

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

全部留言(12)

  • 最新
  • 精选
  • 卖藥郎
    老师JAVA系应该挑选哪个框架呀

    作者回复: 作为流媒体服务器来说还没有用纯java做的,有的流媒体服务器也是上层用java进行管理,底层用 JNI 调用的 C/C++库。所以,如果你想做流媒体服务器的话, C/C++是你必须要过的关!

    2019-11-16
    3
    5
  • gonbcs
    老师,多路视频如何区分的?比如在多人视频中,每个人有一个摄像头、一个桌面共享,该如何区分从远端传过来的流是摄像头还是桌面共享?

    作者回复: 每路音视频都有一个ssrc的唯一标识,通过它就可以区分出来。你通过查看SDP可以看到它们

    2020-09-22
    1
  • 王乐
    多看几遍,实际操作一下,再结合平时实践才有了深刻理解,老师的总结很不错

    作者回复: 谢谢!

    2019-10-28
    1
  • Her later
    那如何解决这个问题呢?解决的办法就是每当有新的用户进来之后,就通过 update 信令通知已经在房间内的所有用户,让它们重新与服务器进行媒体协商。重新协商后,所有老用户就可以收到了新用户的视频流了。 也就是每次重新媒体协商 ,都需要将房间里所有的音视频流和rtcpeerconnection 进行绑定 ? 能不能单独绑定新进来的一个呢 ?

    作者回复: 必须按webrtc 的协议来

    2021-05-12
  • Jackson
    STUN可以不用,DTLS是为了传输安全,通常必须用。

    作者回复: STUN不用的话,双方如何知道对方的外网IP地址的呢?

    2019-12-09
  • Geek_bang
    请问有native的demo嘛?想学习下native是怎么调用的

    作者回复: 这个还没有出,计划到 2020年出来。可以关注我的简书 https://www.jianshu.com/u/4c2c6ad6baff

    2019-10-22
    2
  • 阿蒙
    老师,请问流媒体服务器怎么做压力测试,计算一台服务器支持多少用户,有没有什么方便的工具?

    作者回复: 可以使用ffmpeg向媒体服务器推流进行压测。多找几台机子,开多个进程向媒体服务器推流就好了。

    2019-10-10
  • 相见恨晚
    这个多人视频提供可运行代码吗

    作者回复: 可以的!你按文中的步骤操作即可!

    2019-09-27
  • Derek
    实现p2p和媒体数据加密传输不是都得用吗?

    作者回复: 不是,没说到关键点

    2019-09-21
  • STUN协议是为了进行身份验证,DTLS是为了实现加密传输,都是实现音视频安全传输的手段,不能少
    2022-07-03
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部