AVI創(chuàng)建AVI文件的示例代碼解析_第1頁
AVI創(chuàng)建AVI文件的示例代碼解析_第2頁
AVI創(chuàng)建AVI文件的示例代碼解析_第3頁
AVI創(chuàng)建AVI文件的示例代碼解析_第4頁
AVI創(chuàng)建AVI文件的示例代碼解析_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、AVI創(chuàng)建AVI文件的示例代碼(C) 2002盧西恩Wischik。此代碼是免費(fèi)的,任何人都可以用它做為所欲為,包括納入商業(yè)產(chǎn)品。此代碼創(chuàng)建的AVI文件,包括視頻和音頻。視頻可以壓縮使用您的計算機(jī)上安裝過濾器可以把它彈出一個系統(tǒng)對話框,要求用戶過濾使用,或者你能記住這些信息,以避免在未來的對話框,你可以假設(shè)無壓縮和完全避免的對話框。為壓縮音頻,我相信這是不可能使用的AVI功能。相反,你必須創(chuàng)建一個非壓縮音頻的AVI文件,然后壓縮它使用像 Win dows MovieMaker中的一些外部工具。包括七個功能,編寫的代碼(階級)的C + +和使用用于 Windows的視頻(已建立到所有版本的 Wi

2、ndows )。我用這段代碼添加到自己的項目單位( avi_utils.cpp , avi_utils.h )。此網(wǎng)頁包含如何使用函數(shù)來創(chuàng)建的AVI文件,頭文件和源代碼的例子。你應(yīng)該復(fù)制代碼,粘貼到自己的項目。是普通的Win32代碼,并編譯下用Borland C + + builder5 中和VisualStudio。NET干凈,和其他的編譯器應(yīng)該沒有問題。Borland的編譯器通常允許的FPU異常。這可能會導(dǎo)致一個問題,因為一些過濾器(如DivX )提出的FPU異常。因此,Borland用戶應(yīng)使用此代碼在某個時刻之前創(chuàng)建的AVI -我在WinMain的開始。(這是沒有必要的Visual C

3、+ +,因為默認(rèn)情況下禁用的例外)。#包括 vfloat.h> 的_control87 ( MCW_EMMCW_EM; / /改編的FPU因此它不會引發(fā)異常如何創(chuàng)建AVI文件的例子要創(chuàng)建一個 AVI從一堆文件。下面的代碼創(chuàng)建一個 5位圖AVI (1.bmp , 2.bmp,5.bmp )和 WAV 文件(wav.wav )。常量字符 * FNS = “1.bmp”," 2.bmp”," 3.bmp”," 4.bmp”," 5.bmp” ;夏暉 AVI = CreateAvi(“test.avi ” 1000 年,NULL) ;/ / 1000 毫秒

4、幀之間的時期(I = 0; vsizeof (FNS 的 / SIZEOF ( FNS 0)的 HBITMAP HBM =(HBITMAP句柄)的 Loadimage(NULL, FNS I , IMAGE_BITMAP 0,0 ,LR_LOADFROMFILE | LR_CREATEDIBSECTIONAddAviFrame (AVI, HBM ;DeleteObject 的(HBM ;(AVI,a”wav.wavSND_FILENAME ; AddAviWavCloseAvi(AVI);要創(chuàng)建與DivX壓縮的AVI 。此代碼創(chuàng)建的相同與DivX視頻壓縮的AVI,沒有音頻。代碼其實只是表明D

5、ivX和彈出一個對話框, 讓用戶控制的更多細(xì)節(jié) (HWND是一些可以使用該對話框的父窗口)。您可能會保留一份副本OPTS結(jié)構(gòu),以提供相同的默認(rèn)用戶下一次。或您可以通過虛假的SetAviVideoCompression 功能抑制的用戶界面對話框中,如果OPTS 結(jié)構(gòu)已經(jīng)填寫正確。"4.bmp”," 5.bmp” ;FNS I ,IMAGE_BITMAP 0,0,常量字符 * FNS = “1.bmp”," 2.bmp”," 3.bmp”,夏暉 AVI = CreateAvi (“test.avi ”,1000, NULL ;(I = 0; <size

6、of (FNS 的 / SIZEOF ( FNS 0 ) ; I + +的 HBITMAP HBM =(HBITMAP句柄)的 Loadimage( NULLLR_LOADFROMFILE | LR_CREATEDIBSECTION(我=0)/ /設(shè)置壓縮前的第一幀AVICO MP RESS OP TIONS OP TS;AddAviFrame (AVI, HBM ;DeleteObject 的(HBM ;CloseAvi ( AVI);要創(chuàng)建一個動態(tài)繪制的圖像的AVI文件。此代碼顯示了如何利用自己的動畫,而不是僅僅依靠現(xiàn)有的位圖文件為AVI文件。注意:你必須使用DIBSections,而不是

7、正常依賴于設(shè)備的位圖。(0)hdcscreen 的 HDC= GetDC 的,HDC= CreateCompatibleDC ( hdcscreen); ReleaseDC(0, hdcscreen );為 BITMAPINFC雙向;ZeroMemory (& BI , sizeof ( BI)的);的 BITMAPINFOHEADE和波黑=bi.bmiHeader;bih.biSize = sizeof(波黑)的;bih.biWidth = 200;bih.biHeight = 200;bih.b iP la nes = 1;bih.biBitCou nt = 24;bih.biCo

8、 mp ressio n = BI_RGB;)的& OxFFFFFFFC *bih.biSizeImage =( bih.biWidth * bih.biBitCount / 8 +3 bih.biHeight;bih.biX Pels PerMeter = 10000;bih.biY Pels PerMeter = 10000;bih.biClrUsed = 0;bih.biClrIm porta nt = 0;的 HBITMAP無效 * 位;HBM = CreateDIBSection( HDC ( BITMAPINFO *)和波黑,DIB_RGB_COLORS& 位,空,

9、空)HGDIOBJ holdb = SelectObject 的(HDC HBM ;HPEN馬力的 Create Pen ( P S_SOLID 16, RGB( 255255128);HGDIOBJ holdp = SelectObject 的(HDC 馬力);夏暉 AVI = CreateAvi (“ test.avi ”,100,空);(幀=0;幀<50;幀 +)/ /靜態(tài)背景DWORD種子=的 GetTickCount ();的 DWORD * dbits =( DWORD)位;(unsigned int 類型 I = 0;我 <bih.biSizelmage / size

10、of ( DWOR值)的,我 +) dbitsI= 種子;種子+ = 79;MoveToEx (HDC 0,0 , NULL;的 LineTo ( HDC 幀 * 3100 );AddAviFrame (AVI,HBM ;CloseAvi (AVI);SelectObject 的(HDC holdb)DeleteDC (HDC ; DeleteObject的 SelectObject 的(HDC holdp )的;的(HBM ; DeleteObject 的(HP ;頭文件“avi utils.h# IFNDEF _avi_utils_H# 定義 _avi_utils_H 服務(wù)/ /的AVI事

11、業(yè)-創(chuàng)建AVI文件/ /(C) 2002盧西恩Wischik。對使用沒有任何限制。DECLARE_HANDL夏暉);/ /標(biāo)識夏暉正在創(chuàng)建一個AVI文件夏暉 CreateAvi (常量字符 * FN , INT frame period 個 WAVEFORMATEX * WFX/ / CreateAvi -調(diào)用此開始創(chuàng)建的AVI文件/ /這一時期是MS之間的每個位圖幀的數(shù)量。/ /的waveformat的可以為null ,如果你不會添力口任何音頻,/ /或如果你要添加音頻文件。,HRESULT AddAviFrame (夏暉 AVI, HBM的 HBITMAP ;,HRESULT AddAvi

12、Audio (夏暉 AVI,無效 * DAT ,無符號長 numbytes );/ / AddAviFrame - 這個位圖添加到 AVI文件。HBM點必須是一個 DIBSection 。/ /這是調(diào)用者的責(zé)任,以釋放HBM/ / AddAviAudio 的-添加此音頻的垃圾。被指定在音頻格式 。這將失敗,如果為NULL/ /兩個返回S_OK如果沒事,否則的AVI錯誤之一。HRESULT勺 AddAviWav (夏暉 AVI,常量字符 * WAV, DWOR標(biāo)志);/ / AddAviWav - 一個方便的方式來增加整個波形文件到 AVI/ / wav 文件可能會在內(nèi)存中(在這種情況下,標(biāo)志

13、=SNDMEMO) Y 或磁盤上的文件(在這種情況下,標(biāo)志 =SND_FILENAME 此功能需要,無論是空WAVEFORMA傳遞到CreateAvi的, 或波形文件現(xiàn)在被添加具有相同的格式為前面添加。HRESULT勺 SetAviVideoCompression (AVI 夏暉,HBM的 HBITMAP AVICOMPRESSOPTIONS * OPTS 布爾的 ShowDialog , hP are nt 為 HWN啲);/ / SetAviVideoCo mp ressio n的-允許視頻壓縮。如果需要壓縮,那么這個函數(shù)必須被調(diào)用之前已被添加任何位圖幀位圖HBM、須是一個DIBSecti

14、on (AVI知道什么格式/大小,你給它), 但實際上不會被加入到電影。這個函數(shù)可以顯示一個對話框讓用戶選擇壓縮。在這種情況下, 設(shè)置ShowDialog的真實和指定的父窗口。如果OPTS非NULL和其 的dwFlags財產(chǎn)包括AVICOMPRESSF_VA的D然后OPTS各被用來給初始 值。OPTS是如果非NULL則選擇的選項將被放置在。這個函數(shù)也可以用一個對話框,選擇不壓縮。在這個的情況下,ShowDialog的設(shè)置為false , hParent為忽略,并指定壓縮 在/ /“OPTS的,而且也沒有需要調(diào)用 GotAviVideoCompression,事后。HRESULT CloseAv

15、i(夏暉AVI);/ / CloseAvi - AVI,必須關(guān)閉此消息。無符號短wChannels;/ / = 1 或2為單聲道或立體聲un sig ned int類型FormatAviMessage ( HRESULT 代碼的 char * buf 中,unsigned int 類 型 LEN ;給定/ / FormatAviMessage - 一個錯誤代碼,格式字符串/ /它返回的錯誤消息的長度。如果BUF / len個百分點,那么它也寫入盡可能到那里。# ENDIF源代碼 “avi_utils.cpp#定義嚴(yán)格 #定義 WIN32_LEAN_AND_MEAN#包括樓得分 # 包括 <

16、;vfw.h>包括"avi_utils.h ”/ /首先,我們將定義為 WAV文牛格式。# 包括 vpshpack1.h>/ / = “fmttypedef 結(jié)構(gòu)字符ID 4無符號長的大小;=16的短 wFormatTag;/ / / / = WAVE FORMAT PCM = 1/ / = wChannels 可* (? wBitsPerSample = 8 1:2 )/ / = 8 或16個,每個樣品位無符號長的大小無符號字符數(shù)據(jù)1;/ / = datsize,以下數(shù)組的大小/ / =原始數(shù)據(jù)放在這里 DataCh unk;typedef 結(jié)構(gòu)字符 ID 4;無符號長

17、尺寸;/ / =“ RIFF”/ / = datsize +8 +16 +4的char類型4;/ / =“波”無符號長 dwSamplesPerSec; / / = 11025 或 22050 或 44100 的無符號長 dwAvgBytesPerSec; / / = wBlockAlign * dwSamplesPerSec 無符號短wBlockAlign;無符號短 wBits PerSam pie; FmtChu nk;typedef 結(jié)構(gòu)/ / =“數(shù)據(jù)”字符 ID 4;布爾ISERR;/ /如果屬實,那么沒有功能將做任何事情時,首先FmtChu nk FMT;DataChu nk DA

18、T; WavChu nk;#包括 vpoppack.h>/ /這是由夏暉句柄代表的內(nèi)部結(jié)構(gòu):typedef 結(jié)構(gòu)lAVIFile * PF ILEWAVEFORMATEX WF由 CreateAvi 創(chuàng)造;/ / 給出為 CreateAvi (nChanels = 0,如果沒有了。)。/ /指定在CreateAvi,視頻流第一INT期間。第一次被創(chuàng)建時使用的音頻流; 次被創(chuàng)建時使用IAVIStream * 為/ /音頻流,IAVIStream * PS * psCo mp ressed;無符號長 nframe, nsamp; / /音頻流時,第一次被創(chuàng)建/ /初始化視頻流,創(chuàng)建該幀將被添

19、加下,明年這些樣本將被添加 TAviUtil;夏暉 CreateAvi (常量字符 * FN , INT frame period 個 WAVEFORMATEX * W)X lAVIFile * P FILE;AVIFileInit ();HRESULT HR = AVIFileOpen ( pfile 中,FN, OF_WRITE | OF_CREATE NULL ;如果(hr! = AVIERR_OK ) AVIFileExit()返回 NULL;TAviUtil * AU = 新 TAviUtil;太子港的pfile = pfile(WFX= NULL ZeroMemory( AU-&g

20、t; WFXsizeof (WAVEFORMATE的);其他 Copy Memory(AU-> WFX WFX sizeof ( WAVEFORMATEX 的;AU-> 周期=frame period;AU-> = 0; AU-> PS = 0; 太子港 > psCompressed = 0;AU-> nframe = 0;太子港 > nsamp = 0;AU-> ISERR = FALSE;回報(夏暉)金;HRESULT CloseAvi (夏暉 AVI)如果(AVI = NULL )返回 AVIERR_BADHANDLE;TAviUtil *

21、 AU =(TAviUtil *) AVI;(AU-> = 0)AVIStreamRelease ( AU->);太子港 > =0;(AU-> psCompressed = 0 ) AVIStreamRelease (太子港-> psCompressed 的);太子港 > p sCo mp ressed = 0;(AU-> PS = 0)AVIStreamRelease ( AU-> PS) ; AU-> PS = 0;如果 AVIFileRelease ( AU-PFILE = 0 )( AU-PFILE);太子港 >的 pfile

22、 = 0;AVIFileExit ();刪除金;返回S_OK;HRESULT勺 SetAviVideoCompression ( HWNI的 hParent 為布爾的 ShowDialog ,HBM的 HBITMAP夏暉 AVI, AVICOMPRESSOPTIONS * OP)S如果(AVI = NULL )返回 AVIERR_BADHANDLE;如果(HBM = NULL 返回 AVIERR_BADPARAM;DIBSecti on 的 DIB 的 SBM = GetObject 的 INT ( HBM SIZEOF ( DIBS), DIBS);如果(sbm! = sizeof ( DI

23、BSection 的)的)回報 AVIERR_BADPARAM;TAviUtil * AU =(TAviUtil *) AVI;如果(AU-> ISERR)返回 AVIERR_ERROR;(AU psCompressed = 0 )返回 AVIERR_COMPRESSOR;如果(AU-> PS = 0 ) / /倉U建流,如果是以前沒有的AVISTREAMINFO strhdr; ZeroMemory(& sizeof (strhdr)的 strhdr ,);strhdr.fccT ype = streamt yp eVIDEO;/ /流的類型strhdr.fccHa nd

24、ler = 0;strhdr.dwScale = AU->strhdr.dwRate = 1000;strhdr.dwSuggestedBufferSize = dibs.dsBmih.biSizelmage;SetRect 對(strhdr.rcFrame , 0, 0, dibs.dsBmih.biWidth,dibs.dsBmih.biHeight );HRESULT HR = AVIFileCreateStream(太子港> PFILE ,與 AU-> PS& strhdr );女口果(hr! = AVIERR_OK ) AU-> ISERR = TRU

25、E;回報小時;如果(金-> psCompressed的=0 ) / /設(shè)置壓縮,提示對話框,如果必要AVICO MP RESS OP TIONS myo pts; ZeroMemory (& sizeof ( myo pts )的 myopts,);AVICO MP RESS OP TIONS * aopts 1;(opts! = NULL ) aopts 0= 的 OPTS其他 aopts 0 = &myopts;如果(的 ShowDialog )BOOL 型水庫(布爾)AVISave Op tio ns (hP are nt 為,0,1,和 AU-> PS, a

26、o pts );如果(RES AVISaveOptionsFree(, aopts );太子港 ISERR = TRUE;回報AVIERR_USERABORT;HRESULT HR= AVIMakeCompressedStream (&太子港 > psCompressed 的 AU-> PS, aopts 0,空);AVISaveOptionsFree(1, aopts );(HR = AVIERR_OK ) 太子港 ISERR = TRUE;回報小時;DIBSectio n 的 DIB 的;GETOBJECT ( HBM SIZEOF ( DIBS), DIBS);HR

27、= AVIStreamSetFormat (AU-> psCompressed, 0, &dibs.dsBmih ,dibs.dsBmih.biSize+ dibs.dsBmih.biCIrUsed * sizeof(RGBQUAD的);女口果(hr! = AVIERR_OK ) AU-> ISERR = TRUE;回報小時;返回 AVIERR_OK;,HRESULT AddAviFrame (夏暉 AVI, HBM的 HBITMAP 如果(AVI = NULL )返回 AVIERR_BADHANDLE;如果(HBM = NULL 返回 AVIERR_BADPARAM;DI

28、BSection 的 DIB 的 SBM = GetObject 的 INT ( HBM SIZEOF ( DIBS), DIBS);TAviUtil * AU =(TAviUtil *) AVI;如果(sbm! = sizeof ( DIBSection 的)的)回報 AVIERR_BADPARAM;如果(AU-> ISERR)返回 AVIERR_ERROR;如果(AU-> PS = 0 ) / /創(chuàng)建流,如果是以前沒有的AVISTREAMINFO strhdr; ZeroMemory(& sizeof ( strhdr)的 strhdr ,);strhdr.fccT y

29、pe = streamty peVIDEO;/ /流的類型strhdr.fccHa ndler = 0;strhdr.dwScale = AU->strhdr.dwRate = 1000;strhdr.dwSuggestedBufferSize = dibs.dsBmih.biSizelmage;SetRect 對(strhdr.rcFrame , 0, 0, dibs.dsBmih.biWidth,dibs.dsBmih.biHeight );HRESULT HR = AVIFileCreateStream(太子港> PFILE ,與 AU-> PS& strhdr

30、 );女口果(hr! = AVIERR_OK ) AU-> ISERR = TRUE;回報小時;/ /創(chuàng)建一個空的壓縮,如果用戶沒有設(shè)置任何(金-> PsCompressed 的=0 )AVICOMPRESSOPTIONS OPTS; ZeroMemory( OPTS sizeof (OPTS 的);opts.fccHandler = mmioFOURCC(“ D',“ I ”,“ B”,HRESULT HR= AVIMakeCompressedStream (AU-> psCompressed, AU-> PS: OPTSNULL ;(HR = AVIERR_

31、OK ) 太子港 ISERR = TRUE;回報小時;+ dibs.dsBmih.biCIrUsed * sizeof(RGBQUAD的);女口果(hr! = AVIERR_OK ) AU-> ISERR = TRUE;回報小時;/ /現(xiàn)在我們可以添加框架dibs.dsBmih.biSizeImage,AVIIF_KEYFRAME 空,空);如果(hr! = AVIERR_OK)AU-> ISERR = TRUE;回報小時;太子港 nframe + + 返回S_OK;HRESULT HR= AVIStreamWrite (AU-> psCompressed,太子港 nfram

32、e , 1, dibs.dsBm.bmBits ,HRESULT AddAviAudio (夏暉 AVI,無效 * DAT ,無符號長 numbytes) 如果(AVI = NULL )返回 AVIERR_BADHANDLE;(DAT = NULL II numbytes = 0)返回 AVIERR_BADPARAM;TAviUtil * AU =(TAviUtil *) AVI;如果(AU-> ISERR)返回 AVIERR_ERROR;如果(太子港 > wfx.nChannels 的=0 )返回 AVIERR_BADFORMAT;無符號長 numsamps = numbytes

33、 * 8 / AU-> wfx.wBitsPerSample;如果(nu msa mps* AU-> wfx.wBits PerSam pie / 8)= nu mbytes !)返回 AVIERR_BAD PARAM;如果(=0 AU-> ) / /創(chuàng)建流,如果有必要AVISTREAMINFO ahdr; ZeroMemory (& sizeof ( ahdr )的 ahdr,);ahdr.fccT ype = streamt yp eAUDIO;ahdr.dwScale = AU-> wfx. nBlockAlig n;ahdr.dwRate = AU-&g

34、t; wfx. nSa mp les PerSec * AU-> wfx. nBlockAlig n;ahdr.dwSa mpl eSize = AU-> wfx.n BlockAlig n;ahdr.dwQuality =(DWORD-1;HRESULT HR = AVIFileCreateStream(AU-> pfile 中,AU->,與 ahdr 的);如果(hr! = AVIERR_OKAU-> ISERR = TRUE;回報小時;HR = AVIStreamSetFormat(AU-> 0,與非盟-> WFX , sizeof (WAVEF

35、ORMATE的);如果(hr! = AVIERR_OKAU-> ISERR = TRUE;回報小時;/ /現(xiàn)在我們可以將數(shù)據(jù)寫入HRESULT HR= AVIStreamWrite ( AU->太子港 > nsamp numsamps DAT numbytes,0,NULL,則空);如果(hr! = AVIERR_OK ) AU-> ISERR = TRUE;回報小時;太子港 nsamp + = numsamps 的;返回 S_OK;,HRESULT AddAviWav(夏暉 AVI,常量字符 * SRC, DWOR標(biāo)志) 如果(AVI = NULL )返回 AVIER

36、R_BADHANDLE;(flags! = SND_MEMORY &&標(biāo)志=SND_FILENAME )返回 AVIERR_BADFLAGS;如果(SRC = 0)返回 AVIERR_BADPARAM;TAviUtil * AU =(TAviUtil *) AVI;如果(AU-> ISERR)返回 AVIERR_ERROR;字符 * BUF = 0; WavChunk * WAV =( WavChunk *) SRC;女口果(旗=SND_FILENAMEHANDLE HF =的 CreateFile ( SRC GENERIC_READFILE_SHARE_READ為 N

37、ULL,OPEN_EXISTING 0,NULL);女口果(HF = INVALID_HANDLE_VALUE AU-> ISERR = TRUE;回報 AVIERR_FILEOPEN;DWORD 大小=GetFileSize(HF,NULL ;BUF =新的char 大小;ReadFile 的 DWOR紅色;(HF,緩沖區(qū),大小,紅,空)CloseHandle( HF);WAV ( WavChunk *) BUF;/ /檢查格式不沖突BOOL badformat = FALSE;(太子港 > wfx.nChannels的=0 ) 太子港 > wfx.wFormatTag =

38、 WAV-> fmt.wFormatTag;AU-> wfx.cbSize = 0;太子港 > wfx.nAvgBytesPerSec = WAV-> fmt.dwAvgBytesPerSec;太子港 > wfx.nBlockAlign = WAV-> fmt.wBlockAlign;AU-> wfx. nCha nn els = WAV-> fmt.wCha nn els;太子港 > wfx. nSamp les PerSec = WAV-> fmt.dwSam pies PerSec;太子港 > wfx.wBitsPerSa

39、mple = WAV-> fmt.wBitsPerSample;其他( AU wfx.wFormatTag = WAV-> fmt.wFormatTag ! ) badformat = TRUE;! ) badformat = TRUE;(AU wfx.nAvgBytesPerSec = WAV-> fmt.dwAvgBytesPerSec! ) badformat = TRUE;(AU wfx. nBlockAlig n = WAV-> fmt.wBlockAlig n(AU-> wfx.nChannels WAV-> fmt.wChannels! ) b

40、adformat = TRUE;(AU wfx. nSamp les PerSec = WAV-> fmt.dwSa mp les PerSec! ) badformat = TRUE;(AU wfx.wBitsPerSample = WAV-> fmt.wBitsPerSample! ) badformat = TRUE;如果(badformat ) (buf! = 0)刪除buf 中返回 AVIERR_BADFORMAT;如果(=0 AU-> ) / /創(chuàng)建流,如果有必要AVISTREAMINFO ahdr; ZeroMemory (& sizeof (ahdr

41、)的 ahdr,);ahdr.fccT ype = streamt yp eAUDIO;ahdr.dwScale = AU-> wfx. nBlockAlig n;ahdr.dwRate = AU-> wfx. nSa mp les PerSec * AU-> wfx. nBlockAlig n;ahdr.dwSa mpl eSize = AU-> wfx. nBlockAlig n;ahdr.dwQuality =(DWORD-1;HRESULT HR = AVIFileCreateStream(AU-> pfile 中,AU->,與 ahdr 的);如果

42、(hr! = AVIERR_OK)HR = AVIStreamSetFormat如果(hr! = AVIERR_OK)/ /現(xiàn)在我們可以將數(shù)據(jù)寫入( buf! = 0 )刪除buf 中 AU-> ISERR = TRUE回報小時;(AU-> 0,與非盟-> WFX,sizeof (WAVEFORMATE的);( buf! = 0 )刪除buf 中 AU-> ISERR = TRUE回報小時;無符號長 numbytes = WAV-> dat.size;無符號長 numsamps = numbytes * 8 / AU-> wfx.wBitsPerSample

43、;HRESULT HR= AVIStreamWrite ( AU-> AU-> nsamp, numsamps WAVRat.data , numbytes,0,NULL 則空);如果(buf! = 0)刪除buf 中 ;如果(hr! = AVIERR_OK ) AU-> ISERR = TRUE;回報小時;太子港 nsamp + = numsamps 的;返回 S_OK;unsigned int類型 FormatAviMessage ( HRESULT勺代碼中的 char * buf 中,unsigned int類型LEN)常量字符*味精=“未知的AVI結(jié)果代碼”;開關(guān)(代碼)S_OK,味精=“成功”;休息;案件AVIERR_BADFORMA味精=“ AVIERR_BADF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論