基于mediasoup的多方通话研究(一)

基于mediasoup的多方通话研究(一)

  • mediasoup简介
  • mediasoup的特性
  • 安装mediasoup-demo
  • 本地运行Demo
  • server的配置文件
  • mediasoup的原理
  • 扩展与展望
  • 总结

mediasoup简介

mediasoup号称尖端的WebRTC的视频会议系统,官网为 https://mediasoup.org/.
安装极其简单:

npm install mediasoup
npm install mediasoup-client

从ibc开发这套系统一直跟进到最新的版本,经历了V1到V2的变迁,api从webrtc到ortc的变更,一点一点的完善,目前好评度越来越高。

有没有兴趣跟我一起学习研究这个优秀的系统呢?

需要强调一点的是:希望大家能提前对ORTC有个大概的了解。

mediasoup的特性

脱颖而出mediasoup,可以用小而美来形容她:

  1. 支持目前主流的浏览器,chrome、Firefox、safari、Edge等等。
  2. 支持UnifiedPlanSdp和PlanBSdp两种方式;
  3. ORTC的api风格调用方式,避免了WebRTC的不足,使协议更简洁;
  4. json-rpc远程调用方法,协议清晰简洁。;
  5. 增加了支持simulcast;
  6. 编码简洁、结构清晰;

纵使她很让人喜欢,但也有不尽人意的地方:

  1. 上层接口是nodejs,这个根据我们情况集成可能有麻烦(后面我们讲讲怎么解决这个问题)。
  2. 功能比较简单,后续的开发较多;

安装mediasoup-demo

首先呢找一台linux服务器吧,推荐用ubuntu,安装最新版本的npm,快速安装可参考npm最新版本安装方法。另外网速不好的同学建议修改npm源npm源修改办法。

$ git clone https://github.com/versatica/mediasoup-demo.git
$ cd mediasoup-demo
$ cd server
$ npm install
$ cp config.example.js config.js
$ cd app
$ npm install
$ npm install -g gulp-cli

本地运行Demo

$ cd server
$ node server.js
$ cd app
$ gulp live

server的配置文件

这里对于config.js 强调一点:

 //局域网访问:默认不需要修改rtcAnnouncedIPv4 : null,//公网可以访问:将rtcAnnouncedIPv4修改为公网的IP,重启server即可(仅限有公网IP的云服务器)。rtcAnnouncedIPv4 : '111.111.111.111',
 rtcMinPort       : 40000,rtcMaxPort       : 49999,

mediasoup的原理

下图举例三个Client (browser或者客户端)同时加入一个房间,每个app同时发布一路视频和一路音频,并且接受来自其他app的音视频流,mediasoup内部的结构如下:

到此为止,可能会有一个简单的了解了,这里不再细分,有兴趣的话可以私下找我交流。

扩展与展望

mediasoup作为一个SFU服务器,有着出色的性能和极小的开销,多进程负载均衡的方式让我们体会到它的强悍。美中不足的是它的信令只有nodejs接口,并不能满足所有人的胃口。庆幸的是出于对c++的情怀,我将所有的nodejs逻辑翻译成了c++版本,并且开发了对应的native客户端:

未来将加入的新功能

现献上效果图
server端(有没有熟悉的味道):

Windows Client:

Windows Client与Web互通:

**Demo下载地址: https://pan.baidu.com/s/18Nfnu_MAafFnkyzBrJnq1g 提取码: jbtu **

总结

另外附上我的Github地址https://github.com/harvestsure欢迎互粉。

转载地址:https://blog.csdn.net/gupar/article/details/83788934

基于mediasoup的多方通话研究 webRtc相关推荐

  1. 基于mediasoup的多方通话研究(一)

    基于mediasoup的多方通话研究(一) mediasoup简介 mediasoup的特性 安装mediasoup-demo 本地运行Demo server的配置文件 mediasoup的原理 扩展 ...

  2. 基于mediasoup的多方通话研究(二)

    前言 时隔多年未更新这个领域的技术博客,时间和精力在大把浪费,实属愧疚.自责之下苦研数月,将mediasoup v3的nodejs部分全部翻译成了c++语法,其中99%的保留了原汁原味的架构和设计,其 ...

  3. 【Webkit Blog翻译】深入研究WebRTC | 内有福利

    "本文译自A Closer Look Into WebRTC" 我们在最近的一篇WebKit博客中宣布了对High Sierra平台和iOS中Safari的WebRTC支持.现在, ...

  4. Android 6.0 Phone 多方通话流程

    写在前面的话 本文主要分析Voice Call多方通话的流程,分析GSM和CDMA在多方通话不同的地方,研究的代码是Android 6.0的,目前只关注framework层. 1. 多方通话的概念 下 ...

  5. 【工大SCIR笔记】多方对话研究简述

    作者:哈工大SCIR 张开颜 1 介绍 人机对话技术是人工智能领域的一个重要研究方向,从手机智能助手,到闲聊陪护型聊天机器人,再到各种面向场景的任务型对话系统平台和智能家居,人机对话系统渐渐融入人类社 ...

  6. 【Java】基于TA-Lib技术分析指标研究

    [Java]SFC融媒体项目基于TA-Lib技术分析指标研究 [Java]SFC融媒体项目基于TA-Lib技术分析指标研究 0. 前言 1. TA-Lib介绍 2. TA-Lib数据准备 2.1 指标 ...

  7. 智能电话会议系统(11)---Android 6.0 Phone 多方通话流程

    Android 6.0 Phone 多方通话流程 写在前面的话 本文主要分析Voice Call多方通话的流程,分析GSM和CDMA在多方通话不同的地方,研究的代码是Android 6.0的,目前只关 ...

  8. 多方通话中的VOIP通信原理

    多方通话中的VOIP通信原理 多方通话中Internet是由众多不同的计算机网络互连而成的,遍布世界各地,使用标准的TCP/IP相互通信和交换数据.TCP/IP将要传输的计算机数据分组排队发送,每个分 ...

  9. Phone 多方通话流程(GSM CDMA)

    写在前面的话 本文主要分析Voice Call多方通话的流程,分析GSM和CDMA在多方通话不同的地方,研究的代码是Android 6.0的,目前只关注framework层. 1. 多方通话的概念 下 ...

最新文章

  1. Week02-Java基本语法与类库
  2. 台大喊你来上课,深度学习优化,免费的哟
  3. linux nfs 配置_NFS服务器
  4. python3.7.2安装教程-CentOS 7安装Python教程
  5. 百度全面开放HTTPS之我见
  6. csdn-markdown 编辑器
  7. PyCharm安装好vim后,怎么配置.vimrc
  8. 嵌入式常见笔试题总结(4)
  9. 4个值得注意的点(先记后写)
  10. 华为云基于云原生媒体网络,又出重磅新品
  11. 项目总结13:Jav文件压缩-InputStream转化为base64-Base64解码并生成图片
  12. java编写一个方法printn_Java语言程序设计 基础篇 原书第10版 ,梁勇著 (第六章)编程练习题...
  13. Metatable让我从心认知了Lua(相知篇)
  14. c语言程序设计 朱立华 下载,C语言程序设计 教学课件 朱立华 王立柱 C语言程序设计课件第1章090909.pdf...
  15. 课题申报书范文_教师课题申报书范例
  16. 四个Python爬虫案例,带你掌握xpath数据解析方法!
  17. IBM X System ServerGuide 8.41 服务器 系统安装 引导盘图文教程
  18. 基于单片机的HC-SR04超声波模块测距仪设计(数码管显示)
  19. 深度学习与计算机视觉教程(8) | 常见深度学习框架介绍(CV通关指南·完结)
  20. 超级表格企业版:服务上万家中小企业,提升效率

热门文章

  1. 直播app源代码,验证码输入页面
  2. 最近苹果开发者支持电话更换了,再也不需要自己给苹果打电话了
  3. 夜间旅游市场发展的六大特点
  4. makefile中 -j16的含义
  5. 安全-认证授权、数据脱敏
  6. html语音输入功能讯飞,讯飞输入法中实现“语音输入”,手机代替麦克风
  7. 为什么大医院总是人山人海?他想用“虚拟病人”为医疗均衡寻找答案
  8. Maya实现实时置换效果
  9. openharmony GPIO 驱动开发
  10. C++ 对象模型初探