請問要怎麼讀進avi檔然後處理我所要的frame呢 |
尚未結案
|
dragonhippopdc
一般會員 發表:45 回覆:51 積分:19 註冊:2005-01-15 發送簡訊給我 |
|
gac
初階會員 發表:2 回覆:28 積分:26 註冊:2004-08-16 發送簡訊給我 |
有關 AVI 的所有 API 指令
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_avifile_reference.asp 讀檔的話大概會用到下面幾個指令... AVIFileInit(), AVIFileOpen(), AVIFileGetStream(), AVIStreamInfo(),
AVIStreamReadFormat(), AVIStreamRelease(), AVIFileRelease(), AVIFileExit() 一段時間沒用,有點忘了.....
自己先K一下,不懂的話再上來問吧!!
加油!~~~ ----------------------
我..........還很嫩!
------
我..........還很嫩! |
dragonhippopdc
一般會員 發表:45 回覆:51 積分:19 註冊:2005-01-15 發送簡訊給我 |
|
koopa
一般會員 發表:5 回覆:9 積分:2 註冊:2004-05-17 發送簡訊給我 |
|
dragonhippopdc
一般會員 發表:45 回覆:51 積分:19 註冊:2005-01-15 發送簡訊給我 |
|
dragonhippopdc
一般會員 發表:45 回覆:51 積分:19 註冊:2005-01-15 發送簡訊給我 |
我參考了一些人的作品後~我寫成這樣~可是都compiler不會過~所以想請問各位大大問題出在那裡呢
#include "vfw.h" // for video bool Frame2TImage(PAVISTREAM *gapavi,AVISTREAMINFO *avis,long miniSecond,TImage *Image1); bool GetVideoStream(char *szFile,PAVISTREAM *gapavi,AVISTREAMINFO *avis); void __fastcall TForm1::Button3Click(TObject *Sender) { PAVISTREAM gapavi; AVISTREAMINFO avis; GetVideoStream("c:\\Capture.avi",&gapavi,&avis); Frame2TImage(&gapavi,&avis,5000,Image1); } //------------------------------------------------------------------- bool GetVideoStream(char *szFile,PAVISTREAM *gapavi,AVISTREAMINFO *avis) { AVIFileInit(); HRESULT hr; PAVIFILE pfile; hr = AVIFileOpen(&pfile,szFile , 0, 0L); if (hr != 0) { return false; } int gcpavi; AVIFileGetStream(pfile, gapavi, 0L, 0); AVICOMPRESSOPTIONS gaAVIOptions; LPAVICOMPRESSOPTIONS galpAVIOptions; AVIStreamInfo(*gapavi, avis, sizeof(*avis)); galpAVIOptions = &gaAVIOptions; _fmemset(galpAVIOptions, 0, sizeof(AVICOMPRESSOPTIONS)); galpAVIOptions->fccType = avis->fccType; switch(avis->fccType) { case streamtypeVIDEO: galpAVIOptions->dwFlags = AVICOMPRESSF_VALID | AVICOMPRESSF_KEYFRAMES | AVICOMPRESSF_DATARATE; galpAVIOptions->fccHandler = 0; galpAVIOptions->dwQuality = (DWORD)ICQUALITY_DEFAULT; galpAVIOptions->dwKeyFrameEvery = (DWORD)-1; galpAVIOptions->dwBytesPerSecond = 0; galpAVIOptions->dwInterleaveEvery = 1; break; default: break; } return true; } bool Frame2TImage (PAVISTREAM *gapavi,AVISTREAMINFO *avis,long miniSecond,TImage *Image1) { PGETFRAME gapgf; if (avis->fccType == streamtypeVIDEO) { gapgf = AVIStreamGetFrameOpen(*gapavi, NULL); if (gapgf == NULL) return false; } LONG lFrame; lFrame = AVIStreamTimeToSample(*gapavi, miniSecond); BYTE abFormat[1024]; LPBITMAPINFOHEADER lpbi; lpbi = (LPBITMAPINFOHEADER)abFormat; lpbi = (LPBITMAPINFOHEADER)AVIStreamGetFrame(gapgf,lFrame ); HBITMAP hBitmap; hBitmap=CreateDIBitmap( GetDC(NULL),lpbi,CBM_INIT,(BYTE *)lpbi 40,(BITMAPINFO *)lpbi,DIB_RGB_COLORS); HBITMAP2TImage(hBitmap,Image1); return true; }它都會指這一行錯誤HBITMAP2TImage(hBitmap,Image1); [C Error] Unit1.cpp(99): E2268 Call to undefined function 'HBITMAP2TImage' 上面這句是錯誤訊息~拜託各位大大幫幫我ㄛ~謝謝 |
koopa
一般會員 發表:5 回覆:9 積分:2 註冊:2004-05-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |