使用SDL2_mixer库播放MP3音乐
运行环境:Ubuntu:16.04
开发环境准备
- 安装libsdl2-mixer-dev
~$ sudo apt install libsdl2-mixer-dev
需要包含的头文件
#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>
需要链接的库文件
set(CMAKE_CXX_FLAGS "-pthread ${CMAKE_CXX_FLAGS}")
target_link_libraries(app
SDL2
SDL2_mixer
)
流程
-> Mix_Init
-> Mix_OpenAudio
-> Mix_LoadMUS / Mix_LoadWAV
-> Mix_PlayMusic / Mix_FadeInMusic / Mix_PlayChanel / Mix_FadeInChannel
-> Others User Operations
-> Mix_HaltMusic / Mix_FadeOutMusic / Mix_HaltChannel / Mix_FaleOutChannel
-> Mix_CloseAudio
-> Mix_Quit
钩子函数
- Mix_HookMusic: 用于设置音乐播放过程中的回调
- Mix_HookMusicFinished: 用于设置音乐播放结束时的回调
示例代码(C++11)
#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>
#include <oyoung/defer.hpp>
#include <sspdlog/sspdlog.h>
#include <csignal>
#include <functional>
static std::function<void()> on_signal;
void signal_TERM_handle(int) {
if(on_signal) on_signal();
}