BASS音频库使用的入门教程

BASS音频库是一款对非商业用户免费的音频处理类库。功能强大,支持几乎所有音频的解码编码等处理。以及强大的扩展功能!BASS在很多软件中都可以看到其身影,不管是音乐播放器还是视频播放器还是其他媒体处理软件。比如其中一款比较有名的叫做AIMP3的音乐播放器,里面就用到BASS音频库。 还有国产视频软件 快播,迅雷看看等等,里面都有用到BASS音频库。

BASS音频库是一款对非商业用户免费的音频处理类库。功能强大,支持几乎所有音频的解码编码等处理。以及强大的扩展功能!BASS在很多软件中都可以看到其身影,不管是音乐播放器还是视频播放器还是其他媒体处理软件。比如其中一款比较有名的叫做AIMP3的音乐播放器,里面就用到BASS音频库。 还有国产视频软件 快播,迅雷看看等等,里面都有用到BASS音频库。


BASS音频库官网http://www.un4seen.com/

现在我就简单介绍如何用C#调用BASS音频库实现播放音乐。

首先你先到官网下载BASS音频库 先点击左边导航的BASS 然后下载



下载之后,再把这个页面拉下来找到 Bass.Net 下载这个别人封装好的.NET平台的类库。



当然也可以不下载这个Bass.Net,自己也可以封装。只是比较麻烦而已。 


下载好了这两个文件之后。你先安装好Bass.Net,他会自动注册Bass.Net.dll组件。安装过程略过! Bass.Net有两种框架,一种是.Net 2.0 的和 .Net 4.0 的。其实用法都一样。 我以2.0为例。


现在新建个.Net 2.0项目! 你可以在解决方案的项目的属性里修改目标框架。



OK了,现在添加Bass.Net的引用。 右键解决方案管理器里的引用,添加引用。在.NET分类里找到刚才安装好的 BASS.NET API for .Net 确定



最后还要把BASS音频库(bass.dll,第一个下载的)放到Debug目录里。 基本工作做好了。 现在开始编写代码! 


在一个窗体是添加两个按钮!一个为打开按钮,一个为播放按钮!



先对窗体加载事件写代码!用来初始化BASS音频库。 双击窗体,进入代码编辑模式。
先添加对Bass命名空间的引用。
using Un4seen.Bass;

在窗体的Load事件里写代码



第一个参数是输出设备的编号,-1是采用默认设备输出,第二个参数是输出采样率,第三个参数是初始化设备的输出模式,最后一个是句柄,为本窗体的句柄就可以了。

现在写打开按钮的单击事件,双击打开按钮,进入编辑模式。

然后定义全局的字符串字段: string fileName; 来保存文件名。 定义一个文件打开对话框,用来打开一个文件,获取文件名。



现在编写播放按钮的单击事件。双击播放按钮,进入编辑模式。

定义一个全局Int的字段: int stream; 音频流句柄。

先用Bass.BASS_StreamCreateFile创建音频流,第一个参数是文件名,第二个参数是文件流开始位置,第三个是文件流长度 0为使用文件整个长度,最后一个是流的创建模式。

然后用Bass.BASS_ChannelPlay来播放音乐,第一个参数是刚才创建的音频流句柄,第二个是是否要重新开始播放。



现在基本播放功能写好了。当然还要一些收尾工作,就是释放资源!为了程序的安全稳定!(.NET可以自动处理托管资源,对于非托管资源就要自己释放了)

你可以在窗体的关闭事件里写释放资源。



OK了,调用Bass音频库实现简单的播放功能。 Bass.Net在没有注册的情况下在每次启动时都会有个版权提示窗体显示。 当然如果自己封装的话就不会有这些问题!
更多功能的实现你可以参考Bass.Net 的API文档,或者BASS音频库官网。

Bass.BASS_ChannelPause(stream);//音乐暂停
Bass.BASS_ChannelIsActive(stream);//音乐当前播放状态
Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetPosition(stream));//当前播放时间(单位秒)
Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream));//当前音乐持续时间(单位秒)

Bass.Net 的API文档网址: http://bass.radio42.com/help/

单独使用bass.dll 可以支持MP3、OGG、WAV等格式音乐的播放。如果要实现播放其他格式的音乐,可以到官网下载扩展,那些扩展都有文档说明。 

这次教程就这么多了,先让大家了解BASS音频库的基本使用方法。对于那些英文资料,你们可以使用翻译工具来阅读,学会自学! 如果还有什么问题你们可以提出来,我会尽量帮你们解答!