用Delphi写一个超级简单的(wav, mp3)播放器

    使用Delphi中System中的MediaPlayer控件。    因为我主要是需要使用播放声频文件中的片断,比如 21000ms ~35000ms。在Delphi中可以使用MediaPlayer的StartPos和EndPos来实现。    在编程过程中主要遇到的问题是:当播放wav格式时,利用设置StartPos和EndPos可以播放任意位置的片断,但是当播放mp3时,StartPo
摘要由CSDN通过智能技术生成
    使用Delphi中System中的MediaPlayer控件。
    因为我主要是需要使用播放声频文件中的片断,比如 21000ms ~35000ms。在Delphi中可以使用MediaPlayer的StartPos和EndPos来实现。
    在编程过程中主要遇到的问题是:当播放wav格式时,利用设置StartPos和EndPos可以播放任意位置的片断,但是当播放mp3时,StartPos有效,而EndPos属性无效。
如下代码:
with  mp  do  begin
      Filename :
=  sFile; 
      DeviceType :
=  dtAutoSelect;
      TimeFormat :
=  tfMilliseconds;

      Open;

      StartPos :
=   10000 ;
      EndPos :
=  StartPos  +   2000 ;

      Play;
end ;


当 sFile 是wav格式时,一点问题都没有,刚好播放了2s的内容,但是当格式为mp3时,
StartPos有效,从10s开始播放,但EndPos无效,停不下来。
后来没办法,只有使用一个Timer来监控播放的情况,当mp.Postion > mp.EndPos时,就停止播放。为了控制的精确性,需要将Timer的间隔Interval设置为100ms或更小的数值。
// 用来监控mp3文件结尾的Timer,时间间隔要设为100ms
procedure TMyPlayer.EndPosTimerTimer(Sender: TObject);
begin
  
with  mp  do  begin
        
if  Position  >  EndPos  then  begin
          
//  停止播放
          
Stop ;
          
//  关闭两个Timer
          EndPosTimer.Enabled :
=   false ;
          TrackBarTimer.Enabled :
=   false ;
          
//  把进度条设到开始
          SoundBar.Position :
=  StartPos;
          
          info.Lines.Append(
' Stopped at ' + IntToStr(mp.Position) + 'ms');
         end ;
  
end ;
end ;

另外,这个示例中还利用TrackBar和另一个Timer实现了播放的进度条。
// 用来控制播放进度条的Timer,时间间隔要为100ms
procedure TMyPlayer.TrackBarTimerTimer(Sender: TObject);
begin
  
with  SoundBar  do  begin
      Min :
=  mp.StartPos;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值