kurento和打洞的服務(wù)器的安裝及部署

前言

大家好鲤遥,我是許RR饰恕。最近公司在做一個互聯(lián)網(wǎng)門診的業(yè)務(wù),基礎(chǔ)業(yè)務(wù)是病人能夠通過網(wǎng)頁或者視頻的視頻來“call”醫(yī)生仁期,然后醫(yī)生選擇接聽桑驱,達(dá)到一個通過視頻的互聯(lián)網(wǎng)診斷的效果竭恬,讓病人不到醫(yī)院就能向醫(yī)生問診跛蛋。然后負(fù)責(zé)這個項目的老大讓我負(fù)責(zé)搭建一個kurento服務(wù)器用于傳輸流媒體,另外加一個必須的打洞服務(wù)器用于穿透網(wǎng)絡(luò)痊硕,讓kurento服務(wù)器能夠找到客戶端的真實ip地址赊级。本來我以為是個很簡單的活,搭建環(huán)境嘛岔绸,沒想到是一個糾纏了我三天的噩夢理逊,坑和問題無處不在橡伞,能弄出來全虧了我的兩位師兄,@帥氣小伙和@codenjin師兄晋被,在兩位師兄身上我看到了什么才是一個真正的后端程序員兑徘。

使用docker安裝kurento

https://doc-kurento.readthedocs.io/en/6.9.0/ 這是官方文檔的地址,細(xì)讀了官方文檔我發(fā)現(xiàn)這個kurento只能安裝在Ubuntu上羡洛,這真是扯淡挂脑,這還是我第一次看到這么“完美”只支持Ubuntu的軟件,然后公司只分給一臺centos的服務(wù)器給我欲侮。幸好有解決方案崭闲,直接裝不行我不能裝docker嗎,docker總不會不支持吧威蕉。而且官方也有docker使用kurento的文檔:https://hub.docker.com/r/kurento/kurento-media-server/刁俭, 執(zhí)行以下命令安裝并啟動鏡像:
docker run -d --name kms -p 8888:8888 kurento/kurento-media-server:xenial-latest

然后使用sudo docker ps查看鏡像是否啟動,執(zhí)行這個命令如果看到類似下面的輸出韧涨,那么就是啟動成功:

7bbe2673abd8        kurento/kurento-media-server:xenial-latest   "/entrypoint.sh"    5 days ago          Up 3 seconds (health: starting)   0.0.0.0:8888->8888/tcp   kms

嗯牍戚,反正我是沒遇到不成功的,如果不成功說明你倒霉虑粥,自己想辦法解決吧翘魄。假設(shè)上面都運行成功,那么kurento就是安裝成功并且成功的在8888端口運行起來了舀奶。

docker安裝stun和turn服務(wù)器(打洞服務(wù)器)

kurento安裝起來算是簡單的了暑竟,唯一的坑也被docker解決了,但是stun和turn服務(wù)器安裝這塊坑就大了育勺,網(wǎng)上很多教程但荤,但是你會發(fā)現(xiàn)他們說的都不一樣,有說一定要Ubuntu的涧至,有說這個參數(shù)放內(nèi)網(wǎng)ip的腹躁,有說這個參數(shù)放外網(wǎng)IP的,有說這個無所謂的南蓬,有說要生成用戶的纺非,有說要md5碼的。我操我給這幫各執(zhí)其詞的教程和博客折磨的心力憔悴赘方,最后拼拼湊湊的在自己的Ubuntu成功的搭建起來了一個打洞服務(wù)器烧颖,但是我并不建議你用這種方法,因為花費的時間實在太長窄陡,可以用更方便的方法炕淮。@codenjin師兄到GitHub上找到一個老外的GitHub項目,有關(guān)coturn的項目跳夭,老外用將所有的操作都寫進(jìn)了dockerfile里面涂圆,自動打包好一個coturn的鏡像们镜,首先克隆這個項目:https://github.com/konoui/kurento-coturn-docker.git(可以給個star,畢竟幫忙解決問題了)润歉,克隆好了執(zhí)行以下操作:

cd /kurento-coturn-docker/coturn/
//使用dockerfile,記住加點
sudo docker build --tag coturn .
//后臺運行coturn
sudo docker run -p 3478:3478 -p 3478:3478/udp coturn

嗯模狭,這個dockerfile給你配置turn的用戶名和密碼都是kurento,你如果簡單百度過幾篇博客就應(yīng)該知道我在說什么踩衩。你可以用這個網(wǎng)址去測試stun和turn的有效性:

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

測試stun有效性(出現(xiàn)兩個地址加”done“才為有效):
image

測試turn有效性(出現(xiàn)三個地址加"done"才為有效):
image

打了紅圈的說明這是成功的胞皱,只有成功才會顯示“done”,不成功一般會說“auth failed”或者“not reachable?”不要在意那個問號九妈,只要不是done說明你就是失敗的反砌。哦,如果只有一個地址也“done”的話萌朱,那也是不行的宴树,不信你隨便拿個ip地址試試。

kurento設(shè)置打洞服務(wù)器地址

這個比較簡單晶疼,但是是必不可缺的一步酒贬,如果是使用docker的鏡像的話,那么應(yīng)該進(jìn)入kurento的鏡像編輯kurento的配置文件:

#進(jìn)入鏡像
 docker exec -it kms /bin/bash
 #安裝vim
 apt-get update
 apt-get install vim
 #進(jìn)入配置文件夾
 cd /etc/kurento/modules/kurento/
 #編輯配置文件
 vim WebRtcEndpoint.conf.ini

若要配置打洞服務(wù)器翠霍,配置文件應(yīng)該改成這樣的:

stunServerAddress=you_url
stunServerPort=you_port
turnURL=kurento:kurento@you_url?transport=tcp

跑通官網(wǎng)java kurento-hello-world demo

以上的坑和這個坑都不算啥锭吨,這個才是最大的坑,如果你使用kurento并且在遠(yuǎn)端部署了kurento和打洞服務(wù)器并且試圖跑通kurento官網(wǎng)給的java kurento-hello-world demo(https://github.com/Kurento/kurento-tutorial-java.git里面那個kurento-hello-wrold)寒匙, 那就慘了零如,你會發(fā)現(xiàn)部署在自己本地的kurento能夠完美跑通,但是kurento一部署到遠(yuǎn)端就無法連通锄弱,你會感覺自己的打洞服務(wù)器沒配好考蕾,然后反復(fù)的去配,反復(fù)的看網(wǎng)上的教程会宪,但是偏偏網(wǎng)上的教程各執(zhí)一詞肖卧,你瞬間迷茫了。

我就是這樣的掸鹅,弄了兩天后最后@帥氣小伙師兄發(fā)現(xiàn)是官網(wǎng)給的demo完全沒有使用到我們自己配的打洞服務(wù)器塞帐。。巍沙。所以這個demo肯定跑不通葵姥,因為它根本他喵的就沒用到你配好的打洞服務(wù)器啊赎瞎!它用的是遠(yuǎn)在墻外的谷歌的stun服務(wù)器芭评铩颊咬!谷歌再強也穿不了中國的防火長墻啊务甥。

在kurento-hello-wrold項目文件夾中牡辽,執(zhí)行以下操作:

cd /src/main/resources/static/js/
 vim index.js

在函數(shù)function uiStart()里,增加一個叫iceservers的變量敞临,格式如下:

var iceservers={
 "iceServers":[
 {
   urls:"stun:139.198.123.138:3478"
 },
 {
 urls:["turn:139.198.123.138:3478"]
 username:"kurento",
 credential: "kurento"
 }
 ]
 }

再修改底下的options變量:

const options = {
 localVideo: uiLocalVideo,
 remoteVideo: uiRemoteVideo,
 mediaConstraints: { audio: true, video: true },
 onicecandidate: (candidate) => sendMessage({
 id: 'ADD_ICE_CANDIDATE',
 candidate: candidate,
 }),
 configuration: iceservers //修改在這里态辛,增加了一個configuration的key
 };
?```
希望有同樣目的的同志能夠看到這篇博文挺尿,不然肯定被折磨的死去活來奏黑。kurento團(tuán)隊源碼中很多坑沒有說明就是為了用了他們項目的人能夠出錢去購買他們的技術(shù)支持,不能中老外的圈套编矾。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熟史,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窄俏,更是在濱河造成了極大的恐慌蹂匹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凹蜈,死亡現(xiàn)場離奇詭異限寞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仰坦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門履植,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悄晃,你說我怎么就攤上這事玫霎。” “怎么了妈橄?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵鼠渺,是天一觀的道長。 經(jīng)常有香客問我眷细,道長拦盹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任溪椎,我火速辦了婚禮普舆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘校读。我一直安慰自己沼侣,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布歉秫。 她就那樣靜靜地躺著蛾洛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轧膘,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天钞螟,我揣著相機(jī)與錄音,去河邊找鬼谎碍。 笑死鳞滨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟆淀。 我是一名探鬼主播拯啦,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熔任!你這毒婦竟也來了褒链?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤疑苔,失蹤者是張志新(化名)和其女友劉穎碱蒙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夯巷,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡赛惩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了趁餐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷兼。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖后雷,靈堂內(nèi)的尸體忽然破棺而出季惯,到底是詐尸還是另有隱情,我是刑警寧澤臀突,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布勉抓,位于F島的核電站,受9級特大地震影響候学,放射性物質(zhì)發(fā)生泄漏藕筋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一梳码、第九天 我趴在偏房一處隱蔽的房頂上張望隐圾。 院中可真熱鬧,春花似錦掰茶、人聲如沸暇藏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盐碱。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓮顽,已是汗流浹背县好。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留趣倾,地道東北人聘惦。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓某饰,卻偏偏與公主長得像儒恋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子黔漂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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