转贴一篇文章
打造自己的real播放器
--------------------------------------------------------------------------------
一、问题的提出
Real文件(后缀为.ra、.rm、ram等)是一种很流行的网上影音格式。与MP3音乐格式和MPEG影音格式相比,
它具有体积更小巧、更适合网络传输的特点。因而许多的新闻和娱乐网站都使用Real文件格式存储新闻和
影音资料,供用户实时下载收听观看。
Delphi是Borland公司提供的一种全新的Windows编程开发工具。由于它采用了具有弹性的和可重用的面向
对象Pascal(Object-Oriented Pascal)语言,并有强大的数据库引擎(BDE),快速的代码编译器,同时又
提供了众多出色的构件,受到广大编程人员的青睐.在众多的编程语言(如VB,PowerBuilder等)中脱颖而
出.
Delphi 4完全支持ActiveX,您可以很方便地创建、注册、安装、发布和使用ActiveX控件、ActiveForm和
OLE自动化对象,这应当归功于"对象接口" 技术和DAX技术。控件是Delphi应用程序的程序构件,Delphi
支持使用可视化部件所见即所得地建立应用程序。采用控件形式可以把对象严密封装,并加上一层直观外
壳,有利于软件调试和代码重用。开发群体以控件为功能单位分工协作,比较容易实现工程化管理,从软
件规划设计到测试修改都可以减少意外差错,大大提高工作效率。
那么,我们现在可以利用Delphi强大的控件功能在应用程序中直接打开Real文件,并控制它播放和停止,
还可以得到其它的相关信息,这将会为我们的应用程序增色不少。(哈哈:…)想知道怎么实现的吗?快
跟我来吧。
二、一个例子
下面,我们将利用Delphi4来开发一个简单的Real文件的播放程序,当然作为例程序,它只有简单的Real
文件的打开、播放、暂停、停止和关闭功能,但麻雀虽小,五脏俱全嘛。下边我们一步一步来实现这个
小型的Real播放器吧。不过,在您进行下面的工作之前,我们还要注意,要想在Delphi中使用Real控件,您的
计算机中必须安装有RealPlayer播放程序,否则,哈哈:那可是不行的。
在Delphi4的可视化编程环境中,选择File菜单下的"New Application"项,新建一个新的应用程序。然后
选择Component(组件)菜单下的"Import ActiveX Control..."(导入ActiveX控件)选项,选中其中的
"Real Player ActiveX Control Library(Vision1.0)"项,并单击Install,会出现一个install窗口。
★如果要把它添加到一个已经存在的包中,在"Into existing package"对话框中的"File name:"窗口中
选择你想安装的路径,并单击"OK";会弹出一个确认的对话框,它问你"Package dclusr40.bpk will
be rebuilt. Continue?",单击"Yes";在弹出的窗口中单击击"Install",该控件就安装完毕。
★如果要把它添加到一个新建的包中,在"Into new package"对话框中的 "File name:"窗口中选择你想
安装的路径,并新建一个包,假如命名为test,并单击"OK";它问你"Package test.bpk will be built.
Continue?",单击"Yes"。 在弹出的窗口中单击击"Install",该控件就安装完毕。
这时,你会在控件条的ActiveX下发现一个新的控件,名字为RealAudio, 单击它把它放在form中,并在该
form中放一个OpenDialog控件和一个panel,在该panel上放六个button,他们的Caption属性分别命名为
"打开"、"播放"、"暂停"、"停止"、"静音"、"退出",并依次设置这些按钮的名字属性(name)
"OpenRealFileButton"、"PlayButton"、"PauseButton"、"StopButton"、"MuteButton"
和"QuitButton";设置panel、RealAudio的Align 属性分别为Alleft 和AlClient。考虑到当歌曲可以播放
时,"播放"按钮才是可用的,所以,还应该在程序中对"播放"、"暂停"、"停止"按钮的可用属性(Enabled)
进行控制,即只有当歌曲是可以播放时该按钮才是可用的,并初始化这三个按钮的可用属性(Enabled)
分别为"true"、"false"和"false"。另外,对于,静音按钮,在大多数情况下,该按钮应该是个开关按钮,
所以,还要根据情况变化设置该按钮的标题(Caption)属性。其次,为了使增强程序的功能,还要设置
打开对话框(OpenDialog)的文件过滤属性(Filter),使其只能打开我们需要的文件。最以后分别在
这六个Button的OnClick事件中写下如下代码:
procedure TForm1.OpenFileButtonClick(Sender: TObject);
begin
if OpenRealFileDialog.Execute then
realaudio1.SetSource (OpenRealFileDialog.filename);
end;
procedure TForm1.PlayButtonClick(Sender: TObject);
var
pbCanPlay:wordbool;
begin
if RealAudio1.CanPlay (pbCanPlay) then
{当能够播放时再进行播放功能设置}
begin
RealAudio1.DoPlay {执行REAL控件的播放操作}
PlayButton.Enabled :=false;{设置播放按钮不可用}
PauseButton.Enabled :=true;{设置暂停按钮为可用}
StopButton.Enabled :=true;{设置停止按钮为可用}
end
end;
procedure TForm1.PauseButtonClick(Sender: TObject);
var
pbPlayPause:wordbool;
begin
if RealAudio1.CanPlayPause (pbPlayPause) then
{当可以进行暂停设置时再进行操作}
begin
RealAudio1.DoPlayPause {执行REAL控件的暂停功能}
PauseButton.Enabled :=false;{设置暂停按钮不可用}
PlayButton.Enabled :=true;{设置播放铵钮为可用}
end
end;
procedure TForm1.StopButtonClick(Sender: TObject);
var
pbCanStop:wordbool;
begin
if RealAudio1.CanStop (pbCanStop) then
{当能够进行停止操作时再进行程序设置}
begin
RealAudio1.DoStop {执行REAL控件的停止功能}
StopButton.Enabled :=false;{设置停止按钮为不可用}
PauseButton.Enabled :=false;{设置暂停按钮为不可用}
PlayButton.Enabled :=true;{设置播放按钮为可用}
end
end;
procedure TForm1.MuteButtonClick(Sender: TObject);
var
pbmute:wordbool;
begin
pbmute:=RealAudio1.GetMute (pbmute) {得到当前的静音状态}
RealAudio1.SetMute (not pbmute);{设置当前静音状态的相反操作}
if pbmute then
{根据情况判断并设置静音按钮的CAPTION属性}
MuteButton.Caption :='闭音(&M)'
else
MuteButton.Caption :='开音(&M)';
end;
procedure TForm1.QuitButtonClick(Sender: TObject);
begin
RealAudio1.FreeOnRelease
close;{释放资源并关闭程序}
end;
怎么样,运行一下这个程序,效果还不错吧。
当然,这个程序还可以进一步地改进,就可以成为你手中自己的Real播放器了,例如可以增加播放表的
功能及循环播放等等。另外,通过此例程,我们还可以掌握在Delphi中对其它控件的编程方法。好了,
有了好的东东不要忘记告诉我呀。