delphi7,播放音乐

来源:互联网 发布:linux访问https地址 编辑:程序博客网 时间:2024/05/22 00:25

()Mediaplayer ActiveX

万能,但占资源

-----------------------------------------

一、安装 

  在Delphi7中选择“Component ——Import ActiveX Control...”菜单,会弹出“Import ActiveX0”窗口。在列表中选择“Windows Media Player(Version 1.0)”,再点击“Install”...... 
  当然,得先安装Mediaplayer 9。另外,最好是使用Delphi7,因为我发现Mp9 ActiveX在Delphi7提供的内容比Delphi6更丰富,delphi6以下的版本我就没有测试过了。 

二、一孔之见 
[基本属性] 
URL:string 可以指定媒体位置 
enableContextMenu:Boolean 显示/不显示播放位置的右键菜单 
fullScreen:boolean 全屏显示 
stretchToFit:boolean 非全屏状态时是否伸展到最佳大小 
uMode:string 播放器的模式,full:有下面的控制条; none:只有播放部份没有控制条 
playState:integer 当前控件状态,下面是三种基本状态: 
3:正在播放 
2:暂停 
1:已停止 
状态变化时会触发OnStatusChange事件 
[controls] 
可通过WindowsMediaPlayer.controls对播放器进行控制并取得相关的一些信息: 
controls.play; 播放 
controls.stop; 停止 
controls.pause; 暂停 
controls.currentPosition:Double 当前播放进度 
controls.currentPositionString:string 时间格式的字符串 "0:32" 
[currentMedia] 
可以通过WindowsMediaPlayer.currentMedia取得当前媒体的信息 
currentMedia.duration Double 总长度 
currentMedia.durationString 时间格式的字符串 "4:34" 
[settings] 
可以通过WindowsMediaPlayer.settings对播放器进行设置,包括音量和声道等。 
settings.volume:integer 音量 (0-100) 
settings.balance:integer 声道,通过它应该可以进行立体声、左声道、右声道的控制。但对应的取值尚不清楚。 
三、罗嗦一句 

  以上我提到的,全是我已经在windows98+Mediaplayer9+delphi7环境下试过了的,其实Mediaplayer9的ActiveX还有好多的属性、方法,我没法一一列出(其实多数是我搞不明白啦,原来下过一个英文的SDK,有详细介绍,不过我看不太懂),一人之力有限,还希望有心人能多多挖掘,多多交流。

(二)用TMediaPlayer  然后用PlaySound函数

 if(opendialog1.execute) then  
  begin  
  mediaplayer1.filename:=opendialog1.filename;  
  mediaplayer1.open  
  mediaplayer1.play;  



调用API函数sndPlaySound

mp3,wma,好像不能播放大尺寸

-------------------

//声明:
sndPlaySound(
  lpszSoundName: PChar('...'); {声音文件名}
  uFlags: UINT{播放选项}
): BOOL;

//uFlags 参数可选值:
SND_SYNC = 0; {同步播放, 程序须等到播放完毕才向下执行}
SND_ASYNC = 1; {异步播放, 在函数返回之后开始播放, 不影响程序继续执行}
SND_NODEFAULT = 2; {声音文件缺失时, 函数自动返回不播放默认声音}
SND_MEMORY = 4; {播放内存中的声音, 譬如资源文件中的声音}
SND_LOOP = 8; {循环播放, 需要和 SND_ASYNC 组合使用}
SND_NOSTOP = 16;{如果当前正在播放声音, 立即返回 False}

EG:

//停止发音

 procedure TForm1.Button2Click(Sender: TObject);
  begin
  sndPlaySound(nil, 0);
  end;

//同步播放
procedure TForm1.Button1Click(Sender: TObject);
begin
  sndPlaySound(s, SND_SYNC);
  Beep; {播放完毕才会执行这句}
end;

//异步播放
procedure TForm1.Button2Click(Sender: TObject);
begin
  sndPlaySound(s, SND_ASYNC);
  Beep; {马上会执行这句}
end;

//反复播放
procedure TForm1.Button3Click(Sender: TObject);
begin
  sndPlaySound(s, SND_LOOP or SND_ASYNC);
end;

EG:

如果你要经常播放一种声音,就应该考虑把文件载入内存并从内存中播放:
  var
  tada: string;
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  sndPlaySound(Pointer(tada), SND_MEMORY
  Or SND_NODEFAULT Or SND_ASYNC);
  end;
  initialization
  tada := LoadFile('C:/Windows/Media/Tada.wav');
  finalization
  tada := '; //释放字符串占用的内存。
  end.

使用MCISendString播放背景音樂

万能,好

---------------------------

在單元接口引用 mmsystem 單元.


//播放音乐 
MCISendString('OPEN e:/1.MID TYPE SEQUENCER ALIAS NN', '', 0, 0); 
MCISendString('PLAY NN FROM 0', '', 0, 0); 
MCISendString('CLOSE ANIMATION', '', 0, 0); 
end; 
//停止播放 
MCISendString('OPEN e:/1.MID TYPE SEQUENCER ALIAS NN', '', 0, 0); 
MCISendString('STOP NN', '', 0, 0); 
MCISendString('CLOSE ANIMATION', '', 0, 0);


播放.MP3、wav、wma文件:

//開始播放:

procedure TForm1.Button1Click(Sender: TObject);
begin
MCISendString('OPEN e:/1.mp3 TYPE mpegvideo alias ww',nil, 0, 0);
MCISendString('PLAY WW', nil, 0, 0);
MCISendString('CLOSE ANIMATION', '', 0, 0);
end;

//停止播放

procedure TForm1.Button2Click(Sender: TObject);
begin
MCISendString('OPEN e:/1.mp3 TYPE mpegvideo alias ww', '', 0, 0);
MCISendString('STOP ww', '', 0, 0);
MCISendString('CLOSE ANIMATION', '', 0, 0);
end;



原创粉丝点击