C语言怎么播放一段数组
时间: 2023-10-29 16:09:48 浏览: 33
在C语言中,要播放一段数组通常需要将其转换为音频文件格式,然后使用相应的音频播放库来播放。下面是使用SDL2库播放PCM格式音频数组的示例代码:
```c
#include <SDL2/SDL.h>
#define BUFFER_SIZE 4096
int main() {
int frequency = 44100;
Uint16 format = AUDIO_S16SYS;
int channels = 2;
int samples = BUFFER_SIZE / 4;
SDL_Init(SDL_INIT_AUDIO);
SDL_AudioSpec wanted_spec, obtained_spec;
wanted_spec.freq = frequency;
wanted_spec.format = format;
wanted_spec.channels = channels;
wanted_spec.samples = samples;
wanted_spec.callback = NULL;
SDL_AudioDeviceID dev = SDL_OpenAudioDevice(NULL, 0, &wanted_spec, &obtained_spec, 0);
SDL_QueueAudio(dev, audio_data_array, BUFFER_SIZE);
SDL_PauseAudioDevice(dev, 0);
SDL_Delay(5000);
SDL_CloseAudioDevice(dev);
SDL_Quit();
return 0;
}
```
其中,`audio_data_array`是待播放的PCM音频数据数组,`BUFFER_SIZE`是缓冲区大小。这段代码使用SDL2库打开音频设备,并将音频数据放入设备的播放队列中。最后使用`SDL_Delay()`函数暂停程序5秒钟,等待音频播放完毕后再关闭音频设备和SDL库。
需要注意的是,这段代码中的音频格式是16位有符号整数,双声道,采样率为44100Hz。如果待播放的音频数据格式不同,需要修改代码中的相应参数。