全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2230
推到 Plurk!
推到 Facebook!

如何合併兩個avi檔

尚未結案
regwei
一般會員


發表:4
回覆:3
積分:1
註冊:2003-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-16 12:55:59 IP:61.218.xxx.xxx 未訂閱
請問有哪位有經驗的高手幫幫我!! 我想將兩個avi檔合併(不是接起來)是從頭合併哦! 我想a.avi為前景,b.avi為背景合併為c.avi 不知該如何著手呢? (我是用Delphi 5)
lovejingtao
一般會員


發表:10
回覆:33
積分:13
註冊:2003-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-17 14:29:33 IP:218.18.xxx.xxx 未訂閱
了解AVI的文件结构即可 先重新组合索引 然后拷贝数据 const bufsize:integer=1024; delaytime:integer=10; LEAST_FRAME:integer=50;//cut at least ??? frame in each single file var Mark:Bool=False;//检测新的TMP文件发送与否 _srcFileName:Pchar; naListOffset:array[0..5] of integer;//save LIST offset (0:start, 1:movi, 2:idx1, 3:JUNK, 4:tmp_idx1, 5:tmp_movi) //use inFP, outFP to be file pointer caBufChar:array[0..4] of char; nBufInt:integer; //==arche changed== nFileCount:integer=0; //use this file count to check tmp file is ready or not //start from 1,not 0 nSendFileCount:integer=1;//start from 1 //above two variable is for check not R/W the same file together chopaviOK:integer=0; //check choapavi is ok or not //===Timer variable========= TimerFlag:integer=0; //1-finish 0-none interval:integer=0; //timer 's time {$R *.dfm} procedure chopavi(dymmy:Pointer); var inFP:TFileStream; begin inFP:=TFileStream.Create(_srcFileName,fmOpenRead or fmShareDenyNone); inFP.Read(caBufChar,4); caBufChar[4]:=#0; if StrComp(caBufChar,'RIFF')<>0 then begin ShowMessage('error: not an avi file'); Exit; end; //========================save LIST offset==================== naListOffset[0]:= 0;//start offset //=======save movi LIST offset inFP.seek(16,soFromBeginning ); inFP.read({(char *)&nBufInt}nBufInt, sizeof(integer));//get header LIST size inFP.seek(nBufInt 4,soFromCurrent);//goto next, JUNK CHUNK inFP.read({(char *)&nBufInt}nBufInt, sizeof(integer));//get JUNK CHUNK size inFP.seek(nBufInt, soFromCurrent);//goto next, movi LIST naListOffset[1] := inFP.Position; //=======save idx1 offset inFP.seek(4, soFromCurrent); inFP.read({(char *)&nBufInt}nBufInt, sizeof(integer));//get movi LIST size inFP.seek(nBufInt, soFromCurrent);//goto next, idx1 naListOffset[2] := inFP.Position; //=======save last JUNK offset inFP.seek(4, soFromCurrent); inFP.read({(char *)&nBufInt}nBufInt, sizeof(integer));//get idx1 size inFP.seek(nBufInt, soFromCurrent);//goto next, idx1 naListOffset[3]:= inFP.Position; //end=======================save LIST offset=================== inFP.Free; //fnChopAvi(_srcFileName);//call fnChopAvi, avi filename as para. end; function fnChopAvi(filename:Pchar):Boolean; var 冷静的思考问题 充满激情的工作
系統時間:2024-04-27 10:56:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!