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

29 | 如何使用Medooze 实现多方视频会议?

共享音视频数据
采集音视频数据
音频设备选择
房间的登录
WebSocket信令及业务管理
Node.js中的 Web 服务器(WWW)
加入房间
音量进度条
Audio Device
Room Id 和 Name
启动服务
生成自签名证书文件
安装 SFU 依赖的所有包
下载 SFU 代码
Participator 类
Room 类
客户端
服务端的处理逻辑
多方音视频会议登录界面
SFU 项目环境搭建步骤
入会流程
SFU 逻辑处理
SFU 架构
SFU 目录结构
多方音视频会议环境的搭建
思考时间
如何使用Medooze 实现多方视频会议?

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

前面我们通过两篇文章详细介绍了 Medooze 的实现逻辑,我相信你现在已经对 Medooze 有了非常深刻的认知。通过对 Medooze 实现原理和架构的了解,我们可以知道 Medooze 支持的功能非常多,如录制回放、推流、SFU 等,其中最主要的功能是 SFU 的实现。
实际上,我们要实现的多方音视频会议就是由 SFU 来实现的,或者你可以认为 Medooz 实现的 SFU 就是一个最简单的音视频会议系统。Medooze 提供的 SFU Demo 的地址为:https://github.com/medooze/sfu
由于 SFU 是一个 Node.js 项目,所以在环境部署、源码分析的时候,需要你有 JavaScript 基础,也需要掌握 NPM 和 Node 的常用命令,比如 npm install 等。接下来,我们主要从以下几方面向你介绍一下多方音视频会议(SFU)项目:
搭建多方音视频会议系统,让你感受一下多方通信;
分析多方音视频会议实现的架构;
分析 Medooze API 的具体使用;
分析多方音视频会议的入会流程。

多方音视频会议环境的搭建

多方音视频会议(SFU)项目是纯 Node.js 实现的,可以说在目前所有的操作系统上都可以运行。然而,由于该系统依赖 medooze-media-server 项目,而该项目仅支持 macOS X 和 Linux 两种操作系统,所以 SFU 项目也只能在 macOS X 和 Linux 这两种操作系统下运行了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用Medooze实现多方视频会议。首先,通过搭建多方音视频会议系统的环境,让读者感受多方通信的过程。然后,分析了多方音视频会议的实现架构,包括SFU目录结构和架构图。接着,详细分析了Medooze API的具体使用和多方音视频会议的入会流程。文章还介绍了SFU的逻辑处理,包括服务端的Room和Participator类的抽象,以及客户端的sfu.js实现逻辑。通过本文的介绍,读者可以快速了解Medooze实现多方视频会议的原理和架构,以及搭建多方音视频会议系统的具体步骤和实验环境。文章还提出了思考题,引发读者对多人视频会议中新加入者的视频流如何被其他参会人看到的思考。整体而言,本文深入浅出地介绍了Medooze SFU的基本架构、逻辑处理、入会流程等,对于想要深入了解Medooze的读者来说,是一篇具有指导意义的文章。

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

全部留言(24)

  • 最新
  • 精选
  • Her later
    大佬 您好 : offer 和 answer 都是客户端自己创建的 ,那RTCPeerConnection 怎么知道要把流推到自己的中转服务器呢 。 服务器的配置信息是怎么得到的呢 ,是否offer和answer发送到信令服务器后 ,信令服务器对其进行了封装?

    作者回复: 服务端也是一个webrtc 客户端呀

    2021-04-16
    2
  • 张昌海185
    老师好,有个问题搞不清楚,就是sfu模式中多人通话,接收着怎么判断收到的媒体数据,是哪一个用户发出的呢?

    作者回复: 你看一下 SDP 那篇文章,里边有 SSRC,就是用这个来区分

    2020-11-16
    2
  • 大魔王
    老师,这个和之前的medooze-server-node 区别是什么啊

    作者回复: medooze demo属于应用层,medooze-server-node是基础库,medooze demo 使用 meddoze-server-node 实现多人通信。

    2019-11-14
    1
  • No
    /src/media-server_wrap.cxx: At global scope: ../src/media-server_wrap.cxx:909:7: error: ‘Handle’ in namespace ‘v8’ does not name a template type v8::Handle<v8::Value> err; ^ ../src/media-server_wrap.cxx: In member function ‘virtual void OverloadErrorHandler::error(int, const char*)’: ../src/media-server_wrap.cxx:904:5: error: ‘err’ was not declared in this scope err = v8::Exception::Error(SWIGV8_STRING_NEW(msg)); 老师,我 npm install 的时候报错了。 这是nodejs 版本问题吗? 我的版本 node -v v12.13.0 node-gyp -v v5.0.5 系统是 Ubuntu 16.04

    作者回复: 应该是 npm 版本的问题, 我这里的 npm 版本是 6.4.1

    2019-10-29
    5
    1
  • 阿良
    老师你好,我搭建medooze之后,服务顺利跑起来了,但是只能看到自己的图像,而没法看到其他人的。我调试发现他们的video的id编码不一致,想往这方面调试,但是在评论区没看到小伙伴有这样的问题,所以想跟老师请教下,我遇到的这个问题有可能是什么引起的?如有可能,能否提供测试可以正常使用的demo,感谢~

    作者回复: 你的服务器部署在自己本机吗?

    2021-04-26
    2
  • 会飞的猪
    老师,用medooze录制的mp4视频不能播放,您有遇到过吗? const recorder = MediaServer.createRecorder (ts +".mp4",{ refresh : 1000, timeShift : 6000, disableHints : true, waitForIntra: true }); recorder.record(incomingStream);

    作者回复: Medooze 录制出的应该是mp4v2 普通播放器放不了,你要用它提供的工具转一下

    2020-12-09
  • 张一画
    老师 我有一些不太理解 这一课里面的HTTPS证书为什么是自己生成 我记得您之前说必须是权威机构发布的证书

    作者回复: 证书有两个,一个是用于发布http客户端的证书;另一个是medooze自己传数据用的证书; 对于浏览器来说,必须用权威机构发布的,而medooze可以用自定义的。

    2020-10-06
  • Geek_sky
    老师,我这边连接的时候遇到这个问题: VM479:1 Uncaught DOMException: Failed to execute 'createEncodedVideoStreams' on 'RTCRtpSender': Encoded video streams not requested at PC initialization at eval (eval at ws.onopen (https://192.168.50.150:8084/js/sfu.js:264:36), <anonymous>:1:8) at WebSocket.ws.onopen (https://192.168.50.150:8084/js/sfu.js:264:36) 我换了createEncodedStreams,也不行。这是什么问题?chrome是不是需要设置什么?

    作者回复: 这是你自己的程序还是 demo报的错?

    2020-09-06
    3
  • sam
    跑起来后到页面加入房间,点ready后页面刷新一下还是弹窗让加入房间是什么情况,貌似也找不到log

    作者回复: 可以打开浏览器的dev tools 看一下报啥错了

    2020-07-10
    2
  • 行所当行
    老师你好,在客户端的chrome打开index.html,提示: Your browser does not support insertable streams,chrome版本83.0.4103.61(正式版本)(64位),这个是浏览器版本问题吗?

    作者回复: “insertable streams”,是最近的 端到端 加密技术,这个提示就你是chrome不支持,但不应该影响你正确的通话才对。

    2020-06-04
    8
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部