前面曾经讲到了利用利用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(),播放按钮状态的控制主要通过当前媒体文件的播放状态(Paused、Running和Stopped)来确定;

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

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

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

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

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

  1. 利用DirectShow开发C#版的音频文件播放器(补充完善)

    继今年三月份利用DirectShow开发C#版的音频文件播放器(三)文章之后,一直希望对这个音频文件播放器所存在的一些问题做修改完善,可惜一直忙于工作而无暇顾及这个事情.近日,有读者朋友提到了这个问题 ...

  2. python播放wav文件_python3 写一个WAV音频文件播放器的代码

    环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:ki ...

  3. java wav音频文件播放器demo

    java 简易wav音频文件播放器 测试文件 源码 相关资料 测试文件 csdn下载 : https://download.csdn.net/download/qq_41054313/18704149 ...

  4. 利用DirectShow开发C#版的MP3播放器(二)

    继上一次利用DirectShow编写了一个C#版的简单MP3播放器之后,这两天利用空余时间对其作了初步的完善,主要工作如下:     1.对原有的代码进行拆分,主要拆分成五个类,包括一个Form类Fr ...

  5. 利用DirectShow开发C#版的MP3播放器(一)

    因工作需要,近期开始接触DirectShow开发的相关技术,由于本人较青睐于C#,因此从网上找了一些关于.NET版的DirectShow库及实例,之后参考相关源码编写了一个用于测试的MP3播放器,源码 ...

  6. 利用DirectShow开发C#版的视频播放器

    今天这里要给各位朋友介绍的是本人利用业余时间使用C#编写的一个视频播放器,开发环境为Microsoft Visual Studio 2008/C#.Microsoft DirectX 9.0 SDK. ...

  7. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...

  8. Android开发本地及网络Mp3音乐播放器(十三)网络音乐搜索功能实现,歌名歌手专辑名搜索

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51298411 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现网络音乐 ...

  9. Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51290181 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现NetM ...

最新文章

  1. 目标跟踪初探(DeepSORT)
  2. android studio 的自动更新问题
  3. 记不住ASP.NET页面生命周期的苦恼
  4. 10_30_unittest
  5. linux 性能测试iostat,Linux性能分析之二(iostat)
  6. 管理nuget程序包中搜索不到任何程序包
  7. 经验的总结,需要记录。
  8. 测量软件应用系统的聚合复杂度【翻译稿】
  9. Java SE 01 Java概述
  10. r与python交互_Reticulate:R + Python 实现互操作
  11. 高通平台紧急呼叫问题总结
  12. vscode、windows快捷键
  13. 基于labview的打地鼠游戏制作
  14. 三层交换机动态路由配置
  15. 3y开发都不的不写单元测试,然后被被批了
  16. Java程序监控工具
  17. google地图标记
  18. Linux网络连接命令
  19. 机器学习总结(二):梯度消失和梯度爆炸
  20. 杜笙除镍树脂Tulsimer CH-90实际运用案例

热门文章

  1. ES生命周期管理 配置ilm策略
  2. OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 5726797824, 0) failed;
  3. Redis持久化中的AOF(Append Only File)持久化
  4. PikPak离线下载,磁力网盘
  5. 如何使用相芯科技美妆SDK实现美妆(Android)
  6. 安装了PS2022 后,画笔工具使用延迟,操作卡到无法忍受,PS 插件合都卸载掉、设置暂存盘等方法都没有效果
  7. 【TS】泛型 Generics
  8. 物理机无法ping通虚拟机,虚拟机能ping通物理机
  9. PCL安装和环境配置
  10. 10分钟了解何为ECharts