| 9 | 1/1 | 返回列表 |
| 查看: 2078 | 回復(fù): 8 | ||||
| 【獎(jiǎng)勵(lì)】 本帖被評(píng)價(jià)2次,作者zyj8119增加金幣 1.4 個(gè) | ||||
[資源]
【轉(zhuǎn)帖】用Delphi開(kāi)發(fā)視頻聊天軟件 已有1人參與
|
||||
|
一、引言 我們知道視頻聊天軟件的關(guān)鍵技術(shù)在于采集視頻,并實(shí)時(shí)傳輸給聊天軟件在線的人。對(duì)于視頻的采集,這里采用微軟公司的關(guān)于數(shù)字視頻的一個(gè)軟件包VFW(Video for Windows)。相信很多人對(duì)它都很熟習(xí),VFW能使應(yīng)用程序通過(guò)數(shù)字化設(shè)備從傳統(tǒng)的模擬視頻源得到數(shù)字化的視頻剪輯,VFW的一個(gè)關(guān)鍵思想是播放時(shí)不需要專用硬件。為了解決數(shù)字視頻數(shù)據(jù)量大的問(wèn)題,需要對(duì)數(shù)據(jù)進(jìn)行壓縮,而VFW引進(jìn)了AVI的文件標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)未規(guī)定如何對(duì)視頻進(jìn)行捕捉、壓縮及播放,僅規(guī)定視頻和音頻該如何存儲(chǔ)在硬盤(pán)上及在AVI文件中交替存儲(chǔ)視頻幀和與之相匹配的音頻數(shù)據(jù)。通過(guò)VFW,開(kāi)發(fā)人員通過(guò)發(fā)送消息或設(shè)置屬性來(lái)捕捉、播放和編輯視頻剪輯。當(dāng)用戶在安裝VFW時(shí),安裝程序會(huì)自動(dòng)地安裝配置視頻所需要的組件,如設(shè)備驅(qū)動(dòng)程序、視頻壓縮程序等。VFW主要由6個(gè)模塊組成。VFW功能模塊: AVICAP.DLL 包含執(zhí)行視頻捕捉的函數(shù),它給AVI文件的I/O處理和視頻、音頻設(shè)備驅(qū)動(dòng)程序提供一個(gè)高級(jí)接口 MSVIDEO.DLL 包含一套特殊的DrawDib函數(shù),用來(lái)處理屏幕上的視頻操作 MCIAVI.DRV 包括對(duì)VFW的MCI命令解釋器的驅(qū)動(dòng)程序 AVIFILE.DLL 包含由標(biāo)準(zhǔn)多媒體I/O(mmio)函數(shù)提供的更高的命令,用來(lái)訪問(wèn).AVI文件 ICM 壓縮管理器,用于管理的視頻壓縮/解壓縮的編譯碼器(Codec) ACM 音頻壓縮管理器,提供與ICM相似的服務(wù),適用于波形音頻 對(duì)于視頻的傳輸,我們使用UDP來(lái)傳,因?yàn)閁DP傳輸速度快,TCP是面向連接的,建立連接時(shí)雙方需經(jīng)過(guò)三次握手,數(shù)據(jù)傳輸可靠,F(xiàn)TP、telnet等就是基于TCP的,UDP是面向非連接的,發(fā)出信息不需對(duì)方確認(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 |
程序語(yǔ)言箱 |
|
二、視頻聊天軟件的開(kāi)發(fā)步驟 2.1 創(chuàng)建捕捉窗口,采集視頻 在進(jìn)行視頻捕捉之前必需要先創(chuàng)建一個(gè)捕捉窗口,并應(yīng)以此為基礎(chǔ)進(jìn)行所有的捕捉及設(shè)置操作。捕捉窗口可用AVICap窗口類的"CapCreateCaptureWindow"函數(shù)來(lái)創(chuàng)建,其窗口風(fēng)格可設(shè)置為WSCHILD和WS_VISIBLE參數(shù)。 有了捕捉窗口,我們就可以將視頻流和音頻流捕捉到一個(gè)AVI文件中;動(dòng)態(tài)地同視頻和音頻輸入器件連接或斷開(kāi);用Overlay或Preview模式對(duì)輸入的視頻流進(jìn)行實(shí)時(shí)顯示,設(shè)置捕捉速率,顯示控制視頻源、視頻格式及視頻壓縮的對(duì)話框,創(chuàng)建、保存或載入調(diào)色板,將圖像和相關(guān)的調(diào)色板拷貝到剪貼板,將捕捉的單幀圖像保存到BMP格式文件中。 2.2 捕捉窗口和驅(qū)動(dòng)程序的關(guān)聯(lián) 僅僅一個(gè)捕捉窗口是不能工作起來(lái)的,它必須要與一個(gè)設(shè)備相關(guān)聯(lián)才能取得視頻信號(hào)。用函數(shù)CapDriverConnect可使捕捉窗與其設(shè)備驅(qū)動(dòng)程序相關(guān)聯(lián)。 2.3設(shè)置視頻設(shè)備的屬性 通過(guò)設(shè)置TcaptureParms結(jié)構(gòu)變量的各個(gè)成員變量,可以控制設(shè)備的采樣頻率、中斷采樣按鍵、狀態(tài)行為。設(shè)置好TcaptureParms結(jié)構(gòu)變量后,可以用函CapCaptureSetSetup使設(shè)置生效。之后還可以用CapPreviewScale、CapPreviewRate設(shè)置預(yù)覽的比例與速度,也可以直接使用設(shè)備的默認(rèn)值。 2.4打開(kāi)預(yù)覽 利用函數(shù)CapOverlay可選擇是否采用疊加模式預(yù)覽,以使系統(tǒng)資源占用小,視頻顯示速度加快。然后用CapPreview啟動(dòng)預(yù)覽功能,這時(shí)就可以在屏幕上看到來(lái)自攝像頭的圖像了。 2.5使用捕捉窗回調(diào)函數(shù) 前的四個(gè)步驟就可以建立一個(gè)基本的視頻捕捉程序了,如果想自己處理從設(shè)備捕捉到的視頻數(shù)據(jù),則要使用捕捉窗回調(diào)函數(shù)來(lái)處理,比如一幀一幀地獲得視頻數(shù)據(jù),也可以以流的方式獲得視頻數(shù)據(jù)等等。 2.6傳輸視頻流 使用回調(diào)函數(shù)可以取得第一幀的數(shù)據(jù),我們使用網(wǎng)絡(luò)技術(shù)將數(shù)據(jù)發(fā)給其它機(jī)器,其它機(jī)品將接收的數(shù)據(jù)顯示出來(lái)。 2.7接收視頻 接收UDP數(shù)據(jù),同時(shí)將接收到的數(shù)據(jù)回顯出來(lái),這樣就可以看到遠(yuǎn)處傳來(lái)的視頻了。 三、用Delphi編寫(xiě)程序代碼 微軟的VFW SDK只有VC和VB版,并沒(méi)有Delphi版,不過(guò)在網(wǎng)上可以找到VFW.PAS文件,F(xiàn)W.PAS文件聲明了調(diào)用DLL中的各個(gè)函數(shù)和變量。(注:源代碼中提供了VFW.PAS文件) 下面就以Delphi7開(kāi)發(fā)一個(gè)網(wǎng)絡(luò)視頻聊天軟件,聊天軟件分兩個(gè)程序,一個(gè)是視頻采集程序并進(jìn)行UDP廣播的視頻聊天軟件服務(wù)器,另一個(gè)是接收UDP廣播程序顯示傳來(lái)的視頻數(shù)據(jù)的視頻聊天軟件客戶端。 3.1建立視頻聊天軟件服務(wù)器 |
|
本帖內(nèi)容被屏蔽 |
| 9 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[碩博家園] 求調(diào)劑 有機(jī)化學(xué)考研356分 +3 | Nadiums 2026-03-25 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 304求調(diào)劑 +6 | 曼殊2266 2026-03-27 | 6/300 |
|
|
[考研] 調(diào)劑 +3 | 好好讀書(shū)。 2026-03-28 | 3/150 |
|
|
[考研] 291求調(diào)劑 +15 | hhhhxn.. 2026-03-23 | 21/1050 |
|
|
[考研]
|
孅華 2026-03-22 | 17/850 |
|
|
[考研] 張芳銘-中國(guó)農(nóng)業(yè)大學(xué)-環(huán)境工程專碩-298 +4 | 手機(jī)用戶 2026-03-26 | 4/200 |
|
|
[考研] 材料求調(diào)劑 一志愿哈工大總分298分,前三科223分 +5 | dongfang59 2026-03-27 | 5/250 |
|
|
[考研] 340求調(diào)劑 +5 | jhx777 2026-03-27 | 5/250 |
|
|
[考研] 295求調(diào)劑 +5 | 1428151015 2026-03-27 | 6/300 |
|
|
[考研] 求調(diào)劑 +4 | 零八# 2026-03-27 | 4/200 |
|
|
[考研] 化學(xué)308分求調(diào)劑 +8 | 你好明天你好 2026-03-23 | 9/450 |
|
|
[考研] 一志愿吉大071010,316分求調(diào)劑 +3 | xgbiknn 2026-03-27 | 3/150 |
|
|
[考研] 321求調(diào)劑 +6 | wasdssaa 2026-03-26 | 6/300 |
|
|
[考研]
材料調(diào)劑
5+4
|
想要一壺桃花水 2026-03-25 | 10/500 |
|
|
[考研] 340求調(diào)劑 +3 | Amber00 2026-03-26 | 3/150 |
|
|
[考研] 環(huán)境專碩324分求調(diào)劑推薦 +5 | 軒小寧—— 2026-03-26 | 5/250 |
|
|
[考研] 293求調(diào)劑 +7 | 加一一九 2026-03-24 | 7/350 |
|
|
[考研] 一志愿北化315 求調(diào)劑 +3 | akrrain 2026-03-24 | 3/150 |
|
|
[考研]
|
黃粱一夢(mèng)千年 2026-03-24 | 3/150 |
|
|
[考研] 一志愿河北工業(yè)大學(xué)0817化工278分求調(diào)劑 +7 | jhybd 2026-03-23 | 12/600 |
|