首頁>技術>

關於KurentoKurento由WebRTC媒體伺服器和一系列客戶端應用組成,用於簡化web和智慧裝置上的實時音影片開發;官方架構圖如下,頂部的紫色區域是端側,左下角紅色區域是提供音影片服務的Kurento Media Server(KMS),右下角綠色區域是業務服務,透過API與KMS互動,對KMS和端側的提供信令和控制服務(例如點對點聊天時找到對方,多人聊天是提供房間的業務邏輯):關於WebRTC(Web Real-Time Communication)WebRTC是一項在瀏覽器內部進行實時影片和音訊通訊的技術,是谷歌於2010年以6820萬美元收購VoIP軟體開發商 Global IT Solutions 公司而獲得,可以在瀏覽器內部進行實時影片和音訊通訊,谷歌於2011年6月3日開源該專案,有關WebRTC的知識不在本文展開,但下圖是典型的實時通訊流程,非常重要本篇概覽

作為《Kurento實戰》的開篇,今天咱們一起來嘗試部署核心服務Kurento Media Server(KMS),再執行一個demo應用驗證KMS可用;

版本資訊作業系統:Ubuntu 16.04.5 LTSKMS:6.13.0JDK:1.8.0_191SpringBoot:2.3.3.RELEASE注意:本次實戰全程使用root帳號接下來開始部署KMS;操作關閉防火牆;安裝gnupg:
apt-get install --no-install-recommends --yes gnupg
設定環境變數:
DISTRO="xenial"
從金鑰伺服器下載金鑰到可信任的金鑰列表,為後面的安裝做準備:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
新增Kurento源地址:
tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOFdeb [arch=amd64] http://ubuntu.openvidu.io/6.13.0 $DISTRO kms6EOF
安裝kms:
apt-get update && apt-get install --yes kurento-media-server
啟動kms:
service kurento-media-server start
檢視kms狀態,如下,可見服務啟動成功(active):
root@docker:~# service kurento-media-server status● kurento-media-server.service - LSB: Kurento Media Server daemon   Loaded: loaded (/etc/init.d/kurento-media-server; bad; vendor preset: enabled)   Active: active (running) since Fri 2021-01-01 05:39:24 PST; 2s ago     Docs: man:systemd-sysv-generator(8)  Process: 4815 ExecStart=/etc/init.d/kurento-media-server start (code=exited, status=0/SUCCESS)    Tasks: 24   Memory: 17.3M      CPU: 242ms   CGroup: /system.slice/kurento-media-server.service           └─4828 /usr/bin/kurento-media-serverJan 01 05:39:24 docker systemd[1]: Starting LSB: Kurento Media Server daemon...Jan 01 05:39:24 docker kurento-media-server[4815]:  * Start Kurento Media ServerJan 01 05:39:24 docker kurento-media-server[4815]:  * Configure Kernel resource limits for Kurento Media ServerJan 01 05:39:24 docker kurento-media-server[4815]:    ...done.Jan 01 05:39:24 docker systemd[1]: Started LSB: Kurento Media Server daemon.
執行以下命令確認響應是否正常:
curl -i -N \    -H "Connection: Upgrade" \    -H "Upgrade: websocket" \    -H "Host: 127.0.0.1:8888" \    -H "Origin: 127.0.0.1" \    http://127.0.0.1:8888/kurento
如果控制檯響應以下內容,證明KMS已經可以正常服務了:
HTTP/1.1 500 Internal Server ErrorServer: WebSocket++/0.7.0
至此,KMS部署和啟動已經完成,接下來咱們快速體驗KMS的基礎能力;體驗KMS接下來部署一個SpringBoot應用,透過應用的網頁服務體驗KMS,這個應用部署在另一臺電腦上(和KMS部署在一起也沒任何問題),整個環境情況如下:登入到上圖的192.168.133.208電腦,關閉防火牆;在192.168.133.208電腦上安裝JDK8;本文的重點是KMS部署,關於SpringBoot應用無需開發,下載我準備好的jar檔案即可,地址是:https://download.csdn.net/download/boling_cavalry/14012545將helloworld-0.0.1-SNAPSHOT.jar下載到192.168.133.208,再執行以下命令即可啟動應用,注意引數-Dkms.url的IP是KMS電腦的地址:
java -Dkms.url=ws://192.168.133.207:8888/kurento -jar helloworld-0.0.1-SNAPSHOT.jar
控制檯輸出以下內容,表示啟動成功:
[root@centos7 ~]# java -Dkms.url=ws://192.168.133.207:8888/kurento -jar helloworld-0.0.1-SNAPSHOT.jar  .   ____          _            __ _ _ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  '  |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot ::        (v2.3.3.RELEASE)2021-01-03 12:30:56.702  WARN 24669 --- [           main] o.s.boot.StartupInfoLogger               : InetAddress.getLocalHost().getHostName() took 10004 milliseconds to respond. Please verify your network configuration.2021-01-03 12:31:06.719  INFO 24669 --- [           main] c.b.helloworld.HelloWorldApplication     : Starting HelloWorldApplication on centos7 with PID 24669 (/root/helloworld-0.0.1-SNAPSHOT.jar started by root in /root)2021-01-03 12:31:06.719  INFO 24669 --- [           main] c.b.helloworld.HelloWorldApplication     : No active profile set, falling back to default profiles: default2021-01-03 12:31:07.970  INFO 24669 --- [rbeatExec-e1-t0] o.k.j.c.JsonRpcClientNettyWebSocket      : [KurentoClient]  Connecting native client2021-01-03 12:31:07.974  INFO 24669 --- [rbeatExec-e1-t0] o.k.j.c.JsonRpcClientNettyWebSocket      : [KurentoClient]  Creating new NioEventLoopGroup2021-01-03 12:31:23.159  INFO 24669 --- [ntLoopGroup-2-1] o.k.j.c.JsonRpcClientNettyWebSocket      : [KurentoClient]  Initiating new Netty channel. Will create new handler too!2021-01-03 12:31:23.267  WARN 24669 --- [           main] org.kurento.client.KurentoClient         : Connected to KMS in 15294 millis (> 5000 millis)2021-01-03 12:31:24.241  INFO 24669 --- [           main] c.b.helloworld.HelloWorldApplication     : Started HelloWorldApplication in 53.092 seconds (JVM running for 53.509)
在瀏覽器訪問地址:https://192.168.133.208:8443 ,由於使用了自簽證書,瀏覽器會有安全提示,點選下圖紅框中的按鈕:點選下圖紅框中的連結,即可訪問SpringBoot應用的首頁:首頁效果如下,這是Kurento官方的hello-world專案,確保您當前電腦上的麥克風攝像頭都正常,再點選下圖紅框中的Start按鈕,即可開始WebRTC流程:出於安全考慮,瀏覽器會彈出確認視窗,如下圖紅框,點選確認後攝像頭開始捕捉畫面:如下圖,WebRTC已經開始正常工作:聰明的您應該發現了,這個應用的功能是將本地攝像頭的資料給到KMS,再從KMS取影片到本地展示,官方給出的流程圖如下:如果您使用的瀏覽器是Chrome,再開啟一個標籤,輸入地址:chrome://webrtc-internals/ ,可以檢視WebRTC的詳情,如下圖,可以看到PeerConnection的詳細資訊:如下圖紅框所示,本地輸出到KMS的影片流,編碼格式為VP8:

35
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Linux搭建FTP伺服器