【发布时间】:2019-02-28 09:56:29
【问题描述】:
我很难用 C 语言播放声音。
这里是我的功能:
void playSound(char* path)
{
SDL_AudioSpec wavSpec;
Uint32 wavLength;
Uint8 *wavBuffer;
SDL_LoadWAV(path, &wavSpec, &wavBuffer, &wavLength);
SDL_AudioDeviceID deviceId = SDL_OpenAudioDevice(NULL, 0, &wavSpec, NULL, 0);
SDL_QueueAudio(deviceId, wavBuffer, wavLength);
SDL_PauseAudioDevice(deviceId, 0);
if (SDL_GetQueuedAudioSize(deviceId) == 0) {
SDL_CloseAudioDevice(deviceId);
SDL_FreeWAV(wavBuffer);
}
}
声音会播放几次,然后就不会再播放了。
我检查 SDL_GetQueuedAudioSize,当他达到 0 时,不再播放声音。
我认为它关于缓冲区何时为空.. 不知道我误解了一些观点。
我不允许使用其他库。
【问题讨论】: