| 9 | 1/1 | 返回列表 |
| 查看: 2058 | 回復(fù): 8 | |||
| 【獎勵】 本帖被評價2次,作者zyj8119增加金幣 1.4 個 | |||
[資源]
【轉(zhuǎn)帖】用Delphi開發(fā)視頻聊天軟件 已有1人參與
|
|||
|
一、引言 我們知道視頻聊天軟件的關(guān)鍵技術(shù)在于采集視頻,并實時傳輸給聊天軟件在線的人。對于視頻的采集,這里采用微軟公司的關(guān)于數(shù)字視頻的一個軟件包VFW(Video for Windows)。相信很多人對它都很熟習(xí),VFW能使應(yīng)用程序通過數(shù)字化設(shè)備從傳統(tǒng)的模擬視頻源得到數(shù)字化的視頻剪輯,VFW的一個關(guān)鍵思想是播放時不需要專用硬件。為了解決數(shù)字視頻數(shù)據(jù)量大的問題,需要對數(shù)據(jù)進(jìn)行壓縮,而VFW引進(jìn)了AVI的文件標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)未規(guī)定如何對視頻進(jìn)行捕捉、壓縮及播放,僅規(guī)定視頻和音頻該如何存儲在硬盤上及在AVI文件中交替存儲視頻幀和與之相匹配的音頻數(shù)據(jù)。通過VFW,開發(fā)人員通過發(fā)送消息或設(shè)置屬性來捕捉、播放和編輯視頻剪輯。當(dāng)用戶在安裝VFW時,安裝程序會自動地安裝配置視頻所需要的組件,如設(shè)備驅(qū)動程序、視頻壓縮程序等。VFW主要由6個模塊組成。VFW功能模塊: AVICAP.DLL 包含執(zhí)行視頻捕捉的函數(shù),它給AVI文件的I/O處理和視頻、音頻設(shè)備驅(qū)動程序提供一個高級接口 MSVIDEO.DLL 包含一套特殊的DrawDib函數(shù),用來處理屏幕上的視頻操作 MCIAVI.DRV 包括對VFW的MCI命令解釋器的驅(qū)動程序 AVIFILE.DLL 包含由標(biāo)準(zhǔn)多媒體I/O(mmio)函數(shù)提供的更高的命令,用來訪問.AVI文件 ICM 壓縮管理器,用于管理的視頻壓縮/解壓縮的編譯碼器(Codec) ACM 音頻壓縮管理器,提供與ICM相似的服務(wù),適用于波形音頻 對于視頻的傳輸,我們使用UDP來傳,因為UDP傳輸速度快,TCP是面向連接的,建立連接時雙方需經(jīng)過三次握手,數(shù)據(jù)傳輸可靠,F(xiàn)TP、telnet等就是基于TCP的,UDP是面向非連接的,發(fā)出信息不需對方確認(rèn),但這樣速度比TCP快,但有可能丟失數(shù)據(jù),象SMTP、tftp等就是基于UDP的。另外UDP還支持廣播,UDP廣播兩種,一種是directed broadcast,比如你的網(wǎng)段是192.168.0.X,你就往192.168.0.255發(fā)就可以了。另一種是limited broadcast,廣播地址是255.255.255.255 |
程序語言箱 |
|
二、視頻聊天軟件的開發(fā)步驟 2.1 創(chuàng)建捕捉窗口,采集視頻 在進(jìn)行視頻捕捉之前必需要先創(chuàng)建一個捕捉窗口,并應(yīng)以此為基礎(chǔ)進(jìn)行所有的捕捉及設(shè)置操作。捕捉窗口可用AVICap窗口類的"CapCreateCaptureWindow"函數(shù)來創(chuàng)建,其窗口風(fēng)格可設(shè)置為WSCHILD和WS_VISIBLE參數(shù)。 有了捕捉窗口,我們就可以將視頻流和音頻流捕捉到一個AVI文件中;動態(tài)地同視頻和音頻輸入器件連接或斷開;用Overlay或Preview模式對輸入的視頻流進(jìn)行實時顯示,設(shè)置捕捉速率,顯示控制視頻源、視頻格式及視頻壓縮的對話框,創(chuàng)建、保存或載入調(diào)色板,將圖像和相關(guān)的調(diào)色板拷貝到剪貼板,將捕捉的單幀圖像保存到BMP格式文件中。 2.2 捕捉窗口和驅(qū)動程序的關(guān)聯(lián) 僅僅一個捕捉窗口是不能工作起來的,它必須要與一個設(shè)備相關(guān)聯(lián)才能取得視頻信號。用函數(shù)CapDriverConnect可使捕捉窗與其設(shè)備驅(qū)動程序相關(guān)聯(lián)。 2.3設(shè)置視頻設(shè)備的屬性 通過設(shè)置TcaptureParms結(jié)構(gòu)變量的各個成員變量,可以控制設(shè)備的采樣頻率、中斷采樣按鍵、狀態(tài)行為。設(shè)置好TcaptureParms結(jié)構(gòu)變量后,可以用函CapCaptureSetSetup使設(shè)置生效。之后還可以用CapPreviewScale、CapPreviewRate設(shè)置預(yù)覽的比例與速度,也可以直接使用設(shè)備的默認(rèn)值。 2.4打開預(yù)覽 利用函數(shù)CapOverlay可選擇是否采用疊加模式預(yù)覽,以使系統(tǒng)資源占用小,視頻顯示速度加快。然后用CapPreview啟動預(yù)覽功能,這時就可以在屏幕上看到來自攝像頭的圖像了。 2.5使用捕捉窗回調(diào)函數(shù) 前的四個步驟就可以建立一個基本的視頻捕捉程序了,如果想自己處理從設(shè)備捕捉到的視頻數(shù)據(jù),則要使用捕捉窗回調(diào)函數(shù)來處理,比如一幀一幀地獲得視頻數(shù)據(jù),也可以以流的方式獲得視頻數(shù)據(jù)等等。 2.6傳輸視頻流 使用回調(diào)函數(shù)可以取得第一幀的數(shù)據(jù),我們使用網(wǎng)絡(luò)技術(shù)將數(shù)據(jù)發(fā)給其它機器,其它機品將接收的數(shù)據(jù)顯示出來。 2.7接收視頻 接收UDP數(shù)據(jù),同時將接收到的數(shù)據(jù)回顯出來,這樣就可以看到遠(yuǎn)處傳來的視頻了。 三、用Delphi編寫程序代碼 微軟的VFW SDK只有VC和VB版,并沒有Delphi版,不過在網(wǎng)上可以找到VFW.PAS文件,F(xiàn)W.PAS文件聲明了調(diào)用DLL中的各個函數(shù)和變量。(注:源代碼中提供了VFW.PAS文件) 下面就以Delphi7開發(fā)一個網(wǎng)絡(luò)視頻聊天軟件,聊天軟件分兩個程序,一個是視頻采集程序并進(jìn)行UDP廣播的視頻聊天軟件服務(wù)器,另一個是接收UDP廣播程序顯示傳來的視頻數(shù)據(jù)的視頻聊天軟件客戶端。 3.1建立視頻聊天軟件服務(wù)器 |
|
本帖內(nèi)容被屏蔽 |
| 9 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 0703化學(xué)調(diào)劑 +9 | 妮妮ninicgb 2026-03-15 | 13/650 |
|
|---|---|---|---|---|
|
[考研] 085600材料與化工 求調(diào)劑 +14 | enenenhui 2026-03-13 | 15/750 |
|
|
[考研] 0703化學(xué)調(diào)劑 +4 | 18889395102 2026-03-18 | 4/200 |
|
|
[考研] 317求調(diào)劑 +3 | 申子申申 2026-03-19 | 6/300 |
|
|
[考研] 化學(xué)求調(diào)劑 +3 | 臨澤境llllll 2026-03-17 | 4/200 |
|
|
[考研] 287求調(diào)劑 +3 | 晨昏線與星海 2026-03-19 | 4/200 |
|
|
[教師之家] 焦慮 +9 | 水冰月月野兔 2026-03-13 | 13/650 |
|
|
[考研] 328求調(diào)劑,英語六級551,有科研經(jīng)歷 +3 | 生物工程調(diào)劑 2026-03-17 | 7/350 |
|
|
[考研] 344求調(diào)劑 +6 | knight344 2026-03-16 | 7/350 |
|
|
[考研] 297求調(diào)劑 +8 | 戲精丹丹丹 2026-03-17 | 8/400 |
|
|
[考研] 331求調(diào)劑(0703有機化學(xué) +7 | ZY-05 2026-03-13 | 8/400 |
|
|
[考研] 0703化學(xué)求調(diào)劑 總分331 +3 | ZY-05 2026-03-13 | 3/150 |
|
|
[考研] 268求調(diào)劑 +8 | 一定有學(xué)上- 2026-03-14 | 9/450 |
|
|
[考研] 東南大學(xué)364求調(diào)劑 +5 | JasonYuiui 2026-03-15 | 5/250 |
|
|
[考研] 304求調(diào)劑 +4 | ahbd 2026-03-14 | 4/200 |
|
|
[考研] 318求調(diào)劑 +3 | Yanyali 2026-03-15 | 3/150 |
|
|
[考研] 070300化學(xué)學(xué)碩求調(diào)劑 +6 | 太想進(jìn)步了0608 2026-03-16 | 6/300 |
|
|
[考研] 327求調(diào)劑 +6 | 拾光任染 2026-03-15 | 11/550 |
|
|
[考研] 266求調(diào)劑 +4 | 學(xué)員97LZgn 2026-03-13 | 4/200 |
|
|
[考研] 070303一志愿西北大學(xué)學(xué)碩310找調(diào)劑 +3 | d如愿上岸 2026-03-13 | 3/150 |
|