架構(gòu)
信令部分 和 媒體部分
- 信令層: 提供媒體協(xié)商能力、QoS參數(shù)化恰画、呼叫建立、用戶注冊(cè)拴还、用戶顯現(xiàn)等的一些模塊組成了信令層。(The parts of the system in charge of the management of communications, that is, the modules that provides functions for media negotiation, QoS parametrization, call establishment, user registration, user presence, etc. are conceived as forming part of the Signaling Plane.)
- 媒體層: 媒體支持坟奥、編解碼和媒體處理等組成了此層...(Functionalities such as media transport, media encoding/decoding and media processing make the Media Plane, which takes care of the handling of media. The distinction comes from the telephony differentiation between the handling of voice and the handling of meta-information such as tone, billing, etc.)
Kurento接口
- Kurento協(xié)議:websocket
- Kurento API:是從面向?qū)ο蟮慕嵌仁褂胟urento協(xié)議.
- Java 和 JS 客戶端: 簡(jiǎn)化API使用拇厢, 分別可以在Java服務(wù)端晒喷、 NodeJS孝偎、瀏覽器里實(shí)現(xiàn)和KMS的交互
Kurento模塊
插件式的模塊凉敲, KMS默認(rèn)使用模塊:kms-core, kms-elements, kms-filters。其他增強(qiáng)型的模塊如:kms-crowddetector, kms-pointerdetector, kms-chroma, 和 kms-platedetector爷抓。
用戶可通過(guò)自定義模塊擴(kuò)展其功能。
使用Kurento創(chuàng)建應(yīng)用
- 展現(xiàn)層(客戶端):負(fù)責(zé)媒體的展現(xiàn)和抓取
-
應(yīng)用邏輯層:負(fù)責(zé)媒體業(yè)務(wù)邏輯。具體說(shuō)闻鉴, 這一層要通過(guò)控制KMS連接媒體組件
Media Elements
創(chuàng)建恰當(dāng)?shù)拿襟w管道pipeline
, 讓相關(guān)的媒體流從中通過(guò) - 服務(wù)層:為了支持業(yè)務(wù)層, 負(fù)責(zé)媒體的處理,如媒體錄制车酣、加密等,具體說(shuō)就是KMS
可將展現(xiàn)層放在客戶端躯肌, 服務(wù)層放在服務(wù)端, 業(yè)務(wù)邏輯層放二者之一即可:
一般為了簡(jiǎn)化客戶端清女,業(yè)務(wù)邏輯層放在服務(wù)端晰筛。當(dāng)然也可以使用如 Kurento JavaScript Client
將業(yè)務(wù)層放在客戶端嫡丙。
客戶端读第、服務(wù)端及Kurento的交互
1. 媒體協(xié)商階段(信令)
如上圖所示,在第一階段父泳,客戶端向應(yīng)用服務(wù)請(qǐng)求某種媒體能力吴汪,此過(guò)程可使用任何協(xié)議(http, websocket, SIP等)惠窄。
當(dāng)應(yīng)用服務(wù)接到請(qǐng)求漾橙,可以執(zhí)行其業(yè)務(wù)邏輯,可包括AAA:認(rèn)證(Authentication)霜运、授權(quán)(Authorization)和計(jì)費(fèi)(Accounting), CDR階段和web服務(wù)調(diào)用等
之后藕各,應(yīng)用服務(wù)端根據(jù)開發(fā)自定義的指令決定如何通過(guò)媒體組件連接來(lái)創(chuàng)建一個(gè)pipeline,一旦KMS創(chuàng)建成功pipeline激况,應(yīng)用服務(wù)將成功消息發(fā)送給客戶端,告知怎樣以及去哪(How and Where)獲取媒體服務(wù)誉碴。
字啊以上的過(guò)程中都沒(méi)有媒體數(shù)據(jù)(media data)真正交換, 所有的交互都是在協(xié)商媒體交換的問(wèn)題:什么黔帕、何時(shí)、何地成黄、怎樣(whats hosts wheres and whens)。所以稱為協(xié)商階段思瘟, 顯然此階段之保護(hù)指定協(xié)議。
2. 媒體流交換階段
媒體協(xié)商過(guò)后滨攻, 真正專注于媒體數(shù)據(jù)的交換」馊疲客戶端使用在協(xié)商階段獲取的信息畜份,向KMS獲取媒體數(shù)據(jù)诞帐。
使用Kurento做實(shí)時(shí)WebRTC應(yīng)用
Kurento允許瀏覽器建通過(guò)WebRTC建立實(shí)時(shí)媒體會(huì)話爆雹。另外,可使用KMS作為不同客戶端間交互的媒體代理慧起。所以KMS可以扮演會(huì)議橋接(conference bridge (Multi-Conference Unit, MCU))、端到端通信系統(tǒng)(machine-to-machine)完慧、視頻呼叫錄制系統(tǒng)等( video call recording system)谋旦。
如下圖,客戶端通過(guò)SDP暴露自己的媒體嗯嗯管理拴孤,因此甲捏,應(yīng)用服務(wù)能夠?qū)嵗‘?dāng)?shù)腤ebRTC端點(diǎn)(endpoint)演熟,請(qǐng)求KMS,KMS基于自身的和客戶端的媒體能力生成相應(yīng)的SDP回應(yīng)兄纺, 客戶端獲取到回應(yīng)后開始媒體數(shù)據(jù)交換化漆」来啵總結(jié)為下圖:
應(yīng)用開發(fā)者可在媒體協(xié)商階段根據(jù)需要?jiǎng)?chuàng)建pipeline疙赠,如:創(chuàng)建一個(gè)WebRTC應(yīng)用錄制客戶端音視頻,并且在識(shí)別到人臉時(shí)給戴上一個(gè)帽子:
Kurento設(shè)計(jì)原則:
- 媒體和信令分離
- 媒體和應(yīng)用服務(wù)可分布式水平擴(kuò)展
- 適合于云 PaaS
- 媒體管道 Piplines
- 對(duì)應(yīng)用開發(fā)友好:屏蔽了KMS的復(fù)雜性圃阳,可用任何平臺(tái)和語(yǔ)言
- End-to-End的交流能力:開發(fā)者不用處理媒體編解碼璧帝、傳輸和渲染等復(fù)制事宜
- 可全權(quán)處理的媒體流:不止普通軟件(如Skype)人與人交流捍岳,可實(shí)現(xiàn)人與機(jī)器睬隶、機(jī)器與機(jī)器之間的交流。
- 過(guò)程可監(jiān)控:可為QoS監(jiān)控晕城、賬單、審計(jì)等生成豐富詳細(xì)的信息
- 無(wú)縫的IMS(IP Multimedia Subsystem)集成
- 透明的媒體適應(yīng)層:使得不同設(shè)備(屏幕尺寸砖顷、耗電能力赃梧、傳輸速率等)的會(huì)聚成為可能