[原创教程]mingw64调用bass库
mingw吧
全部回复
仅看楼主
level 13
BASS音频库是一款对非商业用户免费的音频处理类库。功能强大,支持几乎所有音频的解码编码等处理。以及强大的扩展功能!
foobar,aimp3,千千静听.这些知名音频软件都有用到bass库
以前观注这个东西的时候吧主还不会编程,那时候bass库还不能编译64位程序.
这两天又逛了一下bass网,发现更新了~
能够使用bass库做一个自己喜欢的小播放器本就是吧主学习程序的初衷之一
2018年01月16日 02点01分 1
level 13
BASS音频库官网http://www.un4seen.com/
下载bass24.zip
以后可能会有不同版本,参考图
注意win32只的不是32位编程.而是习惯性的说法,包括了32/64位
2018年01月16日 02点01分 2
level 13
解压后进入bass24的c目录,我的是这样的C:\downloads\bass24\c
大家可以看到有写好的makefile,我记的这东西以前默认是用vc编译的,现在终于可以mingw直接使用了
2018年01月16日 02点01分 3
level 13
在原C:\downloads\bass24\c\bin目录下有编译好的执行文件,我们全删掉.这都是32位程序,我们可是要搞64位编译的!
先用C:\downloads\bass24\c\x64\bass.lib这个文件替换掉C:\downloads\bass24\c\bass.lib,因为这个要被替换掉的是个32位的lib文件.
然后打开吧集成包的npMingw64\ConEmu\ConEmu64.exe命令台,当然你用配置好变量环境的cmd也可以
命令行进入C:\downloads\bass24\c,如图
2018年01月16日 02点01分 4
level 13
键入make不一会儿在C:\downloads\bass24\c\bin目录中生成了所有demo的可执行程序
复制C:\downloads\bass24\x64\bass.dll这个文件放在C:\downloads\bass24\c\bin目录,否则运行时会提示缺少dll文件.
大功告成,亲个嘴儿[太开心]
2018年01月16日 02点01分 5
level 13
最后随意测试下
随便点击了个basstest.exe运行如下,先add增加一首歌,然后选中,最后play.播放正常
2018年01月16日 02点01分 6
level 13
不能完,我们还应该分析一下make是怎么编译执行程序的
我们可以用make>01.txt把编译结果全写在01.txt文本文件中留着慢慢分析
看下第一个程序的编译内容
make -C 3dtest
make[1]: Entering directory 'C:/downloads/bass24/c/3dtest'
//先用windres生成了obj文件rsrc.obj
windres -i 3dtest.rc -o rsrc.obj
//好了开始编译了.注意rsrc.obj ..\bass.lib这两个文件要和源文件链接在一起
//-lcomdlg32 -lcomctl32 -lgdi32这几个参数是不能少的,这也是你以后编译bass的关键参数-mwindows就不说了
gcc -Os -I.. -mwindows 3dtest.c rsrc.obj ..\bass.lib -lcomdlg32 -lcomctl32 -lgdi32 -o ..\bin\3dtest.exe
//编译后删除掉obj无用文件
del rsrc.obj
基本上成功编译一堆demo后我们的makefile水平都会大涨,前题你要把作者的makefile仔细看看人家咋写的
2018年01月16日 03点01分 7
level 13
补充一点.x64位平台的windres如果想生成32位的资源文件
比如楼上的命令中
windres -i 3dtest.rc -o rsrc.obj改成
$(RES) -i $*.rc -F pe-i386 -o rsrc.obj
[-F pe-i386]这个命令是生成32位的关键哦!
2018年01月16日 03点01分 8
到目前为止的集成包v028是支持32位编译的.当然了在gcc/g++后要加-m32参数
2018年01月16日 03点01分
level 13
终于有时间开始学c了.搞了两天,bass库的基本播放和扩展格式支持基本上搞清楚了
共享代码:
#include <stdbool.h>
#include "bass.h"
int plugin()
{
//读取插件;
BASS_PluginLoad("bass_ape.dll",0); // plugin loaded...
return 0;
}
int play(char *soundfile)
{
DWORD TestSound;
//初始化(启用设备-1表示默认,采样率,效果参数,窗口句柄,0表示使用默认数据初始化DirectSound)
BASS_Init(-1, 44100, 0, 0, 0);
plugin();
//是否从内存中加载,文件路径,起始位置,终止位置,是否循环播放
TestSound = BASS_StreamCreateFile(FALSE, soundfile, 0, 0, 0);
BASS_ChannelPlay(TestSound,true);
while (BASS_ChannelIsActive(TestSound));
BASS_Free();
return 0;
}
int main(int argc,char **argv)
{
play(argv[1]);
return 0;
}
2018年01月20日 10点01分 9
level 13
我的fmp命令行播放器终于可以开始第三版了.这一版bass的基本上可以支持目前市面上所有的音乐格式了,
2018年01月20日 10点01分 10
level 13
在集成包的C:\npMingw64\ConEmu\bin内有fmp3.c
是我做写的一个命令行播放音乐小程序,供bass入门实际参考,主播放函数仅最后一段
2018年02月04日 07点02分 11
level 10
这个专业库不错,就是CPU占用不太理想。前几天很感兴趣的是ape和flac解码,居然解码器很小,
ape官方原代码超肥,看来精简代码有戏。
foorbar据我所知,前期使用的是mpg123源代码,后期使用的是ffmpeg里的音频部分。
2019年06月10日 02点06分 12
1