// SDL_Mixer.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include "SDL/include/SDL.h"
#include "SDL_mixer/include/SDL_mixer.h"
#pragma comment(lib, "sdl/lib/x86/SDL2.lib")
#pragma comment(lib, "sdl_mixer/lib/x86/SDL2_mixer.lib")
int _tmain(int argc, _TCHAR* argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
/*
對于那些使用OGG, MOD或者其他非WAV聲音格式的人,請使用Mix_Init()來初始化解碼器,并使用Mix_Quit()來關閉解碼器。因為這裡我們僅僅使用了WAV檔案,是以我們不必為了用不到的東西來添加更多代碼。
flags:bitwise OR'd set of sample/music formats to support by loading a library now. The values you may OR together to pass in are:
MIX_INIT_FLAC
MIX_INIT_MOD
MIX_INIT_MP3
MIX_INIT_OGG
*/
Mix_Init(MIX_INIT_OGG);
/*
該函數的第一個參數是我們使用的聲音頻率,在本課中,它被設為22050,這也是推薦設定的值。第二個參數是聲音格式,我們使用了預設的格式。第三個參數是我們計劃使用的頻道數量。
我們将它設為2來獲得立體聲,如果設為1,将隻有單聲道聲音。最後一個參數是樣本大小,這裡被設為4096。
frequency:Output sampling frequency in samples per second(Hz). you might use MIX_DEFAULT_FREQUENCY(22050) since that is a good value for most games.
format:Output sample format.
AUDIO_U8: Unsigned 8 - bit samples
AUDIO_S8:Signed 8 - bit samples
AUDIO_U16LSB:Unsigned 16 - bit samples, in little - endian byte order
AUDIO_S16LSB:Signed 16 - bit samples, in little - endian byte order
AUDIO_U16MSB:Unsigned 16 - bit samples, in big - endian byte order
AUDIO_S16MSB:Signed 16 - bit samples, in big - endian byte order
AUDIO_U16:same as AUDIO_U16LSB(for backwards compatability probably)
AUDIO_S16:same as AUDIO_S16LSB(for backwards compatability probably)
AUDIO_U16SYS:Unsigned 16 - bit samples, in system byte order
AUDIO_S16SYS;Signed 16 - bit samples, in system byte order
MIX_DEFAULT_FORMAT is the same as AUDIO_S16SYS.
channels:Number of sound channels in output.Set to 2 for stereo, 1 for mono.This has nothing to do with mixing channels.
*/
Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096);//在初始化函數中,我們調用Mix_OpenAudio() 來初始化SDL_mixer中的聲音函數。
//要加載音樂,我們使用Mix_LoadMUS()。這個函數接受一個音樂檔案的檔案名并傳回其中的音樂資料。如果出錯,它會傳回NULL。
//要加載聲效,我們使用Mix_LoadWAV()。它加載了傳入的檔案名所對應的聲音檔案,并傳回了一個Mix_Chunk,如果出錯了,則傳回NULL。
Mix_Music *music = Mix_LoadMUS("F:\\vip.wav");
//函數Mix_PlayMusic()的第一個參數是我們将要播放的音樂。第二個參數是音樂将要循環的次數。由于它被設為了-1,音樂将在手動停止前不停地循環下去。
//如果播放音樂出現問題,該函數會傳回 - 1。
Mix_PlayMusic(music, 1);
SDL_Delay(5000);//不延遲不會播放
Mix_CloseAudio();
Mix_FreeMusic(music);
Mix_Quit();
SDL_Quit();
return 0;
}
demo:http://download.csdn.net/detail/sz76211822/9878701