教你做RM压缩程序
IT商界
所用工具:Delphi6
要求:Delphi6是功能强大的RAD开发工具,完全支持ActiveX,可以很方便地创建、注册、安装、发布和使用ActiveX控件、ActiveForm和OLE自动化对象。这里我们就如何使用ActiveX控件进行开发程序作一简介。
目的:RealProducer Plus是制作RM 格式文件的制作工具,如果你的计算机中安装了这个程序,软件会自动在你的计算机中注册ProducerControl.ocx控件,这样我们就可以在Deliphi中直接导入这个控件来编写一个功能强大的RM文件压缩程序。RealProducer Plus的下载地址是:http://download.pchome.net/multimedia/video/6342.html
第一步:导入ProducerControl.ocx控件。
执行主菜单“Component/Imort ActiveX Control”命令,打开“Imort ActiveX”对话框,选择ActiveX控件列表中的“Real Producer ActiveX Control Libiary”控件。
再单击Install按钮弹出“Install”对话框,确认安装即可。安装过程中会提示是否重新编译dclusr.bpl文件,确认后完成该控件安装。
第二步:新建一个工程,并对工程做一些必要的设置:
(1)执行主菜单“Project/Options...”命令,打开“Project Options”对话框,选择“Application”选项卡,设置程序名称“Title”为“RM Producer”,并为程序指定一个“Icon”;
用鼠标点击窗体,在Object Inspector(如图1)中设置Form1窗体的相关属性;
提示:“Object Inspector” 即是“对象检查器”,有关程序中涉及到的窗体及控件的属性均在这里设置。
(2)修改Caption属性值为“RM Producer”;
(3)修改BorderStyle属性为bsSingel;
(4)展开BorderIcons属性,修改biMaximize属性为False。
第三步:向Form1窗体中添加控件,并设置各个控件的属性。
(1)选择Standard组件夹(如图2),向Form1窗体中添加一个GroupBox控件、一个Panel控件并调整它们的位置。更改GroupBox控件的caption属性值为“文件信息”,删除Panel控件caption属性值。
(2)选择Standard组件夹,在GroupBox1控件中添加两个Label控件、两个Edit控件、两个Button控件,更改Label控件的caption属性值分别为“源文件:”、“目标文件:”,删除Edit控件的caption属性值,更改Button控件的caption属性值分别为“浏览...”、“保存...”,并设置“保存”按钮的Enabled属性为False。
(3)选择Standard组件夹,在Panel控件中添加三个Label控件,并分别更改它们的caption属性值为“源视频图像”、“音频”、“RM 视频图像”。
(4)选择ActiveX组件夹,将ProducerControl控件(如图3)添加到Panel控件中。
(5)选择Standard组件夹,向Form1窗体三个Button控件,并更改它们的caption属性值分别为“开始制作”、“停止制作”、“退出程序”,设置“开始制作”、“停止制作”按钮的Enabled属性为False。
(6)选择Dialogs组件夹,添加OpenDialog组件和SaveDialog组件(如图4),并点击OpenDialog控件的Filter属性右侧按钮,打开“Filter Editor”窗口,建立一个媒体文件过滤器Filter,便于以媒体文件(*.avi;*.mov;*.mpg;*.mpeg)格式打开,同理建立SaveDialog组件的Filter属性以*.avi文件格式保存。
(7)最后调整Form1窗体各个控件位置如图5所示。
第四步:接下来在各个按钮和ProducerControl控件下写入调用过程代码如下:
(1)写入ProducerControl控件OnEncodingStarted过程代码:
open.Enabled :=false;
save.Enabled :=false;
stop.Enabled :=true;
start.Enabled :=false;
Edit1.Enabled :=false;
Edit2.Enabled :=false;
ProducerControl1.Visible :=true;
(2)写入ProducerControl控件OnEncod
ingStopped过程代码:
open.Enabled :=true;
save.Enabled :=true;
stop.Enabled :=false;
Edit1.Enabled :=true;
Edit2.Enabled :=true;
(3)写入ProducerControl控件OnErrorOccurred过程代码:
MessageDlg(ErrorString,mtError, [mbOK], 0);
(4)点击窗体中的“浏览”按钮,在代码窗口中输入代码:
OpenDialog1.Title:='选择要制作的媒体文件';
if OpenDialog1.Execute then
begin
//Edit1控件保存了要进行压缩的源文件名信息
Edit1.Text :=OpenDialog1.FileName;
Edit2.Text :=ChangeFileExt(OpenDialog1.FileName ,'.rm');
//自动修改其扩展名为RM
save.Enabled:=true;//启用另存为按钮
start.Enabled:=true;//启用开始解压按钮
(5)点击窗体中的“保存”按钮,在代码窗口中输入代码:
SaveDialog1.Title :='保存RM媒体文件';
SaveDialog1.FileName:= Edit1.Text;//初始化另存为的默认文件名
if SaveDialog1.Execute then Edit2.Text:=ChangeFileExt(SaveDialog1.FileName,'.rm');
(6)点击窗体中的“开始制作”按钮,在代码窗口中输入代码:
ProducerControl1.InputFilename :='';
ProducerControl1.OutputFilename :='';
ProducerControl1.InputFilename :=Edit1.Text;
ProducerControl1.OutputFilename :=Edit2.Text;
ProducerControl1.StartEncoding;
(7)点击窗体中的“停止制作”按钮,在代码窗口中输入代码:
if ProducerControl1.IsEncoding then
ProducerControl1.StopEncoding;
(8)点击窗体中的“退出程序”按钮,在代码窗口中输入代码:
if ProducerControl1.IsEncoding then
ProducerControl1.StopEncoding;
ProducerControl1.FreeOnRelease;
ProducerControl1.Destroy;
Close;
(9)写入SaveDialog控件OnCanClose过程代码:
if FileExists(SaveDialog1.FileName) then //如果文件已经存在
if MessageDlg('文件已经存在,是要覆盖它吗?', mtConfirmation, [mbYes,mbNo],0)<>mrYes then
save.Click ;//如果选择了覆盖,则退出,否则,重新让用户选择文件
这样,一个简单的RM制作程序就完成了,不过还有很多不足之处。比如在时间显示状态、窗体变化的实现方法等等还没有介绍。关于其他功能的开发我们将在以后的编程栏目中慢慢介绍给大家,让编程爱好者们更深入地学习。




