从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打造音视频直播系统
登录|注册

26 | 为什么编译Medooze Server这么难?

李超 2019-09-12
上一篇文章中,我们对 Licode、Janus、Mediasoup 以及 Medooze 四个 WebRTC 开源流媒体服务器的实现进行对比,对于想研究音视频多方会议、录制回放、直播等流媒体技术的开发人员来说,Medooze 是很好的选择。因为它支持所有这些功能,通过它的源码及其 Demo 就可以对 Medooze 进行深入学习了。
从本文开始,在接下来的四篇文章我会向你详细讲述 Medooze 的架构、实现以及应用。而本文主要介绍 Medooze 是如何编译和构建的。
也许你会觉得 Linux 下的程序编译有什么可讲的呢,直接在 Linux 系统下执行一下 build 命令不就行了,还需要专门理解系统的编译过程和构建工具的使用吗?实际上,根据我多年的工作经验来看,理解项目的编译过程、熟悉各种构建工具的使用是非常有必要的。下面我就举几个例子,通过这几个例子,我想你就会对它们有一个深刻感悟了。
第一个例子,伴随着技术的飞速发展,构建工具也有了很大的变化,从最早的手动编写 Makefile,逐渐过渡到使用 Autotools、CMake、GYP 等构建工具来生成 Makefile,这些构建工具可以大大提高你的工作效率。比如,通过 Andorid Studio 创建 JNI 程序时,在 Android Studio 底层会使用 CMake 来构建项目,你会发现使用 CMake 构建 JNI 非常方便。然而像 Chrome 浏览器这种大型项目也用 CMake 构建就很不合适了,因为 Chrome 浏览器的代码量巨大,使用 CMake 构建它会花费特别长的时间(好几个小时),为了解决这个问题 Chrome 团队自己开发了一个新的构建工具,即 GYP,来构建这种大型项目,从而大大提高了构建的效率。由此可见,不同的项目使用不同的构建工具对开发效率的提升是巨大的。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0打造音视频直播系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • 抹染流年听风
    gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/10.14.1"
    gyp WARN EACCES attempting to reinstall using temporary dev dir "/node_modules/medooze-media-server/.node-gyp"
    gyp WARN install got an error, rolling back install
    gyp WARN install got an error, rolling back install
    gyp ERR! configure error
    gyp ERR! stack Error: EACCES: permission denied, mkdir '/node_modules/medooze-media-server/.node-gyp'
    gyp ERR! System Linux 3.10.0-693.2.2.el7.x86_64
    gyp ERR! command "/usr/local/node/bin/node" "/usr/local/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure"
    gyp ERR! cwd /node_modules/medooze-media-server
    gyp ERR! node -v v10.14.1
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN enoent ENOENT: no such file or directory, open '/package.json'
    npm WARN !invalid#1 No description
    npm WARN !invalid#1 No repository field.
    npm WARN !invalid#1 No README data
    npm WARN !invalid#1 No license field.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.2 (node_modules/fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! medooze-media-server@0.81.1 install: `test -f build/Release/medooze-media-server.node || (node-gyp configure && node-gyp rebuild --jobs=max)`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the medooze-media-server@0.81.1 install script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    npm ERR! A complete log of this run can be found in:
    npm ERR! /root/.npm/_logs/2019-12-11T03_40_52_436Z-debug.log
    2019-12-11
  • 一支箭💯¹⁰²⁴
    golang 版本的 编译后执行报
    # github.com/notedit/media-server-go/wrapper
    /usr/local/lib/libsrtp2.a(hmac_ossl.o):在函数‘srtp_hmac_dealloc’中:
    hmac_ossl.c:(.text+0xd9):对‘HMAC_CTX_free’未定义的引用
    /usr/local/lib/libsrtp2.a(hmac_ossl.o):在函数‘srtp_hmac_alloc’中:
    hmac_ossl.c:(.text+0x223):对‘HMAC_CTX_new’未定义的引用
    collect2: error: ld returned 1 exit status

    作者回复: 这你需要问五media-server-go 的作者哈

    2019-10-29
  • 一支箭💯¹⁰²⁴
    Media-server-go这个项目有什么教程吗?

    作者回复: 没有,你可以到网上搜索我的 mediasoup的课程

    2019-10-29
  • Geek_bang
    执行npm install medooze-media-server --save 有遇到这个问题嘛?
    npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
    npm WARN notsup Not compatible with your operating system or architecture: fsevents@2.1.1
    npm WARN enoent ENOENT: no such file or directory, open '/root/workspace/Medooze/test/package.json'
    npm WARN test No description
    npm WARN test No repository field.
    npm WARN test No README data
    npm WARN test No license field.
    npm ERR! Linux 4.15.0-20-generic
    npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "medooze-media-server" "--save"
    npm ERR! node v8.10.0
    npm ERR! npm v3.5.2
    npm ERR! path /root/workspace/Medooze/test/node_modules/.staging/@types/prop-types-51921f0d
    npm ERR! code ENOENT
    npm ERR! errno -2
    npm ERR! syscall rename

    npm ERR! enoent ENOENT: no such file or directory, rename '/root/workspace/Medooze/test/node_modules/.staging/@types/prop-types-51921f0d' -> '/root/workspace/Medooze/test/node_modules/tap/node_modules/@types/prop-types'
    npm ERR! enoent ENOENT: no such file or directory, rename '/root/workspace/Medooze/test/node_modules/.staging/@types/prop-types-51921f0d' -> '/root/workspace/Medooze/test/node_modules/tap/node_modules/@types/prop-types'
    npm ERR! enoent This is most likely not a problem with npm itself
    npm ERR! enoent and is related to npm not being able to find a file.
    npm ERR! enoent

    npm ERR! Please include the following file with any support request:
    npm ERR! /root/workspace/Medooze/test/npm-debug.log

    作者回复: 应该是你check 的分支不对。这类问题你可以直接在github上向作者提问或者在github原来的问题中找到答案

    2019-10-24
    2
  • Jason
    很赞,不但能学到视频知识,还熟悉了很多工具

    作者回复: 谢谢!

    2019-09-22
  • helloa
    medooze支持手机吗?

    作者回复: medooze是WebRTC流媒体服务器, 所有使用 WebRTC的终端都可以与它进行连接

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