在C编程中播放音乐有多种方法,以下是几种常见的方法:
方法一:使用VC++中的PlaySound函数
`PlaySound`函数是VC++中用于播放声音的函数,支持多种音频格式。以下是一个简单的示例,播放WAV文件:
```c
include
int main() {
// 播放C盘下的music.wav文件
PlaySound("C:\\sound\\music.wav", NULL, SND_ASYNC | SND_NODEFAULT);
return 0;
}
```
方法二:使用mciSendString函数
`mciSendString`函数支持多种媒体格式,如MP3、WMA、WAV、MID等。以下是一个简单的示例,播放MP3格式的音乐:
```c
include
int main() {
// 初始化图形界面
initgraph(640, 480);
// 打开音乐文件
mciSendString("open music.mp3 alias mymusic", NULL, 0, NULL);
// 输出提示信息
outtextxy(0, 0, "按任意键开始播放");
_getch();
// 播放音乐
mciSendString("play mymusic", NULL, 0, NULL);
// 输出提示信息
outtextxy(0, 0, "按任意键停止播放");
_getch();
// 停止播放并关闭音乐
mciSendString("stop mymusic", NULL, 0, NULL);
mciSendString("close mymusic", NULL, 0, NULL);
// 关闭图形界面
closegraph();
return 0;
}
```
方法三:使用SDL和SDL_mixer库
SDL和SDL_mixer是用于处理音频的跨平台库,支持多种音频格式。以下是一个简单的示例,展示如何使用这些库创建一个基本的音乐播放器:
1. 安装SDL和SDL_mixer库:
在Ubuntu上,可以使用以下命令安装:
```bash
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
```
2. 创建一个新的C文件,例如`music_player.c`,并包含必要的头文件:
```c
include include ``` 3. 初始化SDL和SDL_mixer库: ```c int main(int argc, char *argv[]) { if (SDL_Init(SDL_INIT_AUDIO) < 0) { printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); return 1; } if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 2048) == -1) { printf("Mix_OpenAudio failed: %s\n", Mix_GetError()); SDL_Quit(); return 1; } ``` 4. 加载音频文件并设置音频参数: ```c Mix_Chunk *chunk = Mix_LoadWAV("background.mp3"); if (chunk == NULL) { printf("Failed to load WAV file: %s\n", Mix_GetError()); return 1; } ``` 5. 创建音频流并打开音频设备: ```c SDL_AudioSpec audioSpec; audioSpec.freq = 44100; audioSpec.format = MIX_DEFAULT_FORMAT; audioSpec.channels = 2; audioSpec.samples = 2048; audioSpec.callback = NULL; audioSpec.userdata = NULL; SDL_AudioDeviceID devID = Mix_OpenAudioDevice(44100, MIX_DEFAULT_FORMAT, 2, &audioSpec, 0); if (devID == 0) { printf("Failed to open audio device: %s\n", Mix_GetError()); return 1; } ``` 6. 将音频数据传输到音频设备,使其播放: