delphi调用xvid编解码范例(delphi调用xvid编解码范例)

上传人:marr****208 文档编号:117058257 上传时间:2019-11-18 格式:DOC 页数:16 大小:43.50KB
返回 下载 相关 举报
delphi调用xvid编解码范例(delphi调用xvid编解码范例)_第1页
第1页 / 共16页
delphi调用xvid编解码范例(delphi调用xvid编解码范例)_第2页
第2页 / 共16页
delphi调用xvid编解码范例(delphi调用xvid编解码范例)_第3页
第3页 / 共16页
delphi调用xvid编解码范例(delphi调用xvid编解码范例)_第4页
第4页 / 共16页
delphi调用xvid编解码范例(delphi调用xvid编解码范例)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《delphi调用xvid编解码范例(delphi调用xvid编解码范例)》由会员分享,可在线阅读,更多相关《delphi调用xvid编解码范例(delphi调用xvid编解码范例)(16页珍藏版)》请在金锄头文库上搜索。

1、Delphi调用Xvid编解码范例(delphi调用xvid编解码范例)单元主;接口使用Windows消息,SysUtils、变体、类、图形、控件、窗体,对话框,dsutil,StdCtrls,DSPack,directshow9,菜单,extctrls,lib_xvid;类型tvideoform =类(平台)tfiltergraph FilterGraph;videowindow:TVideoWindow;mainmenu1:TMainMenu;设备:TMenuItem;过滤器:TFilter;图像:图像;SampleGrabber:TSampleGrabber;照片:TButton;回调:

2、TCheckBox;MMO1:TMemo;lbl1:TLabel;程序formcreate(发件人:TObject);程序formclosequery(发件人:TObject;var CanClose:布尔);SnapShotClick(发件人:TObject)程序;程序SampleGrabberBuffer(发件人:TObject;SampleTime:双;P:指针;bufferlen:整数);私有的/ / Xvid编码器xvid_gbl:xvid_gbl_init_t;xvid_enc:xvid_enc_create_t;xvid_encframe:xvid_enc_frame_t;xvi

3、d_encstats:xvid_dec_stats_t;xvid_decode:xvid_dec_create_t;xvid_decframe:xvid_dec_frame_t;xvid_decstats:xvid_dec_stats_t;公众的程序onselectdevice(发件人:TObject);端;constmaxpixelcount = 65536;类型/ / pf24bit真彩色位图像素数据结构体prgbtriplearray = trgbtriplearray;trgbtriplearray =阵 0 - 1 TRGBTriple maxpixelcount .;VaRvide

4、oform:TVideoForm;SysDev:TSysDevEnum;framebuf:阵列 0。3522883 字节;frameimg:阵列 0。3522883 字节;framesequece:为= 0;防晒:tfilestream;xvid_version:整数;实施 $ R * DFM 。程序tvideoform formcreate(发件人:TObject);VaRI:整数;装置:TMenuItem;开始xvid_version:= xvid_make_version(1,1,0);sysdev:= tsysdevenum创造(clsid_videoinputdevicecatego

5、ry);如果sysdev.countfilters 0我:= 0 - 1 sysdev.countfilters开始设备:= tmenuitem创造(设备);设备描述:= sysdev。过滤器我。FriendlyName;设备=标签;Device.OnClick:= onselectdevice;设备。添加(设备);结束;结束;程序tvideoform。OnSelectDevice(发件人:TObject);VaR传送错误:整数;开始filtergraph.cleargraph;过滤器图。主动:= false;filter.basefilter.moniker: = sysdev.getmon

6、iker (tmenuitem (transmitter).tag);filtergraph. active: = true;with filtergraph as icapturegraphbuilder2 dobeginrenderstream ( pin _ category _ preview, nile, filter as ibasefilter, samplegrabber as ibasefilter, videowindow as ibasefilter);end;try/ / xvid库初始化操作xvid _ gbl.version: = xvid _ version; /

7、 / version 1.1.0.xvid _ gbl.cpu _ flags: = 0; / / word (xvid _ cpu _ force or xvid _ cpu _ asm); / / 0: 自动检查cpu, xvid _ cpu _ force: 强制使用asm汇编优化xvid _ gbl.debug: = 0; / / 调试级别/ / 初始化编解码xvid _ global (nile, xvid _ gbl _ init, xvid _ gbl, nil)./ / xvid编码器初始化xvid _ enc.version: = xvid _ version;/ / 编码器

8、参数xvid _ enc.global: = 0; / / 全局标志xvid _ enc.width: = 320; / / 压缩视频宽度xvid _ enc.height: = 240; / / 压缩视频高度xvid _ enc.fbase: = 3; / / 基本帧率 / 每秒 = fbase * 10 = 30xvid _ enc.fincr: = 1; / / 帧率增长步长, 0: 可变步长 1实际增长步长xvid _ enc.profile: = xvid _ profiles _ as _ l4; / / 压缩级别, mpeg4 asp最高压缩级别xvid _ enc.max _

9、key _ interval: = 0; / / 最大关键帧间隔xvid _ enc.frame _ drop _ ratio: = 0; / / 丢帧率; 0 100xvid _ enc.max _ bframes: = 0; / / 是否采用b帧, 一般采用i, p帧, 如果1 = pb帧/ / 创建编码器xerr: = xvid _ encore (nile, xvid _ enc _ create, xvid _ enc, nil).mmo1.lines.add (xerr = inttostr (xerr);/ / 初始化压缩数据帧结构xvid _ encframe.version:

10、 = xvid _ version;/ / - - - vol flagsxvid _ encframe.vol _ flags: = 0;/ / xvid _ encframe.vol _ flags: = xvid _ encframe.vol _ flags or xvid _ vol _ mpegquant; / / 允许mpeg量化/ / xvid _ encframe.vol _ flags: = xvid _ encframe.vol _ flags or xvid _ vol _ gmc; / / 允许gmc/ / xvid _ encframe.vol _ flags: =

11、xvid _ encframe.vol _ flags or xvid _ vol _ quarterpel; / / 采用1 / 4像素运算/ / - - - vop flagsxvid _ encframe.vop _ flags: = 0;xvid _ encframe.vop _ flags: = xvid _ encframe.vop _ flags or xvid _ vop _ chromaopt; / / 允许色彩优化xvid _ encframe.vop _ flags: = xvid _ encframe.vop _ flags or xvid _ vop _ halfpe

12、l; / / 允许半像素xvid _ encframe.motion: = 0; / / 运动标识xvid _ encframe.quant: = 8; / / 质量控制 = 量化参数, 1 31, 数值越小质量越高xvid _ encframe.bframe _ threshold: = 0;xvid _ encframe.quant _ intra _ matrix: = nil;xvid _ encframe.quant _ inter _ matrix: = nil;xvid _ encframe.coding _ type: = xvid _ type _ car; / / xvid

13、 _ type _ car = 让编码器自动决定, i帧编码是关键帧,P frame coding is intra prediction/ / image compression encodingXvid_encStats.version: = xvid_Version;/ / XVID decoder initializationxVid_decode.version: = xvid_Version;XVid_decode.width: = 320;XVid_decode.height: = 240;Create / decoderXvid_decore (xVid_decode.hand

14、le, XVID_DEC_CREATE, xV, id_decode, nil);SPF: = TFileStream.Create (c:test.mp4, fmCreate, or, fmOpenReadWrite);ExceptExit;End;FilterGraph.Play;End;Procedure TVideoForm.FormCloseQuery (Sender: TObject; VAR CanClose: Boolean);BeginCallBack.Checked: = False;SysDev.Free;FilterGraph.ClearGraph;FilterGraph.Active: = false;/ / close codecXvid_encore (xvid_enc.handle, XVID_ENC_DESTROY, xvid_enc, nil);/xvid_decore (xVid_decode.handle, XVID_DEC_DESTROY, xVid_decode, nil);End;Procedure TVid

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号