利用DirectShow开发C#版的音频文件播放器(三)

前面曾经讲到了利用利用DirectShow开发C#版的MP3播放器,这篇文章是对前面两篇文章的补充与升华。

首先,大家不难发现,这篇文章的标题已经修改为音频文件播放器,而不仅仅是针对MP3一种格式,支持多种音频格式,如*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma。其次是原有的MP3播放器都是使用了Quazt.dll文件,现在则是去掉了该DLL文件,而引用Microsoft.DirectX.AudioVideoPlayback。最后,在界面的展现上做了修改,使其更美观、更人性化,同时对播放列表支持右键菜单功能。

    在具体介绍该版本的音频文件播放器之前,先看看运行效果图:

   

整个项目工程以FrmPlayer.CS作为主类,里面包含了各类事件和方法,其中比较重要的方法有如下几个:

(1)   播放方法:private void Play(),包括了对一次全新播放和暂停后继续播放的处理;

(2)   暂停方法:private void Pause(),对当前正在播放的媒体文件进行暂停;

(3)   停止方法:private void Stop(),停止当前正在播放的媒体文件;

(4)   已经播放到结尾事件:private void ClipEnded(object sender, System.EventArgs e),该事件主要是当一个媒体文件播放完成时,可以自动切换到下一曲,事件的添加在play()方法中;

(5)   播放上一曲方法:private void Previous(),其中包含了对不同播放模式的处理;

(6)   播放下一曲方法:private void Next(),其中包含了对不同播放模式的处理;

(7)   初始化媒体文件信息并开始播放方法:private void InitFileInfoAndPlay(string[] fileNames),该方法主要是获取文件信息并添加到播放列表,然后开始播放;

(8)   更新播放时间及播放进度方法:private void UpdatePlayTime(),主要用于处理播放进度条和已播放时间的显示;

(9)   根据播放列表状态更新相应按钮状态方法:private void UpdatePlayList()

(10) 更新播放按钮状态方法:private void UpdatePlayStatus(),播放按钮状态的控制主要通过当前媒体文件的播放状态(PausedRunningStopped)来确定;

(11) 更新播放模式的菜单选中状态方法:private void UpdatePlayModeMenuStatus(),该方法中使用到了枚举类型PlayMode包括单曲播放、单曲循环、顺序播放、循环播放和随机播放共五种播放模式。

 

此外还有两个类,一个是AudioFileInfo.cs,该类主要用于存储音频文件的相关信息,如文件标题、播放时长、文件大小、文件绝对路径等;一个是Utils.cs,该类主要包含了一些静态方法。

经过一定的修改调整,目前的音频文件播放器已基本可以满足应用要求。关于整个项目工程的源代码,笔者已经打包成*.rar文件并上传,有需要的朋友可以从以下路径下载:http://download.csdn.net/source/2153161

另外,关于删除若干媒体文件后,重排播放序号的问题,笔者尚未作任何处理,关于这一点,在后面如果有闲暇时间,将会作进一步的改进。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪无痕大黄蜂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值