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流媒體服務器,敬請關注。