从0打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
立即订阅
2827 人已学习
课程目录
已完结 40 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 5G的到来将会为音视频插上飞翔的翅膀
免费
WebRTC 1对1通话 (23讲)
01 | 原来通过浏览器访问摄像头这么容易
02 | 如何通过WebRTC进行音视频设备检测呢?
03 | 如何使用浏览器给自己拍照呢?
04 | 可以把采集到的音视频数据录制下来吗?
05 | 原来浏览器还能抓取桌面?
06 | WebRTC中的RTP及RTCP详解
07 | 你竟然不知道SDP?它可是WebRTC的驱动核心!
08 | 有话好商量,论媒体协商
09 | 让我们揭开WebRTC建立连接的神秘面纱
10 | WebRTC NAT穿越原理
11 | 如何通过Node.js实现一套最简单的信令系统?
12 | RTCPeerConnection:音视频实时通讯的核心
13 | 在WebRTC中如何控制传输速率呢?
14 | 如何打开/关闭音视频?
15 | WebRTC中的数据统计原来这么强大(上)
16 | WebRTC中的数据统计原来这么强大(下)
17 | 如何使用Canvas绘制统计图表(上)?
18 | 如何使用Canvas绘制统计图表(下)?
19 | WebRTC能不能进行文本聊天呢?
20 | 原来WebRTC还可以实时传输文件?
21 | 如何保证数据传输的安全(上)?
22 | 如何保证数据传输的安全(下)?
23 | 实战演练:通过WebRTC实现一个1对1音视频实时直播系统
WebRTC多人音视频实时通话 (7讲)
24 | 多人音视频实时通讯是怎样的架构?
25 | 那些常见的流媒体服务器,你该选择谁?
26 | 为什么编译Medooze Server这么难?
27 | 让我们一起探索Medooze的具体实现吧(上)
28 | 让我们一起探索Medooze的具体实现吧(下)
29 | 如何使用Medooze 实现多方视频会议?
30 | 实战演练:通过WebRTC实现多人音视频实时互动直播系统
支持上万人同时在线的直播系统 (8讲)
31 | 一对多直播系统RTMP/HLS,你该选哪个?
32 | HLS:实现一对多直播系统的必备协议
33 | FLV:适合录制的多媒体格式
34 | 如何使用Nginx搭建最简单的直播服务器?
35 | 如何构建云端一对多直播系统?
36 | 如何使用 flv.js 播放 FLV 多媒体文件呢?
37 | 如何使用 video.js 播放多媒体文件?
38 | 实战推演:带你实现一个支持万人同时在线的直播系统
结束语 (1讲)
结束语 | 路漫漫其修远兮,吾将上下而求索
从0打造音视频直播系统
登录|注册

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

李超 2019-09-19
前面我们通过两篇文章详细介绍了 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0打造音视频直播系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

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

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

    2019-11-14
    1
  • Hadooper
    不管用ubuntu18还是centos7,用12的nodejs怎么编译都失败,完全没办法

    作者回复: 报什么错呢?

    2019-11-25
  • 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
    1
  • Jason
    老师好,咱们搭建的medooze的demo能承担多少用户的负载?另外,sfu架构图有个别单词拼写错误,白璧微瑕^^

    作者回复: 单台500人,主要还和你的带宽有很大关系。SFU架构图我更新一下,抱歉!抱歉!

    2019-09-25
  • accessory
    /home/toney/source/sfu/lib/Room.js:59
    this.activeSpeakerDetector = MediaServer.createActiveSpeakerDetector();
    ^

    TypeError: MediaServer.createActiveSpeakerDetector is not a function
        at new Room (/home/toney/source/sfu/lib/Room.js:59:44)
        at WebSocketServer.ws.on (/home/toney/source/sfu/index.js:116:10)
        at WebSocketServer.emit (events.js:198:13)
        at WebSocketServer.handleUpgrade (/home/toney/source/sfu/node_modules/websocket/lib/WebSocketServer.js:213:14)
        at Server.emit (events.js:198:13)
        at onParserExecuteCommon (_http_server.js:553:14)
        at onParserExecute (_http_server.js:499:3)

    按照课程中搭建了服务,使用浏览器访问服务,输入 roomid,name,点击 ready 按钮,sfu 就 crash 了,请问老师改如何解决

    作者回复: 进入到 sfu,重新执行npm install 看看会报错吗

    2019-09-21
    1
  • frank
    不懂nodejs,大致看了下,应该是participant.on('stream' 这边,但是stream怎么触发就不知道了

    作者回复: 再仔细看看代码哈,这个知识点非常关键!

    2019-09-19
收起评论
6
返回
顶部