博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# wave mp3 播放器探寻
阅读量:5344 次
发布时间:2019-06-15

本文共 1162 字,大约阅读时间需要 3 分钟。

最近无聊,想听听歌曲。可怜新电脑上歌曲就两三首,要听其它的就得在旧电脑上播放。可是,那台古董但不失健壮的本本被老婆无情的霸占了。无奈。

思来想去,得,写个程序播放吧。做个C/S播放器。

理想是美好的,现实是残酷的。 在繁琐的查找和测试之后,找来了(26 Oct 2012 NAudio 1.6)这个开源的第三方插件。

先写个结论再写过程。

结论

 

使用.net自带的SoundPlayer来播放wave文件需要注意几个地方:

  • 使用FileStream 或 MemoryStream 时 ,流的Position一定要为 0流不能被关闭。即需要注意流对象的生命周期
  • 无法使用Wave文件的一段来播放。
  •  Stream属性可指定要播放的流

 

二、使用NAiduo库播放文件需要注意几个地方

  • 对文件类型进行判断时,先判断Wave文件,若非wave文件,则使用 Mp3Freame 来判断是否为mp3文件
  • 若使用NAudio库提供的 WaveOut 播放,需要注意,它在文件播放完时并不会把 PlaybackState 置为 PlaybackState.Stopped,这个需要手动判断了。
  • 若要 get / set 播放的进度时间音量,则需要使用 WaveChannel32 
  • NAudio库的 Volume 的音量调用有问题,使用默认值即可。

过程

 

NAudio提供的示例

  •  NAudio的源文件中提供了一些示例
  • http://naudio.codeplex.com/的网页中,
    Projects Using NAudio 同样有一些 
  • 当然,更好的是 DOCUMENTION 下面的 How do I...? 这里直接有播放Wave和Mp3的救命代码
  • 还有一篇  的文章 

 

开始

     大家都清楚播放器的基本构成包含: 音量控制进度控制时间显示播放暂停停止 等几个基本动做,以及 播放结束时引发的事件。所以,

            
 

上图AudioPlayer为播放器的对象,但实际的播放操作是由NAudio来完成。所以,

             

使用AudioCore来完成NAudio实际的播放动作。那么,如何操作音量、进度及显示时间呢?这些就是要 AudioVolume AudioTimePosition 来完成了。

 

                     

 

OK,所有的对象都已经建立,只需要有机的结合在一起就可以工作了。下面来做个实际测试。

让我们来听下单田芳讲的《西游记》

        

三、结束

     结束的貌似快了点。hi~hi~,咱这是效率。。有兴趣的同学可以用Reflector反编译 goldli.Utility.AudioPlayer.dll 。有问题发邮件。闪了

 

转载于:https://www.cnblogs.com/goldli/archive/2013/05/27/3101985.html

你可能感兴趣的文章
利用mapreduce清洗日志内存不足问题
查看>>
Problem M: 第几天——C语言初学者百题大战之十八
查看>>
Matplotlib图例
查看>>
iOS视频流开发(1)—视频基本概念
查看>>
Android软件设计---Dumpsys工具使用
查看>>
Javascript中的内存泄漏
查看>>
关于并发
查看>>
【原创】字典攻击教务处(BurpSuite使用)
查看>>
linux下Python2.7编译安装PyQt5
查看>>
【流媒體】live555—VS2008 下live555编译、使用及测试
查看>>
mysql 之SQL语句--NSERT SELECT ON DUPLICATE KEY UPDATE的写法
查看>>
js的学习 (数组)
查看>>
内排序之快速排序
查看>>
Django 认证系统
查看>>
温故而知新 小测试
查看>>
windows和linux下安装 redis
查看>>
互联网趋势分析工具
查看>>
调用bash的时候出现curl command not found
查看>>
Android学习之旅(一)
查看>>
I2C软件调试思路并知识总结
查看>>