我有很多简短的音频文件(mp3)我想在c ++中使用FMOD 在我的程序中有类似的东西:
FMOD::System *fmodSystem;
FMOD::Channel *channel;
FMOD::System_Create(&fmodSystem);
fmodSystem->init(100, FMOD_INIT_NORMAL, 0);
while(true)
{
FMOD::Sound *sound;
fmodSystem->createSound("random filename.mp3", FMOD_DEFAULT, FMOD_DEFAULT, &sound);
fmodSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
fmodSystem->update();
Sleep(100);
}
对于每个新声音,我看到可用内存减少了。这似乎很正常,因为我永远不会释放FMOD:声音对象。 我无法释放这些对象,因为fmodSystem-> playSound方法是异步的。
那么如何解决这个内存问题呢?
答案 0 :(得分:0)
我还没弄明白,如何在完成播放后释放声音,但我开始将所有声音缓存在FMOD::Sound
数组中。
FMOD::Sound *sounds[84];
现在我的应用程序消耗大约100 MB的RAM,但没有增加。
答案 1 :(得分:0)
FMOD::Sound *sound = 0;
bool Playing = false;
while(true)
{
if(channel)channel->isPlaying(&Playing);
if(!Playing)
{
if(sound)sound->release();
fmodSystem->createSound("random filename.mp3", FMOD_DEFAULT, FMOD_DEFAULT, &sound);
fmodSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
}
fmodSystem->update();
Sleep(100);
}