主流Webrtc流媒体服务器之Kurento Media Server

1、 什么是Kurento Media Server前端

Kurento Media Server(KMS)是一个多媒体服务器软件包,可用于为WebRTC平台开发高级视频应用程序。Kurento是一个底层平台,可建立WebRTC应用程序,并且负责管理STUN / TURN服务器,网络,可伸缩性等。node

1.1. Kurento Media Server的特色linux

1.1.1. 模块化管道git

 

 

Kurento提供了WebRTC和RTP发送器和接收器、音视频混合器、媒体录制等构建模块。这些媒体元素是具备特定媒体功能的独立对象。经过在任什么时候间点插入,激活或停用它们,它们很是容易组成,即便介质已经在流动。github

扩展Kurento并编写本身的元素也很容易,而后能够将其与现有元素集成在一块儿!web

应用程序开发人员使用Kurento用所需的媒体元素控制所谓的媒体管道,从而有效地造成彻底定制的体系结构,以适应他们的需求。提供了一些内置模块,用于组通讯,媒体格式的代码转换以及视听流的路由。算法

Kurento能够同时实现SFU和MCU应用架构。docker

 

1.1.2. 内建模块npm

Kurento提供丰富的开箱即用的媒体元素工具集APIubuntu

  

1.1.3. JSON-RPC协议

KMS经过JSON-RPC协议公开其全部API功能,能够经过WebSocket链接直接访问。如下为三种使用状况:

  

1.2. 为何使用Kurento Media Server

Kurento Media Server(KMS)提供媒体传输、处理、录制 和回放。KMS创建在出色的GStreamer多媒体库之上,并提供如下功能:

a. 网络流协议,包括HTTP,RTP和WebRTC。

b. 支持MCU和SFU媒体混合和媒体路由与调度。

c. 对实现计算机视觉和加强现实算法的过滤器的通用支持。

d. 媒体存储支持WebM和MP4的写入操做以及GStreamer支持的全部格式的播放。

e. GStreamer支持的任何编解码器之间的自动媒体转码,包括VP8,H.264,H.263,AMR,OPUS,Speex,G.711等。

 

 

2、 什么是OpenVidu

OpenVidu是一个基于Kurento的框架,并封装了其大部分功能,以便简化WebRTC的一些最典型的使用案例,例如会议室。

使用OpenVidu的开发人员无需担忧构成典型WebRTC通讯的全部低级技术和协议。该项目的主要目标是提供一个更简单的API:仅包含OpenVidu客户端库,并使用OpenVidu Server处理媒体流,您将拥有一个功能全面的WebRTC功能的应用程序。

2.1. OpenVidu的特色

2.1.1. WebRTC视频会议

支持一对1、一对多、多对多视频会议

2.1.2. 开源

OpenVidu是根据Apache License v2许可的OpenSource的开源项目

2.1.3. 多平台

兼容Chrome,Firefox,Safari,Opera,Edge,Android,iOS,桌面应用程序

2.1.4. 使用简单

OpenVidu提供了即用型组件,您只需将其粘贴到代码中便可快速启动和运行视频通话。

2.1.5. 部署容易

OpenVidu提供Docker部署方案,只需简单几步,就能够成功部署OpenVidu

2.1.6. 提供教程/演示

OpenVidu提供许多教程和示例,对开发人员是很是友好

2.1.7. 保持视频会议的私密性

提供WebRTC加密,可确保您的全部通话都彻底私密

2.1.8. 兼允许多前端技术

支持JavaScript,TypeScript,Angular,React,Vue.js,Ionic ...您只需选择喜欢的语言和框架

2.1.9. 与任何后端技术兼容

OpenVidu提供了开箱即用的Java和Node客户端,用于控制视频通话,但它还公开了REST API以容许使用任何后端技术。

2.1.10. 使用预约义角色限制客户端功能

肯定容许哪一个用户订阅,发布或主持具备预约义角色的视频流以保护您的视频通话

2.1.11. 信息广播

您可使用OpenVidu在几行代码中实现聊天。您的应用程序可能须要任何用户到用户的基于文本的通讯,均可以轻松实现

2.1.12. 录制

彻底自由地录制视频通话:OpenVidu提供了预约义的布局,您也可使用本身的自定义布局来完成任何类型的结果

2.1.13. 屏幕共享

OpenVidu容许您的客户端共享他们的屏幕

2.1.14. 音频和视频过滤器

OpenVidu是惟一容许您应用实时音频和视频过滤器的WebRTC技术。检测条形码,设置色度键背景或放大客户端的声音只是使用OpenVidu过滤器能够实现的几个示例。

2.1.15. 网络摄像机

您可使用OpenVidu接收IP摄像机进行实时监视

 

3、 部署OpenVidu

# 安装DOCKER

$ sudo apt remove -y docker docker-engine docker.io containerd runc

$ sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

$ sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

$ sudo apt update

$ sudo apt install -y docker-ce docker-ce-cli containerd.io




# 安装DOCKER-COMPOSE

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o $ /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose




# 安装OPENVIDU

$ sudo curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_latest.sh | bash

 

4、 运行示例 Hello-world

# 安装NODE

$ sudo apt install -y nodejs npm

$ sudo npm config set registry https://registry.npm.taobao.org

$ sudo npm install n -g

$ sudo n stable




# 安装GIT

$ sudo apt install -y git




# 下载与运行Hello-world示例

$ git clone https://github.com/OpenVidu/openvidu-tutorials.git

$ npm install -g http-server

$ http-server openvidu-tutorials/openvidu-hello-world/web

 

5、 结语

到此为止,你们对Kurento Media Server的原理和使用有一个大概的认识了吧,Kurento Media Server是一个很不错的框架,它功能强大并且容易入手,本人所在公司也有产品在使用。

接下来我会讲解其它一些主流的Webrtc流媒体服务器,敬请关注。