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

正文內(nèi)容

畢業(yè)設(shè)計-動態(tài)語音視頻傳輸技術(shù)的研究及實現(xiàn)(編輯修改稿)

2025-01-08 19:25 本頁面
 

【文章內(nèi)容簡介】 。所采用的協(xié)議為(多媒體通信控制協(xié)議),它定義了請求、應(yīng)答、信令和指示四種信息,通過各種終端間進行通信能力協(xié)商,打開 /關(guān)閉邏輯信道,發(fā)送命令或指示等操作,完成對通信的控制。 層:將視頻、音頻、控制等數(shù)據(jù)格式化并發(fā)送,同時從網(wǎng)絡(luò)接收數(shù)據(jù)。另外,還負責(zé)處理一些諸如邏輯分幀、加序列號、錯誤檢測等功能。 7 3 視頻語音 聊天系統(tǒng)設(shè)計 軟件的體系結(jié)構(gòu) 在軟件功能結(jié)構(gòu)上,視頻會議軟件系統(tǒng)分為 4個層次,具體結(jié)構(gòu)模型如圖 4所示。 圖 4 視頻語音聊天系統(tǒng)軟件體系結(jié)構(gòu) 系統(tǒng)中主要軟件模塊功能如下: (1)視頻模塊。為雙方提供實時的視頻傳輸機制,使雙方的形象都可以實時顯示在操作界面上,主要完成視頻數(shù)據(jù)的采集、編碼、發(fā)送、接收、解碼、回放等功能,圖像編碼標準采用 H. 263。 (2)音頻模塊。為雙方提供實時的對話機制,使雙方都能聽到對方的談話。主要完成音頻數(shù)據(jù)的 采集、編碼、發(fā)送、接收、解碼、混音、回放等功能,采用 G. 723. 1標準 (5. 3kbps或 6. 3kbps速率 )進行編解碼。 (3)RTP/ RTCP模塊。使用 H225. 0標準完成音視頻流的同步。以及回放的次序性和連貫性。 (4)通信控制模塊。使用 H. 245標準建立音/視頻通信。 音視頻信號的采集、壓縮和傳輸 視頻語音聊天系統(tǒng)的實現(xiàn)包括音視頻信號采集、壓縮、傳輸、解壓縮、播放等步驟。系統(tǒng)以普通的 PC機為終端,用話筒和視頻攝像頭實現(xiàn)音視頻信號的采集,以純軟件方式完成音視頻信號的壓縮、解壓、存儲和播放。聲音、視頻的 實時性比可靠性更重要,因此,采用實時傳輸協(xié)議 RTC進行傳輸。壓縮后的視頻數(shù)據(jù)封裝到腫包中通過 UDP協(xié)議傳到接收端,接收端實時解碼回放。 系統(tǒng)控制 音頻 /視頻數(shù)據(jù)處理 音頻 /視頻流傳輸 Inter/intra/TCP 通信控制 視頻處理 .1 音頻處理 RTP/RTCP()實時數(shù)據(jù)傳輸 視頻I/O 設(shè)備 音頻I/O設(shè)備 8 4 視頻語音聊天系統(tǒng) 的實現(xiàn) 下面給出一個使用微軟實時通信( RTC)創(chuàng)建音頻與視頻會議的點對點聊天對話及整合音頻視頻調(diào)節(jié)向?qū)У慕涌凇? 代碼簡介 以實時通信應(yīng)用程序接口來使用豐富的通信是一個簡單的過程。 (1) 增強的客戶端應(yīng)用程序決定了客戶端通信平臺的功能。 (2) 應(yīng)用程序在通信會話中選擇使用偏愛的音頻與視頻設(shè)備。 (3) 應(yīng)用程序初始化一個通信會話。 (4) 實時通信層協(xié)調(diào)數(shù)據(jù)的獲得、壓縮和傳輸,應(yīng)用程序 傳輸數(shù)據(jù),所使用的音頻與視頻編解碼器是根據(jù)通信的兩者之間的連接質(zhì)量決定的。 實時通信客戶端接口 需要的頭文件 代碼使用 CLSID_RTCClient(GUID={7a42ea29a2b740c4b091f6f024aa89be})的CoCreateInstance()的實時通信客戶端接口。一旦這個接口可用, Initialize()這個 COM對象來判斷這個平臺的通信會話性能。 //初始 RTC COM 對象 Hr=CoCreateInstance (CLSID_RTCClient,NULL, CLSCTX_INPROC_SERVER,IID_IRTCCLient, (LPVOID *)amp。m_pClient)。 //初始化客戶端口 Hr = m_pClientInitialize()。 通信類型選擇 選擇偏愛的通信和相關(guān)的設(shè)備類型。缺省的情況是使用所有的通信類型。如果通信會話的參與者能夠通信會話的參與者能夠共享應(yīng)用程序、產(chǎn)地即時信息、聲音的和視頻,這些性能都能夠自動的可用。如果一個參與者不支持特定的通信類型,那么對于所有的會話參與者來說,這種通信類型也是不可用的。 M_pClientSetPreferredMediaTypes ( RTCMT_ALL,VARIANT_TRUE )。 會話參與者的平臺性能和可用帶寬決定了使用何種音頻與視頻編解碼器。 視頻 Windows 實時通信客戶端在 1/4GIF圖像格式( 176*144)分辨率下支持 碼器。這些可變比特率編解碼器發(fā)送介于 6125Kbit/s的視頻數(shù)據(jù)。使用 IRTCClient接口方法put_MaxBitRate和 put_TemporalSpatialTradeOff可能影響目標的視頻轉(zhuǎn)換的空間時間分辨 9 率。 音頻 Windows實時通信客戶端支持許多種音頻編解碼器。音頻編解碼器是基于終端的連接質(zhì)量而定的。下表 1列出了支持的音頻編解碼器。 表 1 系統(tǒng)支持的音頻編解碼器 編解碼器 采樣率 (kHz) 比特率 (Kbit/s) 幀尺寸 (ms) 8 64 20 16 24 20 8 30,60,90 GSM 8 13 20 DVI4 8 32 20 SIREN 16 16 20,40 選擇了通信類型和相關(guān)的設(shè)備后,就可以調(diào)整這些通信設(shè)備了。實時通信應(yīng)用程 序接口提供了一個向?qū)?,以便更好的調(diào)節(jié)攝像頭和麥克風(fēng)。使用 RTCClient接口的 InvokeTuningWizard()方法來調(diào)節(jié)它們的設(shè)置。 void CAVDConfDlg::OnTuning() { If(m_pClient) M_pClientInvokeTuningWizard((OAHWND)m_hWnd)。 } 初始化一個會話 在應(yīng)用程序能夠與其它連接之前,它必須能夠處理在會話期間實時通信 fire off 的事件。在 PC到 PC的通信中,應(yīng)用程序捕獲音量強度、媒體、客戶端消息和會話狀 態(tài)改變等事件。下面代碼是創(chuàng)建一個事件過濾器來捕獲特定的 RTC事件類型。 lEventMask設(shè)置了應(yīng)用程序感興趣的一組事件。 CRTCEvents類為附屬的客戶端發(fā)送事件。RTCEvents對象在應(yīng)用程序和 IRTCEventNotification接口之間創(chuàng)建一個接口。所有的實時通信事件將由 RTCEvents類處理。 //初始化實時通信客戶端 HRESULT CAVDConfDlg::InitRTCClient() { //創(chuàng)建 RTC客戶端 HRESULT hr。 m_pClient = NULL。 m_pEvents = NULL。 //當前線程中初始化 COM庫 hr = CoInitialize(NULL)。 if (FAILED(hr)) 10 { return hr。 } //初始 RTC COM對象 hr = CoCreateInstance (CLSID_RTCClient, NULL, CLSCTX_INPROC_SERVER, IID_IRTCClient, (LPVOID *)amp。m_pClient)。 if (FAILED(hr)) { return hr。 } //初始化客戶端接口 hr = m_pClientInitialize()。 if (FAILED(hr)) { SAFE_RELEASE(m_pClient)。 return hr。 } //設(shè)置選擇的媒體類型 //使用 RTCMT_ALL參數(shù)將會初始化視頻、音頻和 m_pClientSetPreferredMediaTypes ( RTCMT_ALL, VARIANT_TRUE )。 //設(shè)置事件過濾器來監(jiān)聽 RTC事件 long lEventMask = RTCEF_SESSION_STATE_CHANGE | RTCEF_MEDIA | RTCEF_INTENSITY | RTCEF_CLIENT。 //初始化本程序需要函數(shù)的事件過濾器 hr = m_pClientput_EventFilter( lEventMask )。 if ( FAILED(hr) ) { SAFE_RELEASE(m_pClient)。 return hr。 } //創(chuàng)建事件接受對象 m_pEvents = new CRTCEvents。 if (!m_pEvents) { SAFE_RELEASE(m_pClient)。 return hr。 11 } //初始化事件處理器 hr = m_pEventsAdvise( m_pClient, m_hWnd )。 if ( FAILED(hr) ) { SAFE_RELEASE(m_pClient)。 return hr。 } //設(shè)置為 RTC客戶端模式 //使用 RTCLM_BOTH參數(shù)打開標注的 SIP端口 5060,同時打開一個動態(tài)的端口 hr = m_pClientput_ListenForIningSessions(RTCLM_BOTH)。 if ( FAILED(hr) ) { SAFE_RELEASE(m_pClient)。 return hr。 } //初始化 IDLE的狀態(tài)自 動機 if (m_AVDlg) (RTCSS_IDLE)。 return S_OK。 } LRESULT CAVDConfDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_RTC_EVENT: OnRTCEvent (message, wParam, lParam)。 break。 } return CDialog::WindowProc(message, wParam, lParam)。 } 處理實時通信事件 一旦事件處理器被 IRTCEventNotification接收端注冊,那么接收和處理實時通信事件就非常簡單。當實時通信事件被樣例應(yīng)用程序接收的時候,應(yīng)用程序的事件處理程序發(fā)送一個消息到這個應(yīng)用程序的消息處理程序。 OnRTCEvent()函數(shù)處理所有的由應(yīng)用程序接收的所有的不同類型的事件。 //對實時會話的事件處理 12 HRESULT CAVDConfDlg::OnRTCEvent(UINT message, WPARAM wParam, LPARAM lParam) { IDispatch * pDisp = (IDispatch *)lParam。 RTC_EVENT enEvent = (RTC_EVENT)wParam。 HRESULT hr。 //根據(jù) RTC_EVENT的,查閱例行的時間接口并且調(diào)用一個 helper方法來處理事件 switch ( wParam ) { case RTCE_SESSION_STATE_CHANGE: //實時會話 狀態(tài)改變事件 { IRTCSessionStateChangeEvent * pEvent = NULL。 hr = pDispQueryInterface( IID_IRTCSessionStateChangeEvent, (void **)amp。pEvent )。 if (SUCCEEDED(hr)) { OnRTCSessionStateChangeEvent(pEvent)。 //調(diào)用實時會話狀態(tài)改變處理函數(shù) SAFE_RELEASE(pEvent)。
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1