现在的位置: 首页 > 综合 > 正文

delphi 多媒体(TMediaplayer 2)

2018年02月06日 ⁄ 综合 ⁄ 共 1673字 ⁄ 字号 评论关闭

Wave音频(Wave Audio)

播放Wave音频是最基本的多媒体操作之一,它可能是最普通的,同步播放Wave文件代码如下:

 
procedure TForm1.btn1Click(Sender: TObject);
begin
  mpPlayer.Wait := True; { 同步播放}
  mpPlayer.FileName := 'test.wav';
  mpPlayer.Open;
  mpPlayer.Play;
end;

注意Wait属性设置为True,使得Wave文件同步播放。


如果想紧接(back-to-back)着播放下一Wave文件,Wait属性也是很必要的。例如下面的代码:

 
procedure TForm1.btn2Click(Sender: TObject);
begin
  mpPlayer.FileName := 'Sound1.wav';
  mpPlayer.Open;
  mpPlayer.Wait := True;
  mpPlayer.Play;
  mpPlayer.FileName := 'Sound2.wav';
  mpPlayer.Wait := True;
  mpPlayer.Open;
  mpPlayer.Play;
end;

注意,在播放每个文件前设置Wait属性为True

Wait属性在操作之后重新设置。因此,要想每当程序执行播放完成后,必须重新设置Wait属性。

如果没有设置Wait属性为True,则第一个声音开始播放并很快被稍晚一点点开始的第二个声音取代。如果想在后台播放声音,可设置Wait属性为False。


播放一部分Wave文件,可在播放前设置StartPos和EndPos属性。下面的例子打开Wave文件,并播放2秒声音。1秒开始,3秒结束。

 
procedure TForm1.btn3Click(Sender: TObject);
begin
  mpPlayer.FileName := 'test.wav';
  mpPlayer.Open;
  mpPlayer.StartPos := 1000; { 单位 毫秒}
  mpPlayer.EndPos := 3000;
  mpPlayer.Play;
end;

StartPos和EndPos属性都是以毫秒为单位,这是Wave音频设备默认值

Note

如果设置StartPos或者EndPos属性为无效值,则Wave文件不播放。无效值包括StartPos或者EndPos属性的值大于媒体长度。

设置输出音量(Setting the Output Volume)

设置Wave文件输出设备的音量相当简单,但是必须利用Windows API进行。

waveOutGetVolume和waveOutSetVolume函数分别用来获取音量和设置音量。

音量以整型(integer)存储。高位字节(hight word)制定右声道音量设置,低位字节(low word)制定左声道音量设置。如果设备没有独立设置左、右声道音量的能力,则低位字节用于设置音量,高位字节被忽略。

0值是无音量,16进制值$FFFF则是最大音量。下列代码为设置左右声道音量为50%,当然前提是要在uses列表中引用MMSystem单元。

waveOutSetVolume(0, $80008000);

下面的例子设置音量为最大值:

 
waveOutSetVolume(0, $FFFFFFFF);

注意0被用作waveOutSetVolume的第一个参数;这多少有点给人假象,以为WAVE设备为0号设备,但情况几乎总是这样,因此第一个参数可设置为0。

上面的代码,做了两个小的范例,分别以50%和100%的音量来播放,范例截图如下,请自行查看代码浏览。

 


设置音量就如上面讲解的一样非常容易。但要注意waveOutSetVolume仅设置WAVE输出设备的音量,而不是设置主音量。主音量可通过多媒体混合控制器(multimedia mixer control)来控制设置,该设置不在我们的讲解范围中。


以上代码均在Delphi 7下测试通过,示例代码下载:TMediaPlayer.rar

抱歉!评论已关闭.