与很多教程是一样的
第一步初始化:SDL_Init(SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS);
第二步,配置音频参数 SDL_AudioSpec audioSpec;创建设备ID:SDL_OpenAudioDevice(SDL_AUDIO_ALLOW_ANY_CHANGE)
第三步:拿到大于0的ID后,启动设备播放SDL_PauseAudioDevice(audioDeviceID, 0);
第四步:音频数据过来后,如果是push进去的,就直接入队就好SDL_QueueAudio(audioDeviceID,data,size)
入队后,还可以查看当当前有多少数据未播放,auto size = SDL_GetQueuedAudioSize(audioDeviceID);
送数据过快,auto size = SDL_GetQueuedAudioSize(audioDeviceID);这里就会很快累积的很多,因为我们也不知道底层音频缓冲容量有多少,所以不知道什么时候送满了,数据溢出了;如果送数据比较慢,比如上一帧据本帧延迟的时间足以播放完当前缓冲的音频了,那就是静音,根据目前的测试情况看并不会因为数据断流,就停止SDL工作;什么时候接着送数据,还是会继续播放声音;
标签:音频,INIT,audioDeviceID,SDL,播放,size From: https://www.cnblogs.com/8335IT/p/16963575.html