日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

一種基于媒體服務(wù)器實現(xiàn)音頻合成的方法及設(shè)備的制作方法

文檔序號:7715111閱讀:211來源:國知局
專利名稱:一種基于媒體服務(wù)器實現(xiàn)音頻合成的方法及設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)電視領(lǐng)域,尤其涉及一種基于媒體服務(wù)器實現(xiàn)音頻合成的方法及 設(shè)備。
背景技術(shù)
網(wǎng)絡(luò)電視業(yè)務(wù)(即IPTV業(yè)務(wù))在國內(nèi)外發(fā)展迅速,已經(jīng)逐漸成為固定網(wǎng)絡(luò)運營商 提高其每用戶平均收入的殺手锏業(yè)務(wù)之一。通過IPTV平臺,普通用戶可以進(jìn)行視頻點播、 收看實時電視節(jié)目以及進(jìn)行可視電話等,隨著電視多媒體的技術(shù)發(fā)展,網(wǎng)絡(luò)電視以及網(wǎng)絡(luò) 電視中的在線卡拉OK等功能也越來越受到人們的喜愛。在線卡拉OK功能的發(fā)展,不但要 實現(xiàn)卡拉OK的基本功能,還要能夠根據(jù)演唱者的演唱的水平在演唱者演唱的時候?qū)崟r的 添加一些掌聲、尖叫聲等激勵音來營造良好的卡拉OK氛圍,將多路音頻合成輸出。目前大多數(shù)網(wǎng)絡(luò)電視產(chǎn)品都構(gòu)筑在LINUX平臺下,網(wǎng)絡(luò)電視軟件的音頻應(yīng)用處理 模塊的底層調(diào)用運營支撐系統(tǒng)(Open Sound System,OSQ應(yīng)用程序編程接口(Application Programming Interface, API)輸出音頻,由于應(yīng)用程序調(diào)用OSS設(shè)備具有獨占性,一旦一 個應(yīng)用程序打開音頻設(shè)備(/dev/dsp)其他設(shè)備都無法同時打開該設(shè)備輸出音頻,無法滿 足卡拉OK多路音頻輸出的要求。

發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明實施例提供了一種基于媒體服務(wù)器實現(xiàn) 音頻合成的方法,包括應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接;在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù) 據(jù)流;所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述合成的多路媒體 數(shù)據(jù)流輸出。相應(yīng)地,所述多路媒體數(shù)據(jù)流為特效音頻數(shù)據(jù)流。相應(yīng)地,所述應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接步驟之前包括所述媒體服務(wù)器預(yù)先創(chuàng)建套接字、數(shù)據(jù)接收隊列和合成隊列。相應(yīng)地,所述在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送 的多路媒體數(shù)據(jù)流步驟還包括所述媒體服務(wù)器將接收到的多路媒體數(shù)據(jù)流存儲在所述數(shù)據(jù)接收隊列中。相應(yīng)地,所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算具體為遍歷所述數(shù)據(jù)接收隊列中的每一個元素的鏈表頭;當(dāng)所述鏈表頭不為空時,從所述數(shù)據(jù)接收隊列中讀取媒體數(shù)據(jù);將所述讀取的媒體數(shù)據(jù)與所述合成隊列中的媒體數(shù)據(jù)進(jìn)行合成運算,并保存在所 述合成隊列中。
相應(yīng)地,所述將所述讀取的媒體數(shù)據(jù)與合成隊列中的媒體數(shù)據(jù)進(jìn)行合成運算,并 保存在所述合成隊列中步驟具體為判斷所述讀取的媒體數(shù)據(jù)的位數(shù);當(dāng)所述媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收隊列中的每一個字節(jié) 與所述合成隊列中的每一個字節(jié)分別相加并減去0x80,并保存在所述合成隊列中;當(dāng)所述媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收隊列中的每兩個字 節(jié)與所述合成隊列中的每兩個字節(jié)分別相加,并保存在所述合成隊列中。相應(yīng)地,所述將所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊列中的每兩個字 節(jié)分別相加步驟還包括判斷所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊列中的每兩個字節(jié)分別相 加的結(jié)果是否溢出;當(dāng)所述相加的結(jié)果大于32767時,將所述相加的結(jié)果更改為0x7FFF并保存在所述 合成隊列中;當(dāng)所述相加的結(jié)果小于-32768時,將所述相加的結(jié)果更改為0x8000并保存在所 述合成隊列中。相應(yīng)地,本發(fā)明實施例還提供了一種基于媒體服務(wù)器實現(xiàn)音頻合成的設(shè)備,包 括通信單元,用于應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接;接收單元,用于在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā) 送的多路媒體數(shù)據(jù)流;合成單元,用于所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述 合成的多路媒體數(shù)據(jù)流輸出。相應(yīng)地,所述設(shè)備還包括設(shè)置單元,用于所述媒體服務(wù)器預(yù)先設(shè)置套接字、數(shù)據(jù)接收隊列和合成隊列;存儲單元,用于將所述接收單元接收到的多路媒體數(shù)據(jù)流存儲在所述數(shù)據(jù)接收隊 列中。相應(yīng)地,所述合成單元包括遍歷單元,用于遍歷所述數(shù)據(jù)接收隊列中的每一個元素的鏈表頭;讀取單元,用于當(dāng)所述鏈表頭不為空時,從所述數(shù)據(jù)接收隊列中讀取媒體數(shù)據(jù);合成子單元,用于將所述讀取單元讀取的媒體數(shù)據(jù)與所述合成隊列中的媒體數(shù)據(jù) 進(jìn)行合成運算,并保存在所述合成隊列中。相應(yīng)地,所述合成子單元包括第一判斷單元,用于判斷所述讀取單元讀取的媒體數(shù)據(jù)的位數(shù);第一運算單元,用于當(dāng)所述媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收 隊列中的每一個字節(jié)與所述合成隊列中的每一個字節(jié)分別相加并減去0x80,并保存在所述 合成隊列中;第二運算單元,用于當(dāng)所述媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收 隊列中的每兩個字節(jié)與所述合成隊列中的每兩個字節(jié)分別相加,并保存在所述合成隊列 中。
相應(yīng)地,所述第二運算單元包括第二判斷單元,用于判斷所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊列中的 每兩個字節(jié)分別相加的結(jié)果是否溢出;第一處理單元,用于當(dāng)所述相加的結(jié)果大于32767時,將所述相加的結(jié)果更改為 0x7FFF并保存在所述合成隊列中;第二處理單元,用于當(dāng)所述相加的結(jié)果小于-32768時,將所述相加的結(jié)果更改為 0x8000并保存在所述合成隊列中。實施本發(fā)明實施例,具有如下有益效果通過應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連 接,而不再是直接打開/dev/dsp等音頻設(shè)備寫入脈沖編碼調(diào)制音頻流,在建立所述網(wǎng)絡(luò)連 接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流,所述媒體服務(wù)器對所 述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述合成的多路媒體數(shù)據(jù)流輸出,實現(xiàn)混合音頻的 輸出,達(dá)到為卡拉OK用戶在演唱歌曲的時候,可以混入特技效果如掌聲、尖叫聲等激勵音, 營造良好的演唱氛圍。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明所提供的基于媒體服務(wù)器實現(xiàn)音頻合成的方法流程圖;圖2為本發(fā)明圖1中媒體數(shù)據(jù)合成器MS進(jìn)行合成運算的方法流程圖;圖3為本發(fā)明所提供的基于媒體服務(wù)器實現(xiàn)音頻合成的設(shè)備結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護(hù)的范圍。參見圖1,圖1為本發(fā)明所提供的基于媒體服務(wù)器實現(xiàn)音頻合成的方法流程圖。具 體步驟如下步驟Sll 應(yīng)用進(jìn)程媒體服務(wù)器建立網(wǎng)絡(luò)連接;具體的,媒體服務(wù)器中的媒體數(shù)據(jù)接收服務(wù)器(Media Receive Server, MRS)預(yù) 先設(shè)置一個套接字并在9989端口上接受網(wǎng)絡(luò)連接,并為每個連接創(chuàng)建一個數(shù)據(jù)接收隊 列作為一個數(shù)組元素鏈入branch^數(shù)組當(dāng)中,媒體器服務(wù)中的媒體數(shù)據(jù)合成器(Media Synthesizer, MS)預(yù)先設(shè)置一個合成隊列trunk,初始值設(shè)為0。網(wǎng)絡(luò)電視中的一個或多 個音視頻處理應(yīng)用進(jìn)程,不再是直接打開/dev/dsp等音頻設(shè)備寫入脈沖編碼調(diào)制(Pluse Code Modulation,PCM)音頻流,而是先與MRS建立網(wǎng)絡(luò)連接,實際操作過程中,應(yīng)用進(jìn)程向 媒體服務(wù)器發(fā)送網(wǎng)絡(luò)連接請求,媒體服務(wù)器接收到應(yīng)用進(jìn)程發(fā)送的網(wǎng)絡(luò)連接請求后,向應(yīng) 用進(jìn)程返回連接請求確認(rèn)信息,此時應(yīng)用進(jìn)程與媒體服務(wù)器成功建立了網(wǎng)絡(luò)連接。
步驟S12 在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的 多路媒體數(shù)據(jù)流;具體的,應(yīng)用進(jìn)程接收到連接請求確認(rèn)信息后,開始向媒體服務(wù)器發(fā)送多路媒體 數(shù)據(jù)流,媒體服務(wù)器通過預(yù)先設(shè)置的套接字接收應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流,即將媒 體數(shù)據(jù)流寫入MRS設(shè)置的套接字中,該多路媒體數(shù)據(jù)流為特效音頻數(shù)據(jù)流,如掌聲、尖叫聲 等激勵音頻流。MRS將接收到的多路媒體數(shù)據(jù)流存儲在預(yù)先設(shè)置的數(shù)據(jù)接收隊列緩沖隊列 branch [i]中,等待MS的進(jìn)一步處理。步驟S13 所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述合成 的多路媒體數(shù)據(jù)流輸出。具體的,MS管理數(shù)據(jù)接收隊列branch隊列和合成隊列trunk隊列,將branch隊 列中的媒體數(shù)據(jù)與trunk隊列中的媒體數(shù)據(jù)進(jìn)行合成運算,詳細(xì)的合成運算如圖2所示,得 出運算結(jié)果信息,將結(jié)果信息保存在合成隊列中,然后通過媒體服務(wù)器中的媒體數(shù)據(jù)輸出 管理器(Media Output Manager,MOM)調(diào)用OSS中的API管理維護(hù)OSS設(shè)備,從trunk隊列 中順序取出緩存媒體數(shù)據(jù),并寫入/dev/dsp設(shè)備中,如果trunk隊列中存儲的媒體數(shù)據(jù)為 控制命令時,如控制聲卡、調(diào)節(jié)音量等,則通過輸入/輸出控制器anput/Output Control, I/0CTL)寫入音頻設(shè)備中,從而實現(xiàn)多路音頻的輸出。參見圖2,圖2為本發(fā)明圖1中媒體數(shù)據(jù)合成器MS進(jìn)行合成運算的方法流程圖; 具體步驟如下步驟S21 遍歷所述數(shù)據(jù)接收隊列中的每一個元素的鏈表頭;具體的,MS遍歷輪詢branch數(shù)組中的每一個元素的鏈表頭。步驟S22 當(dāng)所述鏈表頭不為空時,從所述數(shù)據(jù)接收隊列中讀取媒體數(shù)據(jù);具體的,當(dāng)branch數(shù)組中的元素鏈表頭不為空時,從緩沖隊列branCh[i]中讀取 媒體數(shù)據(jù);步驟S23 判斷所述讀取的媒體數(shù)據(jù)的位數(shù);具體的,判斷所述讀取的媒體數(shù)據(jù)的位數(shù),當(dāng)讀取的媒體數(shù)據(jù)的位數(shù)為8位采樣 數(shù)據(jù)時,執(zhí)行步驟S25,當(dāng)讀取的媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,執(zhí)行步驟S24。步驟S24 將所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊列中的每兩個字節(jié) 分別相加;具體的,當(dāng)讀取的媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,將branch隊列中的每兩個 字節(jié)與trunk隊列中的每兩個字節(jié)分別相加,得出相加結(jié)果,為避免媒體數(shù)據(jù)溢出,執(zhí)行步 驟 S26 ;步驟S25 將所述數(shù)據(jù)接收隊列中的每一個字節(jié)與所述合成隊列中的每一個字節(jié) 分別相加減去0x80 ;具體的,當(dāng)讀取的媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將branch隊列中的每一個 字節(jié)與trunk隊列中的每一個字節(jié)分別相加,然后再減去0x80得出結(jié)果,并執(zhí)行步驟S29。步驟S26 判斷結(jié)果是否溢出;具體的,判斷步驟SM得出的相加結(jié)果是否溢出,如果是則執(zhí)行步驟S27,否則執(zhí) 行步驟幻8。步驟S27 將相加的結(jié)果更改為0x7FFF。
具體的,當(dāng)步驟SM得出的結(jié)果大于32767時,將得出的結(jié)果值更改為0x7FFF,并 執(zhí)行步驟S29。步驟S28 將相加的結(jié)果更改為0x8000 ;具體的,當(dāng)步驟SM得出的結(jié)果小于-32768時,將得出的結(jié)果值更改為0x8000,并 執(zhí)行步驟S29。步驟S29 將所述結(jié)果保存在所述合成隊列中。具體的,將結(jié)果保存在trunk緩沖隊列中。參見圖3,圖3為本發(fā)明所提供的基于媒體服務(wù)器實現(xiàn)音頻合成的設(shè)備結(jié)構(gòu)示意 圖。該設(shè)備包括設(shè)置單元31、通信單元32、接收單元33、存儲單元34和合成單元35其中設(shè)置單元31,用于所述媒體服務(wù)器預(yù)先設(shè)置套接字和數(shù)據(jù)接收隊列;具體的,媒體服務(wù)器中的MRS預(yù)先設(shè)置一個套接字并在9989端口上接受網(wǎng)絡(luò)連 接,并為每個連接創(chuàng)建一個數(shù)據(jù)接收隊列作為一個數(shù)組元素鏈入branch[]數(shù)組當(dāng)中,媒體 器服務(wù)中的MS預(yù)先設(shè)置一個合成隊列trunk,初始值設(shè)為0。通信單元32,用于應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接;具體的,網(wǎng)絡(luò)電視中的一個或多個音視頻處理應(yīng)用進(jìn)程,不再是直接打開/dev/ dsp等音頻設(shè)備寫入PCM音頻流,而是先與MRS建立一個網(wǎng)絡(luò)連接,實際操作過程中,應(yīng)用進(jìn) 程向媒體服務(wù)器發(fā)送網(wǎng)絡(luò)連接請求,媒體服務(wù)器接收到應(yīng)用進(jìn)程發(fā)送的網(wǎng)絡(luò)連接請求后, 向應(yīng)用進(jìn)程返回連接請求確認(rèn)信息,此時應(yīng)用進(jìn)程與媒體服務(wù)器成功建立了網(wǎng)絡(luò)連接。接收單元33,用于在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程 發(fā)送的多路媒體數(shù)據(jù)流;所述應(yīng)用進(jìn)程接收到所述連接請求確認(rèn)信息后,向所述MRS發(fā)送 媒體數(shù)據(jù)流;具體的,應(yīng)用進(jìn)程接收到連接請求確認(rèn)信息后,開始向媒體服務(wù)器發(fā)送多路媒體 數(shù)據(jù)流,媒體服務(wù)器通過預(yù)先設(shè)置的套接字接收應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流,即將媒 體數(shù)據(jù)流寫入MRS設(shè)置的套接字中,該多路媒體數(shù)據(jù)流為特效音頻數(shù)據(jù)流,如掌聲、尖叫聲 等激勵音頻流。存儲單元34,用于將所述接收單元33接收到的多路媒體數(shù)據(jù)流存儲在所述數(shù)據(jù) 接收隊列中;具體的,MRS將接收單元33接收到的多路媒體數(shù)據(jù)流存儲在預(yù)先設(shè)置的數(shù)據(jù)接收 隊列緩沖隊列branch[i]中,等待MS的進(jìn)一步處理。合成單元35,用于所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所 述合成的多路媒體數(shù)據(jù)流輸出,合成單元35包括遍歷單元351、讀取單元352及合成子單元 353,其中遍歷單元351用于遍歷所述數(shù)據(jù)接收隊列中的每一個元素的鏈表頭;具體的,MS遍歷輪詢branch數(shù)組中的每一個元素的鏈表頭。讀取單元352用于當(dāng)所述鏈表頭不為空時,從所述數(shù)據(jù)接收隊列中讀取媒體數(shù) 據(jù);具體的,當(dāng)branch數(shù)組中的元素鏈表頭不為空時,從緩沖隊列branch[i]中讀取 媒體數(shù)據(jù);合成子單元353用于將所述讀取單元352讀取的媒體數(shù)據(jù)與所述合成隊列中的媒體數(shù)據(jù)進(jìn)行合成運算,并保存在所述合成隊列中,合成子單元353包括第一判斷單元3531、 第一運算單元3532和第二運算單元3533,其中第一判斷單元3531用于判斷所述讀取單元352讀取的媒體數(shù)據(jù)的位數(shù);第一運算單元3532用于當(dāng)所述媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接 收隊列中的每一個字節(jié)與所述合成隊列中的每一個字節(jié)分別相加并減去0x80,并保存在所 述合成隊列中;具體的,當(dāng)讀取的媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將branch隊列中的每一個 字節(jié)與trunk隊列中的每一個字節(jié)分別相加,然后再減去0x80得出結(jié)果,并將結(jié)果保存在 trunk緩沖隊列中。第二運算單元3533用于當(dāng)所述媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,將所述數(shù)據(jù) 接收隊列中的每兩個字節(jié)與所述合成隊列中的每兩個字節(jié)分別相加,并保存在所述合成隊 列中,第二運算單元3533包括第二判斷單元35331、第一處理單元35332和第二處理單元 35333,其中第二判斷單元35331用于判斷所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊 列中的每兩個字節(jié)分別相加的結(jié)果是否溢出;第一處理單元35332用于當(dāng)所述相加的結(jié)果大于32767時,將所述相加的結(jié)果更 改為0x7FFF并保存在所述合成隊列中;具體的,當(dāng)?shù)诙袛鄦卧?5331判斷出branch隊列中的每兩個字節(jié)與trunk隊列 中的每兩個字節(jié)分別相加的結(jié)果大于32767時,將得出的結(jié)果值更改為0x7FFF,并保存在 trunk緩沖隊列中。第二處理單元35333用于當(dāng)所述相加的結(jié)果小于-32768時,將所述相加的結(jié)果更 改為0x8000并保存在所述合成隊列中;具體的,當(dāng)?shù)诙袛鄦卧?5331判斷出branch隊列中的每兩個字節(jié)與trunk隊列 中的每兩個字節(jié)分別相加的結(jié)果小于_3沈78時,將得出的結(jié)果值更改為0x8000,并保存在 trunk緩沖隊列中。需要說明的是,MS將合成運算結(jié)果保存在合成隊列trunk隊列后,媒體服務(wù)器中 的MOM調(diào)用OSS中的API管理維護(hù)OSS設(shè)備,從trunk隊列中順序取出緩存媒體數(shù)據(jù),并寫 入/dev/dsp設(shè)備中,如果trunk隊列中存儲的媒體數(shù)據(jù)為控制命令時,如控制聲卡、調(diào)節(jié)音 量等,則通過I/0CTL寫入音頻設(shè)備中,從而實現(xiàn)多路音頻的輸出。綜上所述,通過應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接,而不再是直接打開/dev/ dsp等音頻設(shè)備寫入脈沖編碼調(diào)制音頻流,在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收 所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流,所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運 算,并將所述合成的多路媒體數(shù)據(jù)流輸出,實現(xiàn)混合音頻的輸出,達(dá)到為卡拉OK用戶在演 唱歌曲的時候,可以混入特技效果如掌聲、尖叫聲等激勵音,營造良好的演唱氛圍。以上所揭露的僅為本發(fā)明一種較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán) 利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種基于媒體服務(wù)器實現(xiàn)音頻合成的方法,其特征在于,包括應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接;在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流;所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述合成的多路媒體數(shù)據(jù) 流輸出。
2.如權(quán)利要求1所述的方法,其特征在于,所述多路媒體數(shù)據(jù)流為特效音頻數(shù)據(jù)流。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連 接步驟之前包括所述媒體服務(wù)器預(yù)先設(shè)置套接字、數(shù)據(jù)接收隊列和合成隊列。
4.如權(quán)利要求3所述的方法,其特征在于,所述在建立所述網(wǎng)絡(luò)連接之后,所述媒體服 務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流步驟包括所述媒體服務(wù)器通過預(yù)先設(shè)置的套接字接收所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流;所述媒體服務(wù)器將接收到的多路媒體數(shù)據(jù)流存儲在所述數(shù)據(jù)接收隊列中。
5.如權(quán)利要求1至4任一項所述的方法,其特征在于,所述媒體服務(wù)器對所述多路媒體 數(shù)據(jù)流進(jìn)行合成運算具體為遍歷所述數(shù)據(jù)接收隊列中的每一個元素的鏈表頭;當(dāng)所述鏈表頭不為空時,從所述數(shù)據(jù)接收隊列中讀取媒體數(shù)據(jù);將所述讀取的媒體數(shù)據(jù)與所述合成隊列中的媒體數(shù)據(jù)進(jìn)行合成運算,并保存在所述合 成隊列中。
6.如權(quán)利要求5所述的方法,其特征在于,所述將所述讀取的媒體數(shù)據(jù)與合成隊列中 的媒體數(shù)據(jù)進(jìn)行合成運算,并保存在所述合成隊列中步驟具體為判斷所述讀取的媒體數(shù)據(jù)的位數(shù);當(dāng)所述媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收隊列中的每一個字節(jié)與所 述合成隊列中的每一個字節(jié)分別相加并減去0x80,并保存在所述合成隊列中;當(dāng)所述媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與 所述合成隊列中的每兩個字節(jié)分別相加,并保存在所述合成隊列中。
7.如權(quán)利要求6所述的方法,其特征在于,所述將所述數(shù)據(jù)接收隊列中的每兩個字節(jié) 與所述合成隊列中的每兩個字節(jié)分別相加步驟還包括判斷所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊列中的每兩個字節(jié)分別相加的 結(jié)果是否溢出;當(dāng)所述相加的結(jié)果大于32767時,將所述相加的結(jié)果更改為0x7FFF并保存在所述合成 隊列中;當(dāng)所述相加的結(jié)果小于-32768時,將所述相加的結(jié)果更改為0x8000并保存在所述合 成隊列中。
8.一種基于媒體服務(wù)器實現(xiàn)音頻合成的設(shè)備,其特征在于,包括通信單元,用于應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接;接收單元,用于在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的 多路媒體數(shù)據(jù)流;合成單元,用于所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述合成 的多路媒體數(shù)據(jù)流輸出。
9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述設(shè)備還包括設(shè)置單元,用于所述媒體服務(wù)器預(yù)先設(shè)置套接字、數(shù)據(jù)接收隊列和合成隊列; 存儲單元,用于將所述接收單元接收到的多路媒體數(shù)據(jù)流存儲在所述數(shù)據(jù)接收隊列中。
10.如權(quán)利要求9所述的設(shè)備,其特征在于,所述合成單元包括 遍歷單元,用于遍歷所述數(shù)據(jù)接收隊列中的每一個元素的鏈表頭;讀取單元,用于當(dāng)所述鏈表頭不為空時,從所述數(shù)據(jù)接收隊列中讀取媒體數(shù)據(jù); 合成子單元,用于將所述讀取單元讀取的媒體數(shù)據(jù)與所述合成隊列中的媒體數(shù)據(jù)進(jìn)行 合成運算,并保存在所述合成隊列中。
11.如權(quán)利要求10所述的設(shè)備,其特征在于,所述合成子單元包括 第一判斷單元,用于判斷所述讀取單元讀取的媒體數(shù)據(jù)的位數(shù);第一運算單元,用于當(dāng)所述媒體數(shù)據(jù)的位數(shù)為8位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收隊列 中的每一個字節(jié)與所述合成隊列中的每一個字節(jié)分別相加并減去0x80,并保存在所述合成 隊列中;第二運算單元,用于當(dāng)所述媒體數(shù)據(jù)的位數(shù)為16位采樣數(shù)據(jù)時,將所述數(shù)據(jù)接收隊列 中的每兩個字節(jié)與所述合成隊列中的每兩個字節(jié)分別相加,并保存在所述合成隊列中。
12.如權(quán)利要求11所述的設(shè)備,其特征在于,所述第二運算單元包括第二判斷單元,用于判斷所述數(shù)據(jù)接收隊列中的每兩個字節(jié)與所述合成隊列中的每兩 個字節(jié)分別相加的結(jié)果是否溢出;第一處理單元,用于當(dāng)所述相加的結(jié)果大于32767時,將所述相加的結(jié)果更改為 0x7FFF并保存在所述合成隊列中;第二處理單元,用于當(dāng)所述相加的結(jié)果小于-32768時,將所述相加的結(jié)果更改為 0x8000并保存在所述合成隊列中。
全文摘要
本發(fā)明公開了一種基于媒體服務(wù)器實現(xiàn)音頻合成的方法,包括應(yīng)用進(jìn)程與媒體服務(wù)器建立網(wǎng)絡(luò)連接;在建立所述網(wǎng)絡(luò)連接之后,所述媒體服務(wù)器接收所述應(yīng)用進(jìn)程發(fā)送的多路媒體數(shù)據(jù)流;所述媒體服務(wù)器對所述多路媒體數(shù)據(jù)流進(jìn)行合成運算,并將所述合成的多路媒體數(shù)據(jù)流輸出。本發(fā)明還公開了一種基于媒體服務(wù)器實現(xiàn)音頻合成的設(shè)備,采用本發(fā)明所提供的方案,可以實現(xiàn)多路音頻的混合輸出。
文檔編號H04L29/06GK102104580SQ20091018912
公開日2011年6月22日 申請日期2009年12月21日 優(yōu)先權(quán)日2009年12月21日
發(fā)明者王叢華 申請人:康佳集團(tuán)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1