流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

这篇具有很好参考价值的文章主要介绍了流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

正文

一、简单介绍

二、关键特色

1. 超强 SFU 功能

2. Node.js 模块

3. 客户端 SDK

三、架构组成

1. 关键实例

2. 重要模块

四、发展现状


https://liuzhen.blog.csdn.net/article/details/115603863https://liuzhen.blog.csdn.net/article/details/115603863

前言

最近收看了一期微软(中国)关于云原生、大数据、AI 领域的开源服务创新的线上圆桌论坛,感觉收获颇丰。众所周知,随着云原生、大数据和 AI 领域的快速发展,各领域之间的技术融合和相互驱动也越来越明显,开源服务无疑是其中最核心的组件。

正文

本次圆桌论坛邀请了三位技术大咖,其中一位是百家云集团流媒体高级研发工程师 ,刘振老师。刘老师是一位优秀的音视频专家,在公司主要负责音视频 QoE 相关的研发工作。他分享中介绍到了一个云原生应用——开源流媒体服务 MediaSoup ,今天主要就给大家科普一下 MediaSoup。

一、简单介绍

Mediasoup 官网对其的定位和评价还是非常高的:Cutting Edge WebRTC Video Conferencing,意思是顶尖的 WebRTC 视频会议产品。

官网地址:https://mediasoup.org/

流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

仓库地址:https://github.com/versatica

流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

二、关键特色

1. 超强 SFU 功能

凭借丰富的功能和灵活性,SFU 模式广泛应用在多方会议或者类似场景,正在逐步取代更加消耗资源的 MCU 模式。

2. Node.js 模块

Mediasoup 并不是创建了一个固定的单体服务,而是一个 Node.js 模块,可以集成到更大的应用程序中,也可以独立运行,具备非常灵活的移植能力。

3. 客户端 SDK

Mediasoup 还提供了强大的 JS SDK,通过统一的 API 接口可以在任意浏览器上非常简单的构建出视频会议应用。

三、架构组成

Mediasoup 有一张非常经典的架构图,如下图所示:

流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

1. 关键实例

上图涉及了三个关键实例,分别是 Worker、Router、Transport。其中,一个 Worker 代表一个运行在单核 CPU 上并处理 Router 实例的 MediaSoup C++ 子进程;Router 的作用是用于注入、选择和转发通过 Transport 实例创建的媒体流,包括音频流、视频流;Transport 是客户端与 MediaSoup Router 连接的桥梁,并通过在其上创建的 Producer 和 Consumer 实例实现双向媒体传输。

主要包括 4 种 Transport:WebRtcTransport、PlainRtpTransport、PipeTransport、DirectTransport。其中,WebRtcTransport 主要用于浏览器之间的或者浏览器与其他终端进行通讯的,这种传输数据一般是进行加密的,为了保证数据安全,它有很多安全机制,安全机制较为复杂;PlainRtpTransport 用于普通或者自定义的 RTP 数据传输;PipeTransport 用于不同 Worker 的 Router 之间的数据传输;DirectTransport 用于 JS 层与底层 Worker 之间的信令和数据交互。

2. 重要模块

但是,这张图主要描述了媒体数据在服务器侧的流转过程,没有更好体现出 WebRTC C/S 架构的特点,因此,自己更喜欢网上的这张图,它让 PeerConnection 与 Consumer 和 Producer 的关系更加明确。

流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

 在上图中,每个 WebRTC 客户端 Client 都会创建两个 Peerconnection,分别用于发送和接受媒体流,发送 PC 用于发送 LocalStream,其中包含了本地的 VideoTrack 和 AudioTrack,接收 PC 用来接受来自其他 Client 的 RemoteStream。同时,Room 会在流媒体服务器侧为每个 Client 创建一个 Peer,Peer 管理两个 Transport 用于接受 Client 的媒体流和向 Client 发送媒体流。

接下来,介绍一下 Peer 的作用。Peer 为对应的 Client 发送的 VideoTrack 和 AudioTrack 分别创建一个 Producer(一共是2个),Peer 也会为 Client 接收的 VideoTrack 和 AudioTrack 分别创建一个 Consumer(一共是2个)。其中,Producer 将媒体数据发送给每一个订阅者 Consumer,Consumer 表示一个被 MediaSoup Router 转发到客户端的音频流或者视频流。

下面再详细的介绍一下 Consumer,Consumer 根据功能划分可以分为四种,分别是 SimpleConsumer、PipeConsumer、SvcConsumer、SimulcastConsumer。其中,SimpleConsumer 是普通 RTP 数据的消费者,是一种最简单的 Consumer,音视频和视频流的都一样,没有类型区分;PipeConsumer 是不同 Worker 的 Router 之间的数据流转,表示接收或者消费从另外一个 Worker 中的 Router 传过来的数据;SvcConsumer 是处理和消费多层数据,传输时一般分为3层(核心层、拓展层、边缘层);SimulcastConsumer 是处理大小流的媒体数据。

流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

四、发展现状

目前看来,MediaSoup 是一个很有前途的项目。最近几年,使用 MediaSoup 的用户数量正在快速增长,而且 Kurento 技术团队自己也开始使用 MediaSoup 代替自己原来的架构方案,貌似也为我们指明了方向,哈哈,技术方案没有绝对,具体因人而异,因公司而不同。通过对 MediaSoup 的了解,发现其设计巧妙,扩展性强,非常推荐大家把它作为云原生领域的流媒体服务器。


作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一名典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄文章来源地址https://www.toymoban.com/news/detail-408800.html

到了这里,关于流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 流媒体服务器与视频服务器有什么区别?

    流媒体服务器与视频服务器有什么区别? 流媒体服务器用在远程教育,视频点播、网络电台、网络视频等方面。 直播过程中就需要使用流媒体服务器,一个完整的直播过程,包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放等过程,流媒体服务器主要负

    2024年02月11日
    浏览(41)
  • 搭建家庭影音媒体中心 --公网远程连接Jellyfin流媒体服务器

    转载自远程穿透的文章:【智能家居】Home Assistant入门安装并内网穿透实现远程安全控制 Home Assistant(以下简称HA)是个开源的智能家居平台,也叫家庭助手,就像一个软件,比如我们的QQ软件,微信软件。 Home Assistant把家中的智能家居设备整合到HA中,它能够接入的设备非常的

    2024年02月01日
    浏览(58)
  • 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放

    目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。 1、SRS GitHub - ossrs/srs: SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. 2、EasyDarwin https://github.com/EasyDarwin/EasyDarwin 3、Monibuca Monibuca ·

    2023年04月16日
    浏览(56)
  • FFmpeg 的使用与Docker安装流媒体服务器

    本文阐述的均为命令行的使用方式,并不牵扯FFmpeg 的 C++音视频开发内容,补充一句,C++的资料真的少,能把C++学好的人,我真的是觉得巨佬。 我主要是使用FFmpeg 推流方面的知识,案例大都是靠近这方面。 一、FFmpeg 介绍 本文读者会比较小众~ 看到此文的朋友,大概率是需要

    2024年01月17日
    浏览(55)
  • ZLMediaKit流媒体服务器 RTSP推流时候的堆栈

    先直接看图 这是ffmpeg向流媒体服务器推流时候的堆栈 引入C++ 11之后  堆栈会显得特别繁复冗余 看起来 也没有 以前没有C++11之前那样 简单明了   太复杂了 标记下  很多函数名字被我改了 因为原来的看起来 同名函数太多了 C++11 和lambada 匿名函数 让看堆栈 成了地狱模式 

    2023年04月20日
    浏览(53)
  • SRS流媒体服务器——Forward集群搭建和源码分析

    Forward集群原理 RTMP流转发(Forward)部署实例 Forward集群源码分析 Forward 表示向前、前头的、发送等意思。 在SRS中可以理解为把Master节点获得直播流⼴播(转发)给所有的Slave节点,master节点由多少路直播流,那么在每个slave节点也会多少路直播流。 注:在SRS中还有另外⼀种集

    2023年04月11日
    浏览(97)
  • 使用nginx部署rtmp流媒体服务器完成直播推流

    笔者为了开发方便使用windows系统的Nginx进行配置。 下载Nginx http://nginx-win.ecsds.eu/download/ 在windows版本下只有个别的几个版本才支持rtmp服务,本文选择版本 nginx 1.7.11.3 Gryphon.zip 解压下载zip文件 在conf文件夹中找到 nginx-win.conf 配置我们所需要的内容 rtmp是adobe基于flash开发的音视频

    2024年02月15日
    浏览(45)
  • 网络摄像头-流媒体服务器-视频流客户端

    当涉及交通事件检测算法和摄像头视频数据处理时,涉及的代码案例可能会非常复杂,因为这涉及到多个组件和技术。以下是一个简单的Python代码示例,演示如何使用OpenCV库捕获摄像头视频流并进行实时车辆检测,这是一个常见的交通事件检测任务。请注意,这只是一个入门

    2024年02月09日
    浏览(62)
  • 华为云云耀云服务器L实例评测|部署个人音乐流媒体服务器 navidrome

    云服务器是现代应用程序部署的理想选择。首先,云服务器提供了高度可扩展性,您可以根据需求灵活地增加或减少计算资源,这有助于节省成本和应对流量波动。其次,云服务器具备高可用性,数据备份和冗余使您的应用程序更加稳定,降低了停机时间。此外,云服务器还

    2024年02月07日
    浏览(46)
  • 9步实现 Docker部署 SRS rtmp/flv流媒体服务器

    这是基于centos7.6系统部署的 运行容器会直接停留在容器运行界面,通过Ctrl+P+Q可后台形式退出容器 这时候其实已经运行成功!可以通过以下命令查看SRS控制台 进入/home/docker/srs3 可查看配置文件是否复制成功 这是可能会报错: 因为步骤四我们意见运行一个容器,已经使用过

    2024年02月15日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包