首頁
|
行業(yè)資訊
|
企業(yè)名錄
|
產(chǎn)品大全
|
商機(jī)信息
|
家庭影院
|
技術(shù)學(xué)園
|
行業(yè)展會(huì)
|
投影人才
|
大屏工程
|
投影搜索
資訊首頁
|
投影信息
|
新品上市
|
招標(biāo)信息
|
應(yīng)用案例
|
技術(shù)動(dòng)態(tài)
|
展會(huì)信息
|
投影行情
|
企業(yè)訪談
學(xué)園首頁
|
名詞解釋
|
選購常識(shí)
|
維修保養(yǎng)
|
技術(shù)動(dòng)態(tài)
|
使用手冊(cè)
|
維修專區(qū)
|
有問必答
|
歡迎投稿
投影技術(shù)分類導(dǎo)航
>>
投影機(jī)
>>
電子白板
>>
投影儀
>>
投影燈泡
>>
切換器
>>
視頻展臺(tái)
>>
接口矩陣
>>
等離子屏
>>
投影幕
>>
投影吊架
>>
分配器
>>
液晶電視
>>
延長(zhǎng)器
>>
圖形處理器
>>
反射鏡
>>
中央控制器
>>
會(huì)議系統(tǒng)
>>
多媒體講臺(tái)
>>
接口矩陣
>>
背投一體機(jī)
>>
虛擬仿真
>>
背投拼接墻
>>
LCOS技術(shù)
>>
邊緣融合
>>
高清技術(shù)
>>
家庭影院
實(shí)用查詢
·
投影機(jī)使用時(shí)間清零方法大全
·
投影機(jī)常見故障排除法
·
各品牌投影機(jī)總維修站800電話
·
最佳投影距離通用計(jì)算公式
·
投影屏幕尺寸、投影距離計(jì)數(shù)器
當(dāng)前位置: >>
首頁
>>
技術(shù)學(xué)園
>> 視頻會(huì)議中的音頻通信之-DirectX實(shí)現(xiàn)
視頻會(huì)議中的音頻通信之-DirectX實(shí)現(xiàn)
更新時(shí)間:2008-5-26 10:23:59 ( 編輯:隨云 )
視頻會(huì)議以其方便、快捷、“面對(duì)面”交流的優(yōu)點(diǎn)逐漸得到了人們的認(rèn)可,許多企事業(yè)單位、教育單位,醫(yī)療單位都希望使用視頻會(huì)議來代替?zhèn)鹘y(tǒng)的會(huì)議形式。在視頻會(huì)議中,與會(huì)者之間主要傳輸?shù)氖且纛l數(shù)據(jù)和視頻數(shù)據(jù),其中的音頻數(shù)據(jù)顯得更為重要。因?yàn)闀?huì)議中的大部分有用信息都包含在與會(huì)者的言語交上,所以視頻會(huì)議系統(tǒng)必須保證音頻通信的流暢性和全雙工,才能使視頻會(huì)議更接近于真實(shí)的會(huì)議環(huán)境。
DirectX是Microsoft開發(fā)的專門用于開發(fā)游戲和多媒體軟件的應(yīng)用程序接口(API),包括了對(duì)二維和三維圖像、聲音、音樂和針對(duì)網(wǎng)絡(luò)多人游戲的網(wǎng)絡(luò)通信的強(qiáng)大支持。DirectX是一種標(biāo)準(zhǔn)的軟件接口,所有主要的硬件供應(yīng)商都提供支持DirectX的驅(qū)動(dòng)設(shè)備,應(yīng)用DirectX的軟件可以在不同的硬件環(huán)境下正常運(yùn)行。另一方面,DirectX能根據(jù)所使用的不同硬件,來選擇適當(dāng)?shù)姆绞绞褂糜布铀倌芰Γ阌陂_發(fā)高質(zhì)量的多媒體和游戲軟件。在DirectX所提供的眾多組件中,用于音頻處理的是Direct Sound組件。為保證
視頻會(huì)議
系統(tǒng)中語音的流暢性,需要采用Direct Sound中提供的Streaming Buffer(流式緩沖)機(jī)制來實(shí)現(xiàn)。而為了保證
視頻會(huì)議
系統(tǒng)中的全雙工音頻通信,主要利用的則是Direct Sound中的混音機(jī)制來實(shí)現(xiàn)。
利用Streaming Buffer實(shí)現(xiàn)流暢的語音交流
Direct Sound中提供了兩種緩沖機(jī)制,分別是Static Buffer(靜態(tài)緩沖)和Streaming Buffer(流式緩沖)。Static Buffer指一次將一段完整的聲音存入緩沖中;Streaming Buffer指的是并不將全部的數(shù)據(jù)一次讀入緩沖,而是在播放聲音時(shí)動(dòng)態(tài)地讀入,占用空間較小。一般來說,如果聲音需要反復(fù)播放而且容量有限(如游戲音效),使用Static Buffer更有助于提高程序的效率;相反,如果是容量很大、實(shí)時(shí)性要求較高的音頻數(shù)據(jù)流,則使用Streaming Buffer為佳。在
視頻會(huì)議
系統(tǒng)中,如使用Static Buffer,則在向緩沖區(qū)寫入新的音頻數(shù)據(jù)時(shí),聲音的回放必然出現(xiàn)短暫停頓,使與會(huì)者的完整話語不能夠連續(xù)播放,影響通話的流暢性,而Streaming Buffer可克服語音不連續(xù)的缺點(diǎn)。
Streaming Buffer提供了兩個(gè)指針:Play Cursor(回放游標(biāo))和Write Cursor(寫入游標(biāo)),它們的值只是相對(duì)于緩沖區(qū)開頭的偏移量而非絕對(duì)的內(nèi)存地址。其中Play Cursor總是指向下一個(gè)被輸出的數(shù)據(jù)字節(jié),而Write Cursor指向的地址則指明從哪個(gè)地方開始可以安全地寫入新的音頻數(shù)據(jù)而不影響回放。按回放音頻數(shù)據(jù)的順序來看,Write Cursor總是在Play Cursor之前,并且它們間保持著一定的間距,而這個(gè)間距會(huì)根據(jù)不同的系統(tǒng)狀況而有所不同,實(shí)驗(yàn)表明這個(gè)間距大概是100~200字節(jié)左右。當(dāng)開始對(duì)緩沖區(qū)中的音頻數(shù)據(jù)進(jìn)行循環(huán)模式回放時(shí),總是在Play Cursor所指的地方開始。回放后Play Cursor和Write Cursor會(huì)保持它們的間距等速度前移,并且Play Cursor總是指向下一個(gè)被輸出的數(shù)據(jù)字節(jié)。當(dāng)回放到達(dá)緩沖區(qū)的結(jié)尾處時(shí),Play Cursor將重新指向緩沖區(qū)的開頭,如此循環(huán)下去。而當(dāng)程序停止對(duì)Streaming Buffer中的音頻數(shù)據(jù)進(jìn)行回放時(shí),Play Cursor則不再移動(dòng),并停留在下一個(gè)被輸出的數(shù)據(jù)字節(jié)處,直到重新回放才會(huì)繼續(xù)前移。另外,在Play Cursor和Write Cursor之間的區(qū)域被認(rèn)為是即將要進(jìn)行回放的數(shù)據(jù),所以不能夠?qū)ζ渥龈隆T诶斫饬薙treaming Buffer的基本工作方式后,接下來詳細(xì)闡述如何用Visual C++作具體實(shí)現(xiàn),其中會(huì)涉及到一些Visual C++的函數(shù),具體可參考Microsoft MSDN。
在程序中,設(shè)置一個(gè)大小為一幀音頻數(shù)據(jù)的大小(一般相當(dāng)于0.25秒的語音)的2倍的。并且在正中間和結(jié)尾處分別設(shè)置標(biāo)志一個(gè)觸發(fā)事件。程序開始時(shí),通過調(diào)用Play函數(shù)對(duì)Streaming Buffer中的數(shù)據(jù)進(jìn)行循環(huán)回放。當(dāng)Play Cursor到達(dá)正中間和結(jié)尾時(shí),事件就會(huì)產(chǎn)生,就可以通過程序向緩沖區(qū)寫入新一幀的音頻數(shù)據(jù)。在寫入新一幀音頻數(shù)據(jù)的過程中,首先調(diào)用Lock函數(shù)鎖定緩沖區(qū)中的部分,此時(shí)的Write Cursor被鎖定不再前移,而Play Cursor將跟隨著聲音的回放繼續(xù)前進(jìn);利用回放Play Cursor和Write Cursor間的音頻數(shù)據(jù)的一段時(shí)間內(nèi),根據(jù)鎖定時(shí)獲得的lplpvAudioPtr1(此時(shí)lplpvAudioPtr1指向的地方就是鎖定時(shí)Write Cursor的所指的地方),lpdwAudioBytes1與Streaming Buffer相關(guān)的參數(shù)lplpvAudioPtr2、lpdwAudioBytes2等信息,把數(shù)據(jù)在指定的地方寫入緩沖區(qū),然后調(diào)用Unlock函數(shù)解除對(duì)Write Cursor的鎖定。這樣,Write Cursor重新調(diào)整回PlayCursor保持100~200字節(jié)間距的地方,繼續(xù)對(duì)新的音頻數(shù)據(jù)進(jìn)行回放。上述這個(gè)過程在整個(gè)程序的運(yùn)行過程中,不斷地循環(huán)進(jìn)行,如圖1所示,實(shí)現(xiàn)了在對(duì)Streaming Buffer中舊一幀音頻數(shù)據(jù)進(jìn)行回放的同時(shí)寫入新一幀的音頻數(shù)據(jù)。
從理論上講,這已經(jīng)保證了音頻回放的流暢性。但在實(shí)現(xiàn)過程中,由于操作的對(duì)象是一幀的音頻數(shù)據(jù),其回放的時(shí)間僅是0.25秒,所以必須考慮的一個(gè)問題是程序的反應(yīng)速度問題。如果忽略由事件觸發(fā)到真正用Lock函數(shù)鎖定緩沖區(qū)的部分以進(jìn)行新數(shù)據(jù)寫入之間的時(shí)間,則這種實(shí)現(xiàn)方法沒有任何問題。除了最開始的兩幀數(shù)據(jù)外,新的一幀數(shù)據(jù)會(huì)緊跟在前一幀數(shù)據(jù)之后,彼此之間沒有重疊部分,也沒有空隙存在,能很好地達(dá)到音頻回放的流暢效果。但事實(shí)上,由事件觸發(fā)到真正用Lock函數(shù)鎖定緩沖區(qū)的部分以進(jìn)行新數(shù)據(jù)的寫入之間還必須經(jīng)過線程監(jiān)聽到事件,分析事件對(duì)應(yīng)的緩沖區(qū),然后再觸發(fā)相應(yīng)的回調(diào)函數(shù)來進(jìn)行上面所述的新一幀音頻數(shù)據(jù)的寫入過程。而這一系列分析工作所占用的時(shí)間是會(huì)隨系統(tǒng)當(dāng)時(shí)的狀況而變化的,是一個(gè)隨機(jī)的時(shí)間長(zhǎng)度,所以每次對(duì)緩沖區(qū)用Lock函數(shù)鎖定緩沖區(qū)的部分時(shí),Write Cursor所在的位置都會(huì)不同,這樣就造成新的一幀數(shù)據(jù)并不一定會(huì)嚴(yán)格地緊跟在前一幀數(shù)據(jù)之后,它們之間可能會(huì)出現(xiàn)重疊部分,也可能會(huì)有空隙出現(xiàn),不利于音頻數(shù)據(jù)的連續(xù)播放。如果出現(xiàn)重疊部分,那么回放造成有部分的音頻數(shù)據(jù)丟失;如果有空隙的出現(xiàn),會(huì)造成語音的不連續(xù)或混亂。但經(jīng)過調(diào)試,仔細(xì)分析了由事件觸發(fā)到真正用Lock函數(shù)鎖定緩沖區(qū)的部分以進(jìn)行新數(shù)據(jù)寫入之間的時(shí)間后,發(fā)現(xiàn)它對(duì)鎖定時(shí)Write Cursor所在位置的偏差產(chǎn)生的波動(dòng)不大,一般由此產(chǎn)生的重疊部分或空隙部分都在50字節(jié)左右,也就是說平均每幀數(shù)據(jù)中會(huì)有50字節(jié)的錯(cuò)誤。在程序中,指定的一幀音頻數(shù)據(jù)為2000字節(jié)(與0.25秒相對(duì)應(yīng)),所以會(huì)有大概2.5%的音頻數(shù)據(jù)會(huì)出錯(cuò)。如果以所采用的音頻格式來計(jì)算,8KSPS(采樣率)*8Bit(每個(gè)采樣用8位表示)=64KBit/s=8KB/s,那么這2.5%的錯(cuò)誤在每秒鐘內(nèi)對(duì)應(yīng)的會(huì)是0.025s的音頻數(shù)據(jù),基本上人的聽力是難以分辨的。所以在采用Streaming Buffer依然能很好地達(dá)到了音頻的流暢性要求。
上面只闡述了音頻回放的實(shí)現(xiàn)方法,但作為整個(gè)
視頻會(huì)議
系統(tǒng)中的音頻功能來說,還必須有音頻采集部分跟它相配合。音頻采集部分的實(shí)現(xiàn)方法與回放模塊的基本原理是一樣,都是利用Streaming Buffer來實(shí)現(xiàn),故此處不再詳述。
利用混音機(jī)制實(shí)現(xiàn)全雙工音頻通信
Direct Sound中有Primary Buffer(主緩沖區(qū))和Secondary Buffer(輔助緩沖區(qū))兩個(gè)緩沖區(qū)。前面所述的Streaming Buffer屬于Secondary Buffer。在初始化DirectSound時(shí),它會(huì)自動(dòng)創(chuàng)建一個(gè),這個(gè)主緩沖的作用就是進(jìn)行混音并把混音結(jié)果送到輸出設(shè)備。除了Primary Buffer外,程序至少還應(yīng)該創(chuàng)建一個(gè),輔助緩沖的作用是儲(chǔ)存將要使用的聲音,在不使用的時(shí)候可以釋放掉,但Primary Buffer是不可釋放的。實(shí)現(xiàn)同時(shí)播放多個(gè)聲音,前提是硬件允許。其工作過程如下,當(dāng)程序同時(shí)對(duì)多個(gè)Secondary Buffer中的音頻數(shù)據(jù)進(jìn)行回放時(shí),Direct Sound會(huì)把這些來自于不同Secondary Buffer的聲音在主緩沖區(qū)進(jìn)行自動(dòng)混音,然后通過輸出設(shè)備輸出,如圖2所示。所以通常情況下,用戶并不需要和主緩沖打交道,DirectSound會(huì)自行管理。
視頻會(huì)議
系統(tǒng)的全雙工音頻通信功能,就是利用DirectSound的這一混音機(jī)制達(dá)到的。
視頻會(huì)議
中要實(shí)現(xiàn)的全雙工音頻通信功能并不僅限于兩個(gè)與會(huì)者之間的全雙工通信,而應(yīng)該擴(kuò)展為會(huì)議的每個(gè)者都能根據(jù)需要,同時(shí)聽到其他與會(huì)者的講話,以達(dá)到很好的討論交流效果。為此,在程序中為每個(gè)與會(huì)者分配一個(gè)緩沖數(shù)組,數(shù)組的大小與一幀音頻數(shù)據(jù)大小相同。系統(tǒng)開始運(yùn)行后,程序一方面把各個(gè)與會(huì)成員的音頻數(shù)據(jù)幀接收下來,然后根據(jù)用戶標(biāo)識(shí)把它們分別保存在相應(yīng)的緩沖數(shù)組中,并按照時(shí)間順序排列好,而且會(huì)為每個(gè)用戶創(chuàng)建一個(gè)Streaming Buffer用于音頻回放。另一方面,開始對(duì)各個(gè)用戶對(duì)應(yīng)內(nèi)容進(jìn)行循環(huán)播放回放和更新,而更新的音頻數(shù)據(jù)由各個(gè)用戶的緩沖數(shù)組順序提供。這樣,不同用戶的音頻信息會(huì)自動(dòng)被Direct Sound進(jìn)行混音,并把混音的結(jié)果放到Primary Buffer中,再從輸出設(shè)備輸出,從而達(dá)到所需的效果。
提供的Streaming Buffer機(jī)制和混音機(jī)制,在
視頻會(huì)議
系統(tǒng)中實(shí)現(xiàn)了流暢的全雙工音頻通信,使用效果令人滿意。
更多相關(guān):
投影機(jī)
文章來源:流媒體網(wǎng)
【
推薦給朋友
】【
投稿建議
】【
加入收藏夾
】【
大
中
小
】【
打印
】【
關(guān)閉
】【
評(píng)論
】【
頂部
】
相關(guān)新聞
理清認(rèn)識(shí)誤區(qū) 合理調(diào)節(jié)液晶亮度對(duì)比度
高清數(shù)字電視視音頻及電源技術(shù)
投影機(jī)的色彩魔術(shù)師 DLP極致色彩技術(shù)剖析
投影機(jī)的另類應(yīng)用
使用無線 省去室內(nèi)投影布線
高清電視圖像處理芯片的應(yīng)用方案分析
監(jiān)控大屏機(jī)芯雙燈冷熱備份的優(yōu)缺點(diǎn)分析
視頻會(huì)議應(yīng)用方案的比較
你家環(huán)境如何 白、灰幕面解析
讓你成為高手 認(rèn)識(shí)與使用影院投影機(jī)
網(wǎng)友評(píng)論
設(shè)為首頁
|
建站服務(wù)
|
商務(wù)信息
|
投影資訊
|
本站動(dòng)態(tài)
|
付款方式
|
關(guān)于中國(guó)投影網(wǎng)
|
網(wǎng)站地圖
|
友情鏈接
本站網(wǎng)絡(luò)實(shí)名:中國(guó)投影網(wǎng)|
投影機(jī)
|
投影機(jī)報(bào)價(jià)
國(guó)際域名:http://www.zsowg.cn/
版權(quán)所有© 2008
中國(guó)投影網(wǎng)
.
郵箱:web@ty360.com 電話:+86-755-33225360(十二線)傳真:+86-755-33010311
主站蜘蛛池模板:
亚洲伊人久久大香线蕉综合图片
|
国产综合成人久久大片91
|
欧美国产综合欧美视频
|
色欲久久久天天天综合网精品
|
炫硕日本一区二区三区综合区在线中文字幕
|
激情综合婷婷丁香五月
|
久久婷婷五月综合成人D啪
|
色婷婷综合在线
|
亚洲综合日韩中文字幕v在线
|
色婷婷综合在线
|
区二区三区激情综合
|
国产综合色在线视频区
|
精品亚洲综合在线第一区
|
综合国产在线观看无码
|
天天av天天翘天天综合网
|
精品久久综合1区2区3区激情
|
色噜噜狠狠色综合网
|
东京热TOKYO综合久久精品
|
久久狠狠色狠狠色综合
|
免费精品99久久国产综合精品
|
色综合久久无码中文字幕
|
亚洲综合自拍成人
|
亚洲综合久久夜AV
|
一本色道久久88—综合亚洲精品
|
久久久久亚洲AV综合波多野结衣
|
一本色道久久综合亚洲精品
|
亚洲伊人久久综合影院
|
婷婷色香五月激情综合2020
|
亚洲欧美日韩综合aⅴ视频
|
色噜噜狠狠成人中文综合
|
日韩亚洲人成在线综合日本
|
久久综合综合久久狠狠狠97色88
|
国产成人无码综合亚洲日韩
|
成人综合激情
|
亚洲色欲久久久久综合网
|
久久久久青草线蕉综合超碰
|
一本色道久久综合亚洲精品
|
精品久久久久久综合日本
|
亚洲 综合 欧美在线视频
|
亚洲综合精品香蕉久久网
|
国产激情综合在线观看
|