SDL_mixer的用法很简单,它可以帮助你在你使用了SDL的项目中播放音频文件,包括
项目网址是:http://www.libsdl.org/projects/SDL_mixer/
这里有SDL_mixer的API说明,很详细,而且用法很简单,看了代码你就知道了!
http://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_frame.html
编译选项:
g++ -lmingw32 -lSDLmain SDL_mixer.dll -lSDL main.cpp
随手写的一坨代码:
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
int main(int argc, char **argv)
{
/* 初始化SDL */
SDL_Init(SDL_INIT_AUDIO);
/* 在使用SDL_mixer前进行初始化 */
int ret = Mix_Init(MIX_INIT_MP3);
if(ret & MIX_INIT_MP3 != MIX_INIT_MP3){
perror("failed to initialize mp3 module.");
exit(1);
}
/* 设置音频格式,使用44100的cd格式即可 */
if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)==-1) {
fprintf(stderr, "Mix_OpenAudio: %s\n", Mix_GetError());
exit(2);
}
/* 加载一个wav音频文件 */
Mix_Chunk* wav = Mix_LoadWAV("./heal.wav");
if(wav == NULL){
fprintf(stderr, "Mix_LoadWAV: %s\n", Mix_GetError());
exit(1);
}
/* 播放音频文件,第三个参数是循环次数这里设置为0表示播放一次,1表示播放两次,-1表示无穷次
* 第一个参数是音频轨道,轨道数目可以通过Mix_AllocateChannels函数来改变,-1表示随机选择一个空闲的轨道 */
Mix_PlayChannel(-1, wav, 0);
/* 加载一首MP3吧! */
Mix_Music* mp3 = Mix_LoadMUS("./music.mp3");
if(mp3 == NULL){
fprintf(stderr, "Mix_LoadMUS: %s\n", Mix_GetError());
exit(1);
}
/* 播放一次 */
Mix_PlayMusic(mp3, 1);
/* 等待播放结束 */
while(Mix_PlayingMusic())
_sleep(1000);
/* 资源回收处理 */
Mix_CloseAudio();
Mix_Quit();
return 0;
}
先收藏一下,等着用的时候用。
发觉大部分免费的音频库都没有WMA支持。。。
是因为wma不是免费的吧