• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi多媒体设计之TMediaPlayer组件(六)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

TMediaPlayer播放CD音频相当简单。要放CD,只需简单地改变DeviceType属性为dtCDAudio即可,并点击Play按钮(或调用Play方法)。

 

掌握CD音频设备程序设计最困难的是用于CD中不同的时间格式。用户将使用TMSF(time, minutes, seconds, frames)的时间格式来获取某一特定音轨的信息或设置当前位置为某一个特定音轨。例如:下面的代码中将格式化字符串并得到当前音轨内播放的位置。

var
 Time: Integer;
 Track: Integer;
 Minutes: Integer;
 Seconds: Integer;
 TimeStr: string;
begin
  if MediaPlayer.Mode <> mpPlaying then
    Exit;
  Time    := MediaPlayer.Position;
  Track   := mci_TMSF_Track(Time);
  Minutes := mci_TMSF_Minute(Time);
  Seconds := mci_TMSF_Second(Time);
  TimeStr := Format('Track Time: %2.2d:%2.2d', [Minutes, Seconds]);
  lbl1.Caption := 'Track: ' + IntToStr(Track);
  lbl2.Caption := TimeStr;
  { 获取总体时间}
  MediaPlayer.TimeFormat := tfMSF;
  Time := MediaPlayer.Position;
  Minutes := mci_MSF_Minute(Time);
  Seconds := mci_MSF_Second(Time);
  TimeStr := Format('Total Time: %2.2d:%2.2d', [Minutes, Seconds]);
  lbl3.Caption := TimeStr;
  MediaPlayer.TimeFormat := tfTMSF;
end;

首先TimeFormat被设置成tfTMSF确保正确的时间格式。其次,当前位置保存在Time变量中。再次,利用Windows的时间转换宏(macros)mci_TMSF_Track,mci_TMSF_Minute和mci_TMSF_Second获取不同的时间值(音轨,分和秒)。这些宏包含在MMSystem单元中。如果使用这些宏,必须把MMSystem单元添加到uses列表中。获得单独的时间后,分别在lbl1和lbl2标签中显示当前音轨,当前音轨的分和秒信息。

用户使用MSF(分、秒和帧)的时间格式来获得整体的时间信息。例如,使用MSF事件格式获取相对于CD起点的当前位置。同样地,如果想设置CD当前位置为30分而不考虑音轨的话,使用MSF格式。上面的代码中包括了如何获取总体时间信息的代码。


本讲范例,使用了一个TMediaPlayer组件,设置其属性如下:

增加了一个Timer组件,用于定时获取播放的进度时间,其属性设置如下:

增加三个Label标签组件,分别显示当前音轨、当前播放时间、总体播放时间信息,界面设计如下:

接下来在Timer的OnTimer事件中输入显示时间的代码:

procedure TForm1.TimerTimer(Sender: TObject);
var
 Time: Integer;
 Track: Integer;
 Minutes: Integer;
 Seconds: Integer;
 TimeStr: string;
begin
  if MediaPlayer.Mode <> mpPlaying then
    Exit;
  Time    := MediaPlayer.Position;
  Track   := mci_TMSF_Track(Time);
  Minutes := mci_TMSF_Minute(Time);
  Seconds := mci_TMSF_Second(Time);
  TimeStr := Format('Track Time: %2.2d:%2.2d', [Minutes, Seconds]);
  lbl1.Caption := 'Track: ' + IntToStr(Track);
  lbl2.Caption := TimeStr;
  { 获取总体时间}
  MediaPlayer.TimeFormat := tfMSF;
  Time := MediaPlayer.Position;
  Minutes := mci_MSF_Minute(Time);
  Seconds := mci_MSF_Second(Time);
  TimeStr := Format('Total Time: %2.2d:%2.2d', [Minutes, Seconds]);
  lbl3.Caption := TimeStr;
  MediaPlayer.TimeFormat := tfTMSF;
end;

在MediaPlayer组件的OnClick事件中输入下面的代码:

procedure TForm1.MediaPlayerClick(Sender: TObject; Button: TMPBtnType;
  var DoDefault: Boolean);
begin
  if Button = btEject then begin
    lbl1.Caption := 'Track: ';
    lbl2.Caption := 'Track Time: ';
    lbl3.Caption := 'Total Time: ';
  end;
end;

OK,在你的光驱中放入CD音乐,然后运行程序,点击播放按钮开始欣赏美妙的音乐吧。


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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
建模:华为杯数学建模竞赛--辛烷损失值预测模型(matlab)发布时间:2022-07-18
下一篇:
matlab 常用函数汇总发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap