[Delphi] 自制real播放器
發(fā)表時(shí)間:2024-02-15 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]A.關(guān)于問題Real文件(后綴為.ra、.rm、ram等)是一種很流行的網(wǎng)上影音格式。與MP3音樂格式和MPEG影音格式相比,它具有體積更小巧、更適合網(wǎng)絡(luò)傳輸?shù)奶攸c(diǎn)。因而許多的新聞和娛樂網(wǎng)站都使用Real文件格式存儲(chǔ)新聞和影音資料,供用戶實(shí)時(shí)下載收聽觀看。Delphi是Borland公司提供的一種...
A.關(guān)于問題
Real文件(后綴為.ra、.rm、ram等)是一種很流行的網(wǎng)上影音格式。與MP3音樂格式和MPEG影音格式相比,它具有體積更小巧、更適合網(wǎng)絡(luò)傳輸?shù)奶攸c(diǎn)。因而許多的新聞和娛樂網(wǎng)站都使用Real文件格式存儲(chǔ)新聞和影音資料,供用戶實(shí)時(shí)下載收聽觀看。
Delphi是Borland公司提供的一種全新的Windows編程開發(fā)工具。由于它采用了具有彈性的和可重用的面向?qū)ο驪ascal(Object-Oriented Pascal)語(yǔ)言,并有強(qiáng)大的數(shù)據(jù)庫(kù)引擎(BDE),快速的代碼編譯器,同時(shí)又提供了眾多出色的構(gòu)件,受到廣大編程人員的青睞.在眾多的編程語(yǔ)言(如VB,PowerBuilder等)中脫穎而出.
Delphi 4完全支持ActiveX,您可以很方便地創(chuàng)建、注冊(cè)、安裝、發(fā)布和使用ActiveX控件、ActiveForm和OLE自動(dòng)化對(duì)象,這應(yīng)當(dāng)歸功于"對(duì)象接口" 技術(shù)和DAX技術(shù)?丶荄elphi應(yīng)用程序的程序構(gòu)件,Delphi支持使用可視化部件所見即所得地建立應(yīng)用程序。采用控件形式可以把對(duì)象嚴(yán)密封裝,并加上一層直觀外殼,有利于軟件調(diào)試和代碼重用。開發(fā)群體以控件為功能單位分工協(xié)作,比較容易實(shí)現(xiàn)工程化管理,從軟件規(guī)劃設(shè)計(jì)到測(cè)試修改都可以減少意外差錯(cuò),大大提高工作效率。
那么,我們現(xiàn)在可以利用Delphi強(qiáng)大的控件功能在應(yīng)用程序中直接打開Real文件,并控制它播放和停止,還可以得到其它的相關(guān)信息,這將會(huì)為我們的應(yīng)用程序增色不少。(哈哈:…)想知道怎么實(shí)現(xiàn)的嗎?快跟我來(lái)吧。
B.關(guān)于例子
下面,我們將利用Delphi4來(lái)開發(fā)一個(gè)簡(jiǎn)單的Real文件的播放程序,當(dāng)然作為例程序,它只有簡(jiǎn)單的Real文件的打開、播放、暫停、停止和關(guān)閉功能,但麻雀雖小,五臟俱全嘛。下邊我們一步一步來(lái)實(shí)現(xiàn)這個(gè)小型的Real播放器吧。不過(guò),在您進(jìn)行下面的工作之前,我們還要注意,要想在Delphi中使用Real控件,您的計(jì)算機(jī)中必須安裝有RealPlayer播放程序,否則,哈哈:那可是不行的。
在Delphi4的可視化編程環(huán)境中,選擇File菜單下的“New Application”項(xiàng),新建一個(gè)新的應(yīng)用程序。然后選擇Component(組件)菜單下的“Import ActiveX Control...”(導(dǎo)入ActiveX控件)選項(xiàng),選中其中的“Real Player ActiveX Control Library(Vision1.0)”項(xiàng),并單擊Install,會(huì)出現(xiàn)一個(gè)install窗口。
如果要把它添加到一個(gè)已經(jīng)存在的包中,在“Into existing package”對(duì)話框中的“File name:”窗口中選擇你想安裝的路徑,并單擊“OK”;會(huì)彈出一個(gè)確認(rèn)的對(duì)話框,它問你“Package dclusr40.bpk will be rebuilt. Continue?”,單擊“Yes”;在彈出的窗口中單擊擊“Install”,該控件就安裝完畢。
如果要把它添加到一個(gè)新建的包中,在“Into new package“對(duì)話框中的 “File name:“窗口中選擇你想安裝的路徑,并新建一個(gè)包,假如命名為test,并單擊“OK”;它問你“Package test.bpk will be built. Continue?”,單擊“Yes”。
在彈出的窗口中單擊擊“Install”,該控件就安裝完畢。
這時(shí),你會(huì)在控件條的ActiveX下發(fā)現(xiàn)一個(gè)新的控件,名字為RealAudio, 單擊它把它放在form中,并在該form中放一個(gè)OpenDialog控件和一個(gè)panel,在該panel上放六個(gè)button,他們的Caption屬性分別命名為“打開”、“播放”、“暫!薄ⅰ巴V埂、“靜音”、“退出”,并依次設(shè)置這些按鈕的名字屬性(name)“OpenRealFileButton”、“PlayButton”、“PauseButton”、“StopButton”、“MuteButton” 和“QuitButton”;設(shè)置panel、RealAudio的Align 屬性分別為Alleft 和AlClient?紤]到當(dāng)歌曲可以播放時(shí),“播放“按鈕才是可用的,所以,還應(yīng)該在程序中對(duì)“播放”、“暫!、“停止”按鈕的可用屬性(Enabled)進(jìn)行控制,即只有當(dāng)歌曲是可以播放時(shí)該按鈕才是可用的,并初始化這三個(gè)按鈕的可用屬性(Enabled)分別為“true”、“false”和“false”。另外,對(duì)于,靜音按鈕,在大多數(shù)情況下,該按鈕應(yīng)該是個(gè)開關(guān)按鈕,所以,還要根據(jù)情況變化設(shè)置該按鈕的標(biāo)題(Caption)屬性。其次,為了使增強(qiáng)程序的功能,還要設(shè)置打開對(duì)話框(OpenDialog)的文件過(guò)濾屬性(Filter),使其只能打開我們需要的文件。
C.關(guān)于代碼
最后分別在這六個(gè)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 {當(dāng)能夠播放時(shí)再進(jìn)行播放功能設(shè)置}
begin
RealAudio1.DoPlay ;{執(zhí)行REAL控件的播放操作}
PlayButton.Enabled :=false;{設(shè)置播放按鈕不可用}
PauseButton.Enabled :=true;{設(shè)置暫停按鈕為可用}
StopButton.Enabled :=true;{設(shè)置停止按鈕為可用}
end
end;
procedure TForm1.PauseButtonClick(Sender: TObject);
var
pbPlayPause:wordbool;
begin
if RealAudio1.CanPlayPause (pbPlayPause) then{當(dāng)可以進(jìn)行暫停設(shè)置時(shí)再進(jìn)行操作}
begin
RealAudio1.DoPlayPause ;{執(zhí)行REAL控件的暫停功能}
PauseButton.Enabled :=false;{設(shè)置暫停按鈕不可用}
PlayButton.Enabled :=true;{設(shè)置播放銨鈕為可用}
end
end;
procedure TForm1.MuteButtonClick(Sender: TObject);
var
pbmute:wordbool;
begin
pbmute:=RealAudio1.GetMute (pbmute) ;{得到當(dāng)前的靜音狀態(tài)}
RealAudio1.SetMute (not pbmute);{設(shè)置當(dāng)前靜音狀態(tài)的相反操作}
if pbmute then{根據(jù)情況判斷并設(shè)置靜音按鈕的CAPTION屬性}
MuteButton.Caption :='閉音(&M)'
else
MuteButton.Caption :='開音(&M)';
end;
procedure TForm1.QuitButtonClick(Sender: TObject);
begin
RealAudio1.FreeOnRelease ;
close;{釋放資源并關(guān)閉程序}
end;
怎么樣,運(yùn)行一下這個(gè)程序,效果還不錯(cuò)吧。