最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

開源視頻會(huì)議OVCS核心技術(shù)概要

2023-08-29 17:22 作者:傲瑞-即時(shí)通訊  | 我要投稿

OVCS 視頻會(huì)議服務(wù)端支持 Windows、Linux;客戶端支持 Windows、Android、iOS、Linux、國(guó)產(chǎn)OS(銀河麒麟、統(tǒng)信UOS)、Web。

接上篇《開源跨平臺(tái)視頻會(huì)議OVCS(支持信創(chuàng)國(guó)產(chǎn)OS)》對(duì)視頻會(huì)議的功能做了簡(jiǎn)單的介紹,這篇我們將介紹在視頻會(huì)議時(shí)所用到的核心技術(shù)。


一.語音通話? ? ??

1.基礎(chǔ)模型

? ? ? 在視頻會(huì)議中,網(wǎng)絡(luò)語音通話通常多對(duì)多的的,但就模型層面來說,我們討論一個(gè)方向的通道就可以了。一方說話,另一方則聽到聲音??此坪?jiǎn)單而迅捷,但是其背后的流程卻是相當(dāng)復(fù)雜的。我們將其經(jīng)過的各個(gè)主要環(huán)節(jié)簡(jiǎn)化成下圖所示的概念模型:

?????

??????這是一個(gè)最基礎(chǔ)的模型,由五個(gè)重要的環(huán)節(jié)構(gòu)成:采集、編碼、傳送、解碼、播放。

? ? ? 語音采集指的是從麥克風(fēng)采集音頻數(shù)據(jù),即聲音樣本轉(zhuǎn)換成數(shù)字信號(hào)。其涉及到幾個(gè)重要的參數(shù):采樣頻率、采樣位數(shù)、聲道數(shù)。

????? 假設(shè)我們將采集到的音頻幀不經(jīng)過編碼,而直接發(fā)送,那么我們可以計(jì)算其所需要的帶寬要求,仍以上例:320*100 =32KBytes/s,如果換算為bits/s,則為256kb/s。這是個(gè)很大的帶寬占用。而通過網(wǎng)絡(luò)流量監(jiān)控工具,我們可以發(fā)現(xiàn)采用類似QQ等IM軟件進(jìn)行語音通話時(shí),流量為3-5KB/s,這比原始流量小了一個(gè)數(shù)量級(jí)。而這主要得益于音頻編碼技術(shù)。?所以,在實(shí)際的語音通話應(yīng)用中,編碼這個(gè)環(huán)節(jié)是不可缺少的。目前有很多常用的語音編碼技術(shù),像G.729、iLBC、AAC、SPEEX等等。

??????當(dāng)一個(gè)音頻幀完成編碼后,即可通過網(wǎng)絡(luò)發(fā)送給通話的對(duì)方。對(duì)于語音對(duì)話這樣Realtime應(yīng)用,低延遲和平穩(wěn)是非常重要的,這就要求我們的網(wǎng)絡(luò)傳送非常順暢。

??????當(dāng)對(duì)方接收到編碼幀后,會(huì)對(duì)其進(jìn)行解碼,以恢復(fù)成為可供聲卡直接播放的數(shù)據(jù)。 ? ?

??????完成解碼后,即可將得到的音頻幀提交給聲卡進(jìn)行播放。

2.高級(jí)功能

? ? ?如果僅僅依靠上述的技術(shù)就能實(shí)現(xiàn)一個(gè)效果良好的應(yīng)用于廣域網(wǎng)上的語音對(duì)話系統(tǒng),那就太easy了。正是由于很多現(xiàn)實(shí)的因素為上述的概念模型引入了眾多挑戰(zhàn),使得網(wǎng)絡(luò)語音系統(tǒng)的實(shí)現(xiàn)不是那么簡(jiǎn)單,其涉及到很多專業(yè)技術(shù)。一個(gè)“效果良好”的語音對(duì)話系統(tǒng)應(yīng)該達(dá)到如下幾點(diǎn):低延遲,背景噪音小,聲音流暢、沒有卡、停頓的感覺,沒有回音。

? ? ?對(duì)于低延遲,只有在低延遲的情況下,才能讓通話的雙方有很強(qiáng)的Realtime的感覺。當(dāng)然,這個(gè)主要取決于網(wǎng)絡(luò)的速度和通話雙方的物理位置的距離,就單純軟件的角度,優(yōu)化的可能性很小。

(1)回音消除

??????現(xiàn)在大家?guī)缀醵家呀?jīng)都習(xí)慣了在語音聊天時(shí),直接用PC或筆記本的聲音外放功能。當(dāng)使用外放功能時(shí),揚(yáng)聲器播放的聲音會(huì)被麥克風(fēng)再次采集,傳回給對(duì)方,這樣對(duì)方就聽到了自己的回音。

? ? ? 回音消除的原理簡(jiǎn)單地來說就是,回音消除模塊依據(jù)剛播放的音頻幀,在采集的音頻幀中做一些類似抵消的運(yùn)算,從而將回聲從采集幀中清除掉。這個(gè)過程是相當(dāng)復(fù)雜的,因?yàn)樗€與你聊天時(shí)所處的房間的大小、以及你在房間中的位置有關(guān),因?yàn)檫@些信息決定了聲波反射的時(shí)長(zhǎng)。 智能的回音消除模塊,能動(dòng)態(tài)調(diào)整內(nèi)部參數(shù),以最佳適應(yīng)當(dāng)前的環(huán)境。

(2)噪聲抑制

????? 噪聲抑制又稱為降噪處理,是根據(jù)語音數(shù)據(jù)的特點(diǎn),將屬于背景噪音的部分識(shí)別出來,并從音頻幀中過濾掉。有很多編碼器都內(nèi)置了該功能。

(3)抖動(dòng)緩沖區(qū)

??????抖動(dòng)緩沖區(qū)(JitterBuffer)用于解決網(wǎng)絡(luò)抖動(dòng)的問題。所謂網(wǎng)絡(luò)抖動(dòng),就是網(wǎng)絡(luò)延遲一會(huì)大一會(huì)小,在這種情況下,即使發(fā)送方是定時(shí)發(fā)送數(shù)據(jù)包的(比如每100ms發(fā)送一個(gè)包),而接收方的接收就無法同樣定時(shí)了,有時(shí)一個(gè)周期內(nèi)一個(gè)包都接收不到,有時(shí)一個(gè)周期內(nèi)接收到好幾個(gè)包。如此,導(dǎo)致接收方聽到的聲音就是一卡一卡的。???

? ? ? JitterBuffer工作于解碼器之后,語音播放之前的環(huán)節(jié)。即語音解碼完成后,將解碼幀放入JitterBuffer,聲卡的播放回調(diào)到來時(shí),從JitterBuffer中取出最老的一幀進(jìn)行播放。?? ??

??????JitterBuffer的緩沖深度取決于網(wǎng)絡(luò)抖動(dòng)的程度,網(wǎng)絡(luò)抖動(dòng)越大,緩沖深度越大,播放音頻的延遲就越大。所以,JitterBuffer是利用了較高的延遲來換取聲音的流暢播放的,因?yàn)橄啾嚷曇粢豢ㄒ豢▉碚f,稍大一點(diǎn)的延遲但更流暢的效果,其主觀體驗(yàn)要更好。

????? 當(dāng)然,JitterBuffer的緩沖深度不是一直不變的,而是根據(jù)網(wǎng)絡(luò)抖動(dòng)程度的變化而動(dòng)態(tài)調(diào)整的。當(dāng)網(wǎng)絡(luò)恢復(fù)到非常平穩(wěn)通暢時(shí),緩沖深度會(huì)非常小,這樣因?yàn)镴itterBuffer而增加的播放延遲就可以忽略不計(jì)了。

(4)靜音檢測(cè)

??????在語音對(duì)話中,要是當(dāng)一方?jīng)]有說話時(shí),就不會(huì)產(chǎn)生流量就好了。靜音檢測(cè)就是用于這個(gè)目的的。靜音檢測(cè)通常也集成在編碼模塊中。靜音檢測(cè)算法結(jié)合前面的噪聲抑制算法,可以識(shí)別出當(dāng)前是否有語音輸入,如果沒有語音輸入,就可以編碼輸出一個(gè)特殊的的編碼幀(比如長(zhǎng)度為0)。特別是在多人視頻會(huì)議中,通常只有一個(gè)人在發(fā)言,這種情況下,利用靜音檢測(cè)技術(shù)而節(jié)省帶寬還是非??捎^的。

(5)混音

??????在視頻會(huì)議中,多人同時(shí)發(fā)言時(shí),我們需要同時(shí)播放來自于多個(gè)人的語音數(shù)據(jù),而聲卡播放的緩沖區(qū)只有一個(gè),所以,需要將多路語音混合成一路,這就是混音算法要做的事情。?

二.視頻通話

1.基礎(chǔ)模型

  視頻通話的概念模型與語音完全一致:

? ??

? ? ?

? ? ?攝像頭采集指的是從捕捉攝像頭采集到的每一幀視頻圖像。在windows系統(tǒng)上,通常使用VFW技術(shù)或DirectShow技術(shù)來實(shí)現(xiàn)。采集視頻的兩個(gè)關(guān)鍵參數(shù)是幀頻(fps)和分辨率。

? ? ?一般而言,一個(gè)攝像頭可以支持多種不同的采集分辨率和采集幀頻,而不同的攝像頭支持的分辨率的集合不一樣。比如現(xiàn)在有很多高清攝像頭可以支持30fps的1920*1080的圖像采集。

? ? ?編碼用于壓縮視頻圖像,同時(shí)也決定了圖像的清晰度。視頻編碼常用的技術(shù)是H.263、H.264、MPEG-4、XVID等。? ? ?

? ? ?當(dāng)對(duì)方接收到編碼的視頻幀后,會(huì)對(duì)其進(jìn)行解碼,以恢復(fù)成一幀圖像,然后在UI的界面上繪制出來。

2.高級(jí)功能

  相比于語音,視頻的相關(guān)處理要簡(jiǎn)單一些。

(1)動(dòng)態(tài)調(diào)整視頻的清晰度

? ? ? 在Internet上,網(wǎng)絡(luò)速度是實(shí)時(shí)動(dòng)態(tài)變化的,所以,在視頻會(huì)議中,為了優(yōu)先保證語音的通話質(zhì)量,需要實(shí)時(shí)調(diào)整視頻的相關(guān)參數(shù),其最主要的就是調(diào)整編碼的清晰度,因?yàn)榍逦仍礁?,?duì)帶寬要求越高,反之亦然。

? ? ? 比如,當(dāng)檢測(cè)網(wǎng)絡(luò)繁忙時(shí),就自動(dòng)降低編碼的清晰度,以降低對(duì)帶寬的占用。

(2)自動(dòng)丟棄視頻幀

  同樣網(wǎng)絡(luò)繁忙時(shí),還有一個(gè)方法,就是發(fā)送方是主動(dòng)丟棄要發(fā)送的視頻幀,這樣在接收方看來,就是幀頻fps降低了。

三.電子白板

  ? 在視頻會(huì)議中,電子白板的功能是很重要的。通常會(huì)議的主持人會(huì)在白板上畫圖進(jìn)行講解,然后其它的人能同步觀看和操作電子白板的內(nèi)容。

? ? ? 通常的電子白板都支持如下功能:線段、箭頭線、雙箭頭線,水平肘型連接符、垂直肘型連接符,矩形、三角形、橢圓(圓),文本,自由曲線,插入圖片,激光筆。

? ? ? 在實(shí)現(xiàn)上,電子白板主要是使用GDI+技術(shù)。

  ? 對(duì)于電子白板的同步,其原理是這樣的:比如,當(dāng)操作者在白板上繪制一個(gè)圖像時(shí),這個(gè)操作會(huì)被封裝成一個(gè)Command對(duì)象(命令模式),然后,通過網(wǎng)絡(luò)廣播發(fā)送給會(huì)議中的其它人。當(dāng)其他人接收到這個(gè)Command對(duì)象時(shí),就將其轉(zhuǎn)換成一個(gè)白板操作來執(zhí)行,這樣各個(gè)白板的內(nèi)容就自動(dòng)同步了。

四.會(huì)議房間管理

  ? 對(duì)于那些動(dòng)態(tài)創(chuàng)建視頻會(huì)議室,在用完之后就動(dòng)態(tài)將其銷毀的通常的視頻會(huì)議應(yīng)用場(chǎng)景來說,使用動(dòng)態(tài)組來表示會(huì)議房間,是非常恰當(dāng)?shù)摹?

? ? ? 所謂“動(dòng)態(tài)組”,就是在服務(wù)器內(nèi)存中動(dòng)態(tài)創(chuàng)建的組,不需要序列化存儲(chǔ)到比如數(shù)據(jù)庫(kù)或磁盤中,需要的時(shí)候就創(chuàng)建一個(gè),然后加入多個(gè)成員進(jìn)行組內(nèi)溝通,當(dāng)不再使用的時(shí)候,就直接從內(nèi)存中銷毀了。

  ? 基于Socket技術(shù),我們可以在服務(wù)端實(shí)現(xiàn)DynamicGroupManager類來對(duì)動(dòng)態(tài)組進(jìn)行管理。

? ? ? 雖然,動(dòng)態(tài)組僅僅存在于內(nèi)存之中,但是,在項(xiàng)目需要時(shí),我們?nèi)匀豢梢詫⑵淠承┲匾男畔⒊志没綌?shù)據(jù)庫(kù)中存儲(chǔ)。然后,在服務(wù)器重啟時(shí),可以從DB中加載重要的房間信息。

OVCS源碼下載鏈接:https://blog.oraycn.com/OVCS_Demo.aspx?


開源視頻會(huì)議OVCS核心技術(shù)概要的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
苍南县| 凭祥市| 安泽县| 临武县| 神木县| 都江堰市| 革吉县| 凤城市| 遂昌县| 南乐县| 古蔺县| 曲阳县| 奈曼旗| 商都县| 麦盖提县| 鸡泽县| 宁晋县| 天津市| 柳林县| 藁城市| 家居| 同心县| 赤壁市| 安阳县| 广丰县| 孝义市| 平武县| 奉节县| 临沂市| 乐陵市| 凤台县| 库伦旗| 西昌市| 抚州市| 阿尔山市| 冷水江市| 木里| 淮滨县| 原平市| 彭州市| 千阳县|