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不是免费的吧