delphi7,播放音乐
来源:互联网 发布:linux访问https地址 编辑:程序博客网 时间:2024/05/22 00:25
(一)Mediaplayer ActiveX
万能,但占资源
-----------------------------------------
一、安装
当然,得先安装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;
- delphi7,播放音乐
- 播放音乐
- 播放音乐
- 音乐播放
- 播放音乐
- 音乐播放
- 播放音乐
- 播放音乐
- 音乐播放
- 播放音乐
- 播放音乐
- 音乐播放
- 音乐播放
- 音乐播放
- 音乐播放
- 音乐播放
- 播放音乐
- 音乐播放
- Mysql 存储过程+游标应用
- 触发器不起作用
- sqlite3嵌入式数据库的移植
- 居然问到了8queen的问题....
- Hibernate获取数据方式与缓存使用
- delphi7,播放音乐
- 深入理解C语言指针的奥秘(转)
- JAXB体验之旅第二篇:unmarshal
- 利用 ASP.NET 的内置功能抵御 Web 攻击
- List与ArrayList区别
- poj1607
- 在.NET应用程序中不注册使用ocx Com组件
- NetBeans 时事通讯(刊号 # 17 - Jul 22, 2008 )
- ASP.NET AJAX客户端编程