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

正文內容

視頻傳輸技術及實現(xiàn)畢業(yè)論文(參考版)

2025-06-29 16:57本頁面
  

【正文】 謝謝各位老師、長輩、同學、朋友的熱心幫助!參 考 文 獻[1] 趙曉群. 數字語音編碼[M]. 北京:機械工業(yè)出版社,2007.[2] 王春海. 網絡視頻技術及應用標準教程[M]. 北京:人民郵電出版社,2002.[3] 胡澤,趙新海. 流媒體技術與應用[M]. 北京:中國廣播電視出版社,2006.[4] 詹青龍. 網絡視頻技術及應用[M]. 西安:西安電子科技大學出版社,2004.[5] 白煜,辛向暉. Windows Media與Real網絡流媒體案例教程[M]. 北京:清 華大學出版社,2004.[6] 廖勇,周德松,麻信洛,張曉華. 流媒體技術入門與提高[M]. 北京:國防 工業(yè)出版社,2006.[7] 賈斌. 網絡編程技巧與實例[M]. 北京:人民郵電出版社,2001.[8] 廖慶揚. 網絡編程與管理[M].北京:化學工業(yè)出版社,2001.[9] 萬躍華. Visual C++.NET網絡編程[M]. 北京:科學出版社,2002.[10] 李凌. Winsock 2網絡編程實用教程[M]. 北京:清華大學出版社,2003.[11] 王世同,李強. Visual C++[M]. 北京:清華大學出版社, 1999.[12] 羅軍周,黎波濤,楊明,吳俊,黃健. TCP/IP協(xié)議及網絡編程技術[M]. 北 京:清華大學出版社,2004.[13] 劉宗田,袁兆山,潘秋菱. C++編程思想[M].北京:機械工業(yè)出版社,2007.[14] 吳志軍,馬蘭, C++ 視頻會議開發(fā)技術與實例[M].北京: 人民郵電出版社,2006.[15] C++ 數字圖像獲取、處理及實踐應用[M].北京:人民郵電出 版社,2002.[16] IP網絡會議電視語音實時性改進辦法. .[17] 胡凡良,宋玲,陳燕. 基于VC++. 計算機應用與軟件,2005.[18] 陳明,多媒體技術與應用[M]. 北京:清華大學出版社,.[19] 胡朝暉,陳奇. 基于WWW的面向對象多線程聊天服務器設計和實現(xiàn) 計算機工程,2000(12):54—55.[20] 劉云強,王匯源. Socket 和多線程在視頻傳輸的應用. 山東大學學報 (工學版),2004,34(2):45—50.[21] 蔣東興. Windows Socket 網絡程序設計大全[M]. 北京:清華大學出版社.。他們兢兢業(yè)業(yè)、認真執(zhí)著的教學態(tài)度使我獲益匪淺。呂老師嚴謹求實、認真負責、以身作則和淵博的學識使我收益匪淺,本人的論文能夠順利完成無不凝聚著呂老師的心血。首先,謹向尊敬的呂建勇老師致以崇高的敬意和誠摯的謝意。在這四年中,很多的老師、長輩、同學和朋友給了我有益的教誨和熱心的幫助。由于時間和能力的有限,系統(tǒng)還不完善,在語音視頻傳輸方面,包丟失會降低接收端的播放質量,需要改進。(2)利用VFW可以負責裝有攝像頭的終端進行視頻捕捉,視頻的播放使用DrawDib API完成,利用WaveX完成音頻的錄取和播放功能,(3)利用Winsocket技術實現(xiàn)語音視頻數據接收播放功能,完成接收語音視頻數據,獨立運行在終端上,它接受語音視頻進行實時播放顯示。在View選項中有二級選項:Local Video Screen 和Remote Video Screen 兩個,默認情況下是都被選中,表示本地視頻和遠方視頻都要實時顯示:當取消選中狀態(tài)時,則表示取消本地或遠方的視頻顯示,而只會停留在最后那個時候:同樣的在Audio選項中有二級選項Volume Control、Send、Receive三個,點擊Volume Control顯示錄音音量和播放音量調節(jié)界面:Send 和Receive分別表示發(fā)送和接收音頻數據,默認設置是選中狀態(tài),即同意發(fā)送和接收音頻數據,取消時對應有相應的響應。如上圖所示。在本機連接通信成功之后,在初始默認配置下是可以看見本地以及遠方視頻,也可以聽見遠方的音頻: 經測試,文本聊天也可以順利進行。 }5 軟件測試運行終端如果沒攝像頭可以使用,則出現(xiàn)如下界面:如果能正常使用攝像頭,則直接進入主界面: 點擊Conference—Connect,顯示Connect界面,如上圖所示,在Remote Host編輯框中輸入對方IP地址,回車或者點擊Connect按鈕,即可成功連接到遠方。 bRet=TRUE。 va_g729a_decoder((BYTE*)pin+50,(short*)(pout+800),0)。 va_g729a_decoder((BYTE*)pin+30,(short*)(pout+480),0)。 va_g729a_decoder((BYTE*)pin+10,(short*)(pout+160),0)。 if(!pin||len!=SIZE_AUDIO_PACKED||!pout) goto RET。RET: return bRet。 if(lenr) *lenr=SIZE_AUDIO_PACKED。 va_g729a_encoder((short*)(pin+640),(BYTE*)pout+40)。 va_g729a_encoder((short*)(pin+320),(BYTE*)pout+20)。 va_g729a_encoder((short*)pin,(BYTE*)pout)。//壓縮音頻幀BOOL CCodecMgr::EncodeAudioData(char *pin,int len,char* pout,int* lenr){ BOOL bRet=FALSE。對G729a編解碼器初始化: va_g729a_init_encoder()。extern C void va_g729a_init_decoder()。,并成功的編解碼,需要使用以下代碼來讓函數以C的命名規(guī)則調用:extern C void va_g729a_init_encoder()。ExitH263Decoder()。退出編解碼器:ExitH263Encoder(amp。解碼操作直接調用函數:retvalue=DepressFrame(data,size,rgbdata,buffersize)。bits)。 // YUV格式的數據格式 CompressFrame(amp。 = 8?,F(xiàn)在就可以進行數據編碼: =CPARAM_QCIF。 } InitH263Decoder()。cparams)。 // 初始化編碼操作 = CPARAM_QCIF。 isVideo=TRUE。}初始化H263編解碼時需要完成的操作有: if(vidcapInitialize()) { thism_bmpinfo=amp。 視頻數據的編解碼實現(xiàn)在VC++實現(xiàn)H263的編解碼功能,我們需要在工程中添加兩個文件包:Encoder和Decoder,并且將Encoder/和Decoder/添加到預編譯頭文件中:include Encoder/include Decoder/我們需要一個回調函數void OwnWriteFunction(int byte),它是負責在視頻編碼時調用:一個字節(jié)一個字節(jié)的調用void OwnWriteFunction(int byte) { if(countcbuffer_size) cdata[count]=(unsigned char)byte。//關閉指定的音頻輸出設備:::waveOutClose(m_hPlay)。//音頻數據的播放:mmResult = ::waveOutWrite(m_hPlay, lpHdr, sizeof(WAVEHDR))。m_WaveFormatEx,::GetCurrentThreadId(), 0, CALLBACK_THREAD)。打開波形音頻輸出設備:mmReturn = ::waveOutOpen( amp。 = SAMPLEPSEC 。 = 0。 = 1。m_WaveFormatEx,0x00,sizeof(m_WaveFormatEx))。 } 音頻的播放功能實現(xiàn)在這里實現(xiàn)音頻的播放功能仍然使用WaveX技術,完成音頻數據的輸出是一組WaveOut開頭的函數組。當需要停止顯示時,可以調用下面函數來結束: if(hdib!=NULL) { ::DrawDibEnd(hdib)。t zoom y amp。 }現(xiàn)在可以調用DrawDibDraw將DIB繪制至屏幕: ::DrawDibDraw(hdib, m_hdc, remote_wnd_x, // dest : left pos remote_wnd_y, // dest : top pos 1, // don39。t stretch amp。 if(hdib!=NULL) { ::DrawDibBegin(hdib, m_hdc, 1, // don39。hdib=::DrawDibOpen()。DrawDibOpen負責裝載動態(tài)鏈接庫(DLL),申請內存資源,DrawDib設備環(huán)境(DC),并且維持初始化相關的設備環(huán)境計數。在VC++。 視頻的播放功能實現(xiàn)DrawDib API是微軟提供的一組針對于設備無關位圖進行繪制的高性能函數組,它不依賴于設備接口,它能使得視頻顯示更加流暢。為了讓顯示顯得更加的流暢,更好的方法是使用DrawDib API顯示,DrawDib函數組是一組不依賴于設備接口(GDI)的函數,而直接操作顯存的函數組。 } 語音視頻的播放功能詳細設計通過這個模塊我們能夠完成語音視頻的播放,實現(xiàn)兩個終端之間的交流。 // 顯示信息 ((CVideoNetDlg *)pdlg)DisplayMesg(str)。 mesg[len]=0。 memcpy(mesg,amp。 hname[i]=0。in。 // 從數據包中取出hostname n=data[1]。 }假若為文本聊天內容類型: if(type==TYPE_TEXT)//文本聊天 { retvalue=thisReceiveFrom(data,length,address,port)。 // 播放視頻 ((CVideoNetDlg *)pdlg)DisplayRemoteFrame(vdata,retvalue)。 }假若為視頻數據類型: if(type==TYPE_VIDEO) { retvalue=thisReceiveFrom(vdata,vlength,address,port)。 // 播放音頻 ((CVideoNetDlg *)pdlg)playPostThreadMessage(WM_PLAYSOUND_PLAYBLOCK,retvalue,(LPARAM)adata)。 }假若為音頻數據類型: if(type==TYPE_AUDIO) //音頻數據 { retvalue=thisReceiveFrom(adata,alength,address,port)。 return。 // 遠方用戶發(fā)送拒絕連接數據包 // 對應的己方操作:拒絕連接(直接顯示一提示對話框) case MESG_REJECT: sprintf(str,User %s has rejected your invitation,hname)。 ( (CVideoNetDlg*)pdlg)StartConference()。 return。 sprintf(str,User %s has disconnected,hname)。 return。 switch(data[0]) { // 遠方用戶請求連接 // 對應的己方操作為:顯示允許、拒絕對話框 case MESG_CONNECT: // 顯示允許、拒絕連接的對話框 (remotename,remoteaddress,pdlg)。 strcpy(remotename,hname)。i++) hname[i]=data[i+2]。 //從收到的數據中取得主機名 for(int i=0。 } 數據包的接收功能實現(xiàn)任何數據到達本機時,調用同一個函數errcode(),由于在創(chuàng)建socket時是在不同的端口上進行的,所以可以根據數據包的類型值來直接區(qū)分,并對應進行不同的操作:假若為control類型: if(type==TYPE_CONTROL) { retvalue=thisReceiveFrom(data,length,address,port)。pa
點擊復制文檔內容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1