Kurento實(shí)戰(zhàn)之一:KMS部署和體驗(yàn)

歡迎訪問(wèn)我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:所有原創(chuàng)文章分類(lèi)匯總及配套源碼循头,涉及Java、Docker胞锰、Kubernetes厨姚、DevOPS等;

關(guān)于《kurento實(shí)戰(zhàn)》系列

《kurento實(shí)戰(zhàn)》系列是欣宸原創(chuàng)的音視頻領(lǐng)域?qū)崙?zhàn)專(zhuān)題猎醇,旨在通過(guò)實(shí)戰(zhàn)學(xué)習(xí)主流的實(shí)時(shí)音視頻技術(shù)窥突,很榮幸與您一同開(kāi)啟這段精彩的旅程;

關(guān)于Kurento

  • Kurento由WebRTC媒體服務(wù)器和一系列客戶端應(yīng)用組成硫嘶,用于簡(jiǎn)化web和智能設(shè)備上的實(shí)時(shí)音視頻開(kāi)發(fā)阻问;
  • 官方架構(gòu)圖如下,頂部的紫色區(qū)域是端側(cè)沦疾,左下角紅色區(qū)域是提供音視頻服務(wù)的Kurento Media Server(KMS)称近,右下角綠色區(qū)域是業(yè)務(wù)服務(wù),通過(guò)API與KMS交互曹鸠,對(duì)KMS和端側(cè)的提供信令和控制服務(wù)(例如點(diǎn)對(duì)點(diǎn)聊天時(shí)找到對(duì)方煌茬,多人聊天是提供房間的業(yè)務(wù)邏輯):
在這里插入圖片描述

關(guān)于WebRTC(Web Real-Time Communication)

WebRTC是一項(xiàng)在瀏覽器內(nèi)部進(jìn)行實(shí)時(shí)視頻和音頻通信的技術(shù),是谷歌于2010年以6820萬(wàn)美元收購(gòu)VoIP軟件開(kāi)發(fā)商 Global IT Solutions 公司而獲得彻桃,可以在瀏覽器內(nèi)部進(jìn)行實(shí)時(shí)視頻和音頻通信坛善,谷歌于2011年6月3日開(kāi)源該項(xiàng)目,有關(guān)WebRTC的知識(shí)不在本文展開(kāi)邻眷,但下圖是典型的實(shí)時(shí)通信流程眠屎,非常重要:

在這里插入圖片描述

本篇概覽

作為《kurento實(shí)戰(zhàn)》的開(kāi)篇,今天咱們一起來(lái)嘗試部署核心服務(wù)Kurento Media Server(KMS)肆饶,再運(yùn)行一個(gè)demo應(yīng)用驗(yàn)證KMS可用改衩;

版本信息

  1. 操作系統(tǒng):Ubuntu 16.04.5 LTS
  2. KMS:6.13.0
  3. JDK:1.8.0_191
  4. SpringBoot:2.3.3.RELEASE
  • 注意:本次實(shí)戰(zhàn)全程使用<font color="red">root</font>帳號(hào)
  • 接下來(lái)開(kāi)始部署KMS;

操作

  1. 關(guān)閉防火墻驯镊;
  2. 安裝<font color="red">gnupg</font>:
apt-get install --no-install-recommends --yes gnupg
  1. 設(shè)置環(huán)境變量:
DISTRO="xenial"
  1. 從密鑰服務(wù)器下載密鑰到可信任的密鑰列表葫督,為后面的安裝做準(zhǔn)備:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
  1. 添加kurentu源地址:
tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOF
deb [arch=amd64] http://ubuntu.openvidu.io/6.13.0 $DISTRO kms6
EOF
  1. 安裝kms:
apt-get update && apt-get install --yes kurento-media-server
  1. 啟動(dòng)kms:
service kurento-media-server start
  1. 查看kms狀態(tài),如下板惑,可見(jiàn)服務(wù)啟動(dòng)成功(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-server

Jan 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 Server
Jan 01 05:39:24 docker kurento-media-server[4815]:  * Configure Kernel resource limits for Kurento Media Server
Jan 01 05:39:24 docker kurento-media-server[4815]:    ...done.
Jan 01 05:39:24 docker systemd[1]: Started LSB: Kurento Media Server daemon.
  1. 執(zhí)行以下命令確認(rèn)響應(yīng)是否正常:
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
  1. 如果控制臺(tái)響應(yīng)以下內(nèi)容橄镜,證明KMS已經(jīng)可以正常服務(wù)了:
HTTP/1.1 500 Internal Server Error
Server: WebSocket++/0.7.0
  1. 至此,KMS部署和啟動(dòng)已經(jīng)完成冯乘,接下來(lái)咱們快速體驗(yàn)KMS的基礎(chǔ)能力洽胶;

體驗(yàn)KMS

  • 接下來(lái)部署一個(gè)SpringBoot應(yīng)用,通過(guò)應(yīng)用的網(wǎng)頁(yè)服務(wù)體驗(yàn)KMS裆馒,這個(gè)應(yīng)用部署在另一臺(tái)電腦上(和KMS部署在一起也沒(méi)任何問(wèn)題)姊氓,整個(gè)環(huán)境情況如下:
在這里插入圖片描述
  1. 登錄到上圖的<font color="blue">192.168.133.208</font>電腦丐怯,關(guān)閉防火墻;
  2. 在<font color="blue">192.168.133.208</font>電腦上安裝JDK8翔横;
  3. 本文的重點(diǎn)是KMS部署读跷,關(guān)于SpringBoot應(yīng)用無(wú)需開(kāi)發(fā),下載我準(zhǔn)備好的jar文件即可禾唁,地址是:https://download.csdn.net/download/boling_cavalry/14012545
  4. 將<font color="red">helloworld-0.0.1-SNAPSHOT.jar</font>下載到<font color="blue">192.168.133.208</font>舔亭,再執(zhí)行以下命令即可啟動(dòng)應(yīng)用,注意參數(shù)<font color="blue">-Dkms.url</font>的IP是KMS電腦的地址:
java -Dkms.url=ws://192.168.133.207:8888/kurento -jar helloworld-0.0.1-SNAPSHOT.jar
  1. 控制臺(tái)輸出以下內(nèi)容蟀俊,表示啟動(dòng)成功:
[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: default
2021-01-03 12:31:07.970  INFO 24669 --- [rbeatExec-e1-t0] o.k.j.c.JsonRpcClientNettyWebSocket      : [KurentoClient]  Connecting native client
2021-01-03 12:31:07.974  INFO 24669 --- [rbeatExec-e1-t0] o.k.j.c.JsonRpcClientNettyWebSocket      : [KurentoClient]  Creating new NioEventLoopGroup
2021-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)
  1. 在瀏覽器訪問(wèn)地址:https://192.168.133.208:8443 ,由于使用了自簽證書(shū)订雾,瀏覽器會(huì)有安全提示肢预,點(diǎn)擊下圖紅框中的按鈕:
在這里插入圖片描述
  1. 點(diǎn)擊下圖紅框中的鏈接,即可訪問(wèn)SpringBoot應(yīng)用的首頁(yè):


    在這里插入圖片描述
  2. 首頁(yè)效果如下洼哎,這是Kurento官方的hello-world項(xiàng)目烫映,確保您當(dāng)前電腦上的麥克風(fēng)攝像頭都正常,再點(diǎn)擊下圖紅框中的<font color="blue">Start</font>按鈕噩峦,即可開(kāi)始WebRTC流程:

在這里插入圖片描述
  1. 出于安全考慮锭沟,瀏覽器會(huì)彈出確認(rèn)窗口,如下圖紅框识补,點(diǎn)擊確認(rèn)后攝像頭開(kāi)始捕捉畫(huà)面:
在這里插入圖片描述
  1. 如下圖族淮,WebRTC已經(jīng)開(kāi)始正常工作:
在這里插入圖片描述
  1. 聰明的您應(yīng)該發(fā)現(xiàn)了,這個(gè)應(yīng)用的功能是將本地?cái)z像頭的數(shù)據(jù)給到KMS凭涂,再?gòu)腒MS取視頻到本地展示祝辣,官方給出的流程圖如下:
在這里插入圖片描述
  1. 如果您使用的瀏覽器是Chrome,再打開(kāi)一個(gè)標(biāo)簽切油,輸入地址:chrome://webrtc-internals/ 蝙斜,可以查看WebRTC的詳情,如下圖澎胡,可以看到PeerConnection的詳細(xì)信息:
在這里插入圖片描述
  1. 如下圖紅框所示孕荠,本地輸出到KMS的視頻流,編碼格式為<font color="blue">VP8</font>:
在這里插入圖片描述
  1. 您可以繼續(xù)嘗試攻谁,登錄KMS機(jī)器執(zhí)行以下命令停止KMS服務(wù)稚伍,再回到網(wǎng)頁(yè)時(shí),發(fā)現(xiàn)左側(cè)的預(yù)覽窗口依舊正常工作巢株,但是右側(cè)的遠(yuǎn)程視頻窗口已經(jīng)靜止不動(dòng)了:
service kurento-media-server stop
  • 至此槐瑞,KMS從部署到體驗(yàn)的操作都完成了,希望本文能協(xié)助您完成最基本的kurento體驗(yàn)阁苞,接下來(lái)的文章咱們繼續(xù)寫(xiě)代碼做實(shí)戰(zhàn)困檩,一邊動(dòng)手一邊學(xué)習(xí)kurento祠挫;

你不孤單,欣宸原創(chuàng)一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 數(shù)據(jù)庫(kù)+中間件系列
  6. DevOps系列

歡迎關(guān)注公眾號(hào):程序員欣宸

微信搜索「程序員欣宸」悼沿,我是欣宸等舔,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市糟趾,隨后出現(xiàn)的幾起案子慌植,更是在濱河造成了極大的恐慌,老刑警劉巖义郑,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝶柿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡非驮,警方通過(guò)查閱死者的電腦和手機(jī)交汤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)劫笙,“玉大人芙扎,你說(shuō)我怎么就攤上這事√畲螅” “怎么了戒洼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)允华。 經(jīng)常有香客問(wèn)我圈浇,道長(zhǎng),這世上最難降的妖魔是什么靴寂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任汉额,我火速辦了婚禮,結(jié)果婚禮上榨汤,老公的妹妹穿的比我還像新娘蠕搜。我一直安慰自己,他們只是感情好收壕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布妓灌。 她就那樣靜靜地躺著,像睡著了一般蜜宪。 火紅的嫁衣襯著肌膚如雪虫埂。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天圃验,我揣著相機(jī)與錄音掉伏,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛斧散,可吹牛的內(nèi)容都是我干的供常。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸡捐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼栈暇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起箍镜,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤源祈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后色迂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體香缺,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年歇僧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赫悄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馏慨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姑隅,到底是詐尸還是另有隱情写隶,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布讲仰,位于F島的核電站慕趴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鄙陡。R本人自食惡果不足惜冕房,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趁矾。 院中可真熱鬧耙册,春花似錦、人聲如沸毫捣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔓同。三九已至饶辙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斑粱,已是汗流浹背弃揽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矿微。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓痕慢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親冷冗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子守屉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容