freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

即時消息系統(tǒng)的設(shè)計與實現(xiàn)語音通訊模塊的實現(xiàn)畢業(yè)設(shè)計論文-資料下載頁

2025-06-18 14:04本頁面
  

【正文】 域。因此選擇 VS2022作為 IDE來進行此次開發(fā)。相對以前的編程語言來說,C語言在效率與安全性上得了很大的改善,并且支持現(xiàn)有的網(wǎng)絡(luò)編程新標準,它使程序員快速便捷地創(chuàng)建基于 Microsoft .NET平臺的解決方案。這種框架使 C組件可以方便地轉(zhuǎn)化為 XML網(wǎng)絡(luò)服務(wù),從而使任何平臺的應(yīng)用程序都可以通過 Inter調(diào)用它。還有,C增強了開發(fā)者的效率,同時也致力于消除編程中可能導致嚴重結(jié)果的錯誤,使得 C/C++程序員可以快速進行網(wǎng)絡(luò)開發(fā),同時也保持了開發(fā)者所需要的功能強大性和靈活性。于是筆者選擇 Visual C語言來進行此次開發(fā)。 流程設(shè)計一般語音通訊系統(tǒng)的流程應(yīng)該包括:建立連接,音頻捕獲,音頻發(fā)送(包括音頻壓縮),音頻接收,音頻回放(包括音頻解壓)五個部分。其基本流程為:建立連接→初始化麥克風(打開音頻設(shè)備)→捕獲音頻→音頻壓縮→音頻傳送→音頻接收→音頻解壓→音頻回放。其流程具體設(shè)計如下:(1)建立連接:兩臺計算機之間進行語音通訊,首先就是要在雙方進行連接的建立,然后雙方才能夠進行通訊,確定數(shù)據(jù)發(fā)送到什么地方。本系統(tǒng)中一方先發(fā)出語音聊天請求,并通過 XMPP協(xié)議根據(jù)對方的 ID把請求發(fā)送給對方,在接收方接收到請求并點擊“接受”后,接收方完成自己語音通訊相關(guān)的工作,并且再根據(jù)發(fā)送方的 ID發(fā)送一個消息回去,表示自己已經(jīng)接受,在最初發(fā)出請求的主機接收到對方已接收請受后,此主機也完成自己語音通訊相關(guān)的工作,至此雙方的連接建立完畢,可以正常進行通信了。(2)音頻捕獲:先初始化麥克風,再打開本機的“混音器”并得其句柄,根據(jù)此句柄調(diào)用 ,并把其存放在一個數(shù)組中(因為采用 PCM,所以捕獲到的音頻是一此離散的數(shù)字)。(3)音頻發(fā)送:建立 Socket連接(UDP 協(xié)議),利用 socket的 BeginSendTo()函數(shù)將數(shù)據(jù)發(fā)送給遠程主機。這個過程中會用到 G729提供的壓縮算法對存放于數(shù)組中的數(shù)據(jù)進行 16:1 的壓縮,減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。(4)音頻接收:建立 Socket連接(UDP 協(xié)議),利用 socket的 BeginReceiveFrom()函數(shù)從指定的遠程主機接收數(shù)據(jù)并存放于一個數(shù)組中。(5)音頻回放:本機通過音頻接收已經(jīng)將遠程主機發(fā)送來的音頻數(shù)據(jù)保存在了一個數(shù)組中,這里只需根據(jù)本機的“混音器”句柄調(diào)用 行即可實現(xiàn)語音回放功能。當然,這里在回放之前會先調(diào)用 G729提供解壓算法對保存于數(shù)組中的音頻數(shù)據(jù)進行解壓。 語音通訊系統(tǒng)總體設(shè)計本語音通訊系統(tǒng)采用面向?qū)ο蟮幕局R,再結(jié)合系統(tǒng)的需求分析和基本流程,將系統(tǒng)主要分為如下四個模塊:登錄模塊,連接建立模塊,音頻捕獲模塊,音頻回放模塊。其中音頻捕獲模塊和音頻回放模塊又可以分為若干小的模塊,最后其每一個小的模塊都采用一個類來進行實現(xiàn)??傮w設(shè)計見圖42:圖 43:登錄模塊流程圖 Flow chart of login module圖42:功能模塊的總體設(shè)計圖 Total design of function module 語音通訊系統(tǒng)詳細設(shè)計 登錄模塊這個模塊是整個即時通信系統(tǒng)所共用的一個模塊,是進入本即時通信系統(tǒng)的界面,在這個模塊中主要是根據(jù)用戶ID和PASSWORD(把其存放XmppClientConnection的一個對象中)采用XMPP協(xié)議的XmppClientConnection對象提供的open()方法發(fā)送到指定的服務(wù)器上進行驗證,若驗證成功,服務(wù)器會將其登錄成功的消息以及與此用戶相關(guān)的一些信息(如:詳細信息,好友列表等到)一起返回到客戶端,從而讓用戶進入登錄后的主界面MainFrom窗體,在這個窗體中顯示了此用戶可以進行的一系列操作和該用戶的好友列表。在用戶登錄進服務(wù)器的同時,在服務(wù)器中記錄下此用戶的ID以及其IP地址,以便其它用戶上線時查用。其流程圖見圖43: 建立連接模塊兩個用戶要進行語音通訊必須在一方發(fā)送請求而另一方接收請求,然后建立其連接的情況下才能發(fā)生。此模塊主要完成兩個功能:一個是初始化麥克風,另一個就是建立通信連接,從而能進行正常語音通信。語音的大小可以通過音頻設(shè)備進行控制,所以我們必須得到音頻設(shè)備的句柄最終實現(xiàn)對聲音大小的控制。所以我們必須初始化音圖 44:建立通信連接流 Flow chart of erect munication link圖 45:音頻捕獲模塊流程圖 chart of audio capture moudle頻設(shè)備(其實是建立類的一個對象),并在聊天過程中可以改變音量的大小。此初始化過程是用戶點擊另一個用戶想進行聊天的時候進行實現(xiàn),主要是通過在我們自己定義的一個自定義控件中進行調(diào)用 Mixer類進行實現(xiàn)。其中 Mixer類主要完成:根據(jù)給定的窗口句柄打開混音器, 獲取混音器設(shè)備指定的線路信息, 獲取關(guān)聯(lián)音頻線路的一個或多個控制器并從控制器中得到其音量等信息,獲取指定控制器的詳細信息, 設(shè)置指定控制器的詳細信息。這樣我們其對象來調(diào)節(jié)麥克風以及揚聲器音量的大小。 系統(tǒng)中一方先發(fā)出語音聊天請求(將自己的 IP放于一個 Oob對象(Oob 類是 XMPP協(xié)議提供的一個表示語音聊天的專用類)中,并將此 Oob對象存于 IQ的對象中,并設(shè)置 IQ的相關(guān)屬性(to,Type),通過 XmppClientConnection對象發(fā)送給指定的用戶,在服務(wù)器接收到此 IQ信息后,判斷這是發(fā)給哪一個用戶的 IQ進而轉(zhuǎn)發(fā)給該用戶,在接收方接收到此請求后,并根據(jù)發(fā)送方的 ID進行判斷是否要與此人進行語音聊天,若選擇“接受”則表示要進行語音聊天,所以接收方會先完成自己這邊進行語音聊天所需進行的一些準備工作,并會用上面發(fā)送主發(fā)送請求一樣的方法發(fā)送一個消息給對方(只是 IQ的屬性值不同,如 Type=get表示發(fā)出語音聊天請求,Type=set 表示接受語音聊天請求 Type=result表示拒絕語音聊天等),當最先發(fā)出請求的一方接收到對方已接受請求后,則完成自己進行語音通信相關(guān)準備工作。到此語音通信連接建立完成,建立通信連接流程圖見圖 44: 其中上面雙方建立通信連接時,當接收方接受請求后,雙方會完成自己一些語音通信相關(guān)準備工作,這些準備工作是:通過建立語音通信類(AV)對象,并調(diào)用 AV類所提供的接口 IniChanel()和IniAudio()建立 Socket連接并建立相關(guān)對象和完成一系列初始化工作,進而開始雙方的正常通信。 音頻捕獲模塊音頻捕獲在整個語音通訊系統(tǒng)中占據(jù)核心地位,這個模塊核心功能就是完成音頻捕獲并發(fā)送給遠程圖 47: AV類圖 Class Diagrame of AVof AV圖 48: AVChanel類圖 Class Diagrame of AVChanel圖 49: AVException類圖9:ClassDiagrameof AVException圖 410: g729類圖 Class Diagrame of g729圖 411:WaveIn類圖 Class Diagrame of WaveIn圖 412:WaveOut類圖 Class Diagrame of WaveOut主機。其主要步驟有:確定音頻格式,建立音頻捕獲對象,打開錄音設(shè)備,為設(shè)備分配足夠的內(nèi)存做緩沖區(qū),將緩沖區(qū)與設(shè)備相關(guān)聯(lián),開始錄音捕獲音頻,將捕獲到的音頻壓縮并發(fā)送給遠程主機。其流程圖見圖 45,此模塊的功能主要由以下類進行完成: AV類:此類是此系統(tǒng)面向?qū)ο笾R體現(xiàn)之所在,它把所有與語音通訊相關(guān)的東西都進行了封裝,只提供了幾個接口給用戶進行調(diào)用即可實現(xiàn)語音通訊,體現(xiàn)了面向?qū)ο缶幊痰乃枷?,對用戶來說簡單,對系統(tǒng)來說也比較安全(避免用戶直接操作其中的數(shù)據(jù))。這個類在用戶調(diào)用其構(gòu)造函數(shù)創(chuàng)建其一個對象后,主要提供了兩個接口給用戶,即 IniChanel()和 IniAudio()。在 IniChanel()中,首先建立一個AVChannel類的一個對象,此對象用于完成 Socket的建立以及接收來自遠程主機發(fā)送來的音頻數(shù)據(jù)。在 IniAudio()方法中,首先會確定此次采樣波形的格式(即設(shè)置WAVEFORMATEX結(jié)構(gòu)體的一系列參數(shù)),然后根據(jù)此波形格式建立一個建立一個音頻捕獲類(WaveIN)的對象,并調(diào)用其 Start()方法讓此對象開始捕獲音頻。 其類圖見圖圖 46:音頻回放模塊流程 Flow chart ofaudio playback47: AVChannel類:此類主要用于完成一系列準備工作。首先建立 Socket對象并綁定(使用 UDP協(xié)議建立),初始化音頻編碼器和音頻解碼器,然后將 WaveIn類捕獲到的音頻數(shù)據(jù)經(jīng)過壓縮后通過 Socket的 BeginSendTo()方法發(fā)送給特定的遠程主機。圖見48: G729類:此類在音頻捕獲模塊里主要是完成音頻數(shù)據(jù)的壓縮功能。由于通過采樣得到的語音數(shù)據(jù)量比較大,所以必須經(jīng)過壓縮傳送才能減少網(wǎng)絡(luò)負擔。此類通過調(diào)用 16:1的壓縮。其類圖見圖 410: Struct類:這個類主要是指明整個系統(tǒng)中所共用的一系列結(jié)構(gòu)體。其中與音頻捕獲相關(guān)的結(jié)構(gòu)體有兩個:一個是 WAVEHDR,其主要是用于指明音頻捕獲過程中所用到的緩沖區(qū)的格式及一系列參數(shù)。另一個是 WAVEFORMATEX,這個結(jié)構(gòu)體主要是指明波形的格式,包括采樣頻率,采樣位數(shù)等一系列重要的參數(shù)。WaveIn類:這個類是音頻捕獲的核心類,主要的音頻捕獲工作都是在這個類中進行完成的。這個類主要會利用 ,其中主要的工作有:打開一個波形輸入設(shè)備,為波形輸入設(shè)備準備一個輸入緩沖區(qū),向波形輸入設(shè)備添加一個輸入緩沖區(qū),啟動在指定的波形輸入設(shè)備的輸入并開始錄音, 清除緩存,關(guān)閉設(shè)備并停止錄音。在啟動在指定的波形輸入設(shè)備的輸入并開始錄音后,若緩沖區(qū)中的數(shù)據(jù)裝滿則通過回調(diào)函數(shù)和一系列委托最終通過AVChannel對象調(diào)用 Socket的 BeginSendTo()方法發(fā)送給特定的遠程主機。其類圖見圖 411:AVException類:主要是對上面一系列工作中所出現(xiàn)的異常進行簡單的處理。其類圖見圖 49: 音頻回放模塊要實現(xiàn)語音聊天,只把進行語音捕獲是遠遠不夠的,還必須在接收端把其接收到的音頻數(shù)據(jù)進行回放,才能達到真正意義上的實時語音通訊的目的。這個模塊主要就是完成接收從遠程主機發(fā)送來的數(shù)據(jù)并進行回放。其主要步驟有:確定音頻格式,建立音頻回放對象,打開與此主機相關(guān)的回放設(shè)備(混音器設(shè)備)并得到其句柄,為回放設(shè)備準備一個波形緩沖區(qū)(內(nèi)存塊),向指定的波形輸出設(shè)備發(fā)送一個數(shù)據(jù)塊,停止放音,關(guān)閉回放設(shè)備。其流程圖見圖 46,此模塊功能主要由以下類進行完成:AV類:此類是此系統(tǒng)面向?qū)ο笾R體現(xiàn)之所在,它把所有與語音通訊相關(guān)的東西都進行了封裝,只提供了一個接口給用戶進行調(diào)用即可實現(xiàn)語音通訊,體現(xiàn)了面向?qū)ο缶幊痰乃枷?,對用戶來說簡單,對系統(tǒng)來說也比較安全(避免用戶直接操作其中的數(shù)據(jù))。這個類在用戶調(diào)用其構(gòu)造函數(shù)創(chuàng)建其一個對象后,主要提供了兩個接口給用戶,即 IniChanel()和 IniAudio()。在 IniChanel()中,首先建立一個AVChannel類的一個對象,此對象用于完成 Socket的建立以及接收來自遠程主機發(fā)送來的音頻數(shù)據(jù)進行回放,并進行一些委托的初始設(shè)置。在 IniAudio()方法中,首先會確定此次回放波形的格式(即設(shè)置 WAVEFORMATEX結(jié)構(gòu)體的一系列參數(shù)),然后根據(jù)此波形格式建立一個建立一個音頻回放類(WaveOut)的對象,并調(diào)用其 Start()方法讓此對象開始音頻回放。其類圖見圖 47: AVChannel類:此類主要用于完成一系列準備工作。首先建立 Socket對象并綁定(使用 UDP協(xié)議建立),初始化音頻編碼器和音頻解碼器,然后使用 Socket的BeginReceiveFrom()方法,接收遠程主機發(fā)送過來的音頻數(shù)據(jù)并存于緩沖區(qū)數(shù)組中,當緩沖區(qū)滿后執(zhí)行其回調(diào)函數(shù)及其相關(guān)委托,最終調(diào)用 WaveOut類的 Wirte()方法實現(xiàn)語音回放。其類圖見圖 48: G729類:此類在音頻回放模塊里主要是完成音頻數(shù)據(jù)的解壓功能。為了減少網(wǎng)絡(luò)負擔,發(fā)送方已經(jīng)將音頻數(shù)據(jù)進行了壓縮,所以接收端進行音頻回放時應(yīng)該進行數(shù)據(jù)解壓。其類圖見圖 410:Struct類:這個類主要是指明整個系統(tǒng)中所共用的一系列結(jié)構(gòu)體。其中與音頻回放相關(guān)的結(jié)構(gòu)體有兩個:一個是 WAVEHDR,其主要是用于指明音頻捕獲過程中所用到的緩沖區(qū)的格式及一系列參數(shù)。另一個是 WAVEFORMATEX,這個結(jié)構(gòu)體主要是指明波形的格式,包括采樣頻率,采樣位數(shù)等一系列重要的參數(shù)。WaveOut類:這個類是音頻回放的核心類,主要的音頻回放工作都是在這個類中進行完成的。這個類主要會利用 ,其中主要的工作有:打開回放設(shè)備,并得到其句柄, 為回放設(shè)備準備一個波形緩沖區(qū)(內(nèi)存塊), 向指定的波形輸出設(shè)備發(fā)送一個數(shù)據(jù)塊(此音頻數(shù)據(jù)已經(jīng)在 AVChannel中接收), 停止放音, 關(guān)閉回放設(shè)備。其類圖見圖 412:圖 414:語音通訊系統(tǒng)的對象模型 Voice munication system object modelAVException類:主要是對上面一系列工作中所出現(xiàn)的異常進行簡單的處理。其類圖見圖 49:根據(jù)以上分析可以得到對象模型為圖 414:圖 51:登錄界面 The login interface第五章 語音通訊系統(tǒng)的實現(xiàn) 構(gòu)建語音
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1