| 5 | 1/1 | 返回列表 |
| 查看: 2056 | 回復(fù): 8 | |||
| 【獎勵】 本帖被評價2次,作者zyj8119增加金幣 1.4 個 | |||
| 當(dāng)前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
[資源]
【轉(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ā)給其它機(jī)器,其它機(jī)品將接收的數(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ù)器 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 一志愿吉林大學(xué)材料學(xué)碩321求調(diào)劑 +7 | Ymlll 2026-03-18 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 一志愿中國海洋大學(xué),生物學(xué),301分,求調(diào)劑 +5 | 1孫悟空 2026-03-17 | 5/250 |
|
|
[考研] 復(fù)試調(diào)劑 +4 | z1z2z3879 2026-03-14 | 6/300 |
|
|
[考研] 材料080500調(diào)劑求收留 +4 | 一顆meteor 2026-03-13 | 4/200 |
|
|
[考研] 332求調(diào)劑 +3 | ydfyh 2026-03-17 | 3/150 |
|
|
[考研] 0817調(diào)劑 +3 | 沒有答案_ 2026-03-14 | 3/150 |
|
|
[教師之家] 焦慮 +9 | 水冰月月野兔 2026-03-13 | 13/650 |
|
|
[考研] 一志愿武理材料305分求調(diào)劑 +5 | 想上岸的鯉魚 2026-03-18 | 6/300 |
|
|
[考研] 311求調(diào)劑 +6 | 26研0 2026-03-15 | 6/300 |
|
|
[考研] 070300化學(xué)319求調(diào)劑 +6 | 錦鯉0909 2026-03-17 | 6/300 |
|
|
[考博] 26博士申請 +3 | 1042136743 2026-03-17 | 3/150 |
|
|
[考研] 268求調(diào)劑 +7 | 好運連綿不絕 2026-03-12 | 8/400 |
|
|
[碩博家園] 湖北工業(yè)大學(xué) 生命科學(xué)與健康學(xué)院-課題組招收2026級食品/生物方向碩士 +3 | 1喜春8 2026-03-17 | 5/250 |
|
|
[考研] 308求調(diào)劑 +4 | 是Lupa啊 2026-03-16 | 4/200 |
|
|
[考研] 211本,11408一志愿中科院277分,曾在中科院自動化所實習(xí) +6 | Losir 2026-03-12 | 7/350 |
|
|
[考研] 070300化學(xué)學(xué)碩求調(diào)劑 +6 | 太想進(jìn)步了0608 2026-03-16 | 6/300 |
|
|
[考研] 本科南京大學(xué)一志愿川大藥學(xué)327 +3 | 麥田耕者 2026-03-14 | 3/150 |
|
|
[考研] 289求調(diào)劑 +4 | 這么名字咋樣 2026-03-14 | 6/300 |
|
|
[考研] 招收0805(材料)調(diào)劑 +3 | 18595523086 2026-03-13 | 3/150 |
|
|
[考研] 311求調(diào)劑 +3 | 冬十三 2026-03-13 | 3/150 |
|