[英]SDL2 pcm audio playing too fast
我編寫了一個庫來讀取舊游戲中的無符號 8 位 pcm 音頻,並使用以下代碼將原始數據填充到 Mix_Chunk 中:
Mix_Chunk sfx;
sfx.allocated = 1;
sfx.abuf = (Uint8*)data;
sfx.alen = length;
sfx.volume = 32;
我知道采樣率為 10989HZ,但是當我使用Mix_OpenAudio(10989, AUDIO_U8, 2, 2048
設置采樣率時,它播放的聲音太快了,是我設置的采樣率錯誤還是只是 SDL2 不喜歡 PCM?
如果我將它轉儲到一個文件中並用 Audacity 打開它,它就可以正常播放
解決了這個問題,在你調用 Mix_OpenAudio 之前運行這個:
SDL_AudioSpec wavSpec;
SDL_memset(&wavSpec, 0, sizeof(wavSpec)); /* or SDL_zero(want) */
wavSpec.callback = audioCallback;
wavSpec.userdata = nullptr;
wavSpec.format = AUDIO_S16;
wavSpec.channels = 2;
wavSpec.samples = 2048;
if (SDL_OpenAudio(&wavSpec, NULL) < 0)
{
fprintf(stderr, "Could not open audio: %s\n", SDL_GetError());
}
pcm 音頻現在可以正確播放
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.