天天看點

主流Webrtc流媒體伺服器之Kurento Media Server

作者:效能IT哥

一、 什麼是Kurento Media Server

Kurento Media Server(KMS)是一個多媒體伺服器軟體包,可用于為WebRTC平台開發進階視訊應用程式。Kurento是一個底層平台,可建立WebRTC應用程式,而且負責管理STUN / TURN伺服器,網絡,可伸縮性等。

1.1. Kurento Media Server的特點

1.1.1. 子產品化管道

主流Webrtc流媒體伺服器之Kurento Media Server

Kurento提供了WebRTC和RTP發送器和接收器、音視訊混合器、媒體錄制等構模組化塊。這些媒體元素是具有特定媒體功能的獨立對象。通過在任何時間點插入,激活或停用它們,它們非常容易組成,即使媒體已經在流動。

擴充Kurento并編寫自己的元素也很容易,然後可以将其與現有元素內建在一起!

應用程式開發人員使用Kurento用所需的媒體元素控制所謂的媒體管道,進而有效地形成完全定制的體系結構,以适應他們的需求。提供了一些内置子產品,用于組通信,媒體格式的代碼轉換以及視聽流的路由。

Kurento可以同時實作SFU和MCU應用架構。

1.1.2. 内模組化塊

Kurento提供豐富的開箱即用的媒體元素工具集API

主流Webrtc流媒體伺服器之Kurento Media Server

1.1.3. JSON-RPC協定

KMS通過JSON-RPC協定公開其所有API功能,可以通過WebSocket連接配接直接通路。以下為三種使用情況:

主流Webrtc流媒體伺服器之Kurento Media Server

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等。

主流Webrtc流媒體伺服器之Kurento Media Server

二、 什麼是OpenVidu

OpenVidu是一個基于Kurento的架構,并封裝了其大部分功能,以便簡化WebRTC的一些最典型的使用案例,例如會議室。

使用OpenVidu的開發人員無需擔心構成典型WebRTC通信的所有低級技術和協定。該項目的主要目标是提供一個更簡單的API:僅包含OpenVidu用戶端庫,并使用OpenVidu Server處理媒體流,您将擁有一個功能全面的WebRTC功能的應用程式。

2.1. OpenVidu的特點

2.1.1. WebRTC視訊會議

支援一對一、一對多、多對多視訊會議

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錄影機進行實時監視

三、 部署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
           

四、 運作示例 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
           

五、 結語

到此為止,大家對Kurento Media Server的原理和使用有一個大概的認識了吧,Kurento Media Server是一個很不錯的架構,它功能強大而且容易入手,本人所在公司也有産品在使用。

繼續閱讀