我需要同时播放一些歌曲(同时播放)。我的代码是:
#define SIZE 9
FMOD_SYSTEM *gSystem = 0;
FMOD_CHANNEL *gChannel[SIZE];
FMOD_SOUND *gSound[SIZE];
const char *tracks[SIZE];
FMOD_RESULT result = FMOD_OK;
result = FMOD_System_Create(&gSystem);
result = FMOD_System_Init(gSystem, 1024, FMOD_INIT_NORMAL, 0);
FMOD_MODE soundParams = FMOD_SOFTWARE | FMOD_2D | FMOD_LOOP_OFF | FMOD_CREATESTREAM
| FMOD_ACCURATETIME;
for (int i = 0; i < tracksSize; i++)
result = FMOD_System_CreateSound(gSystem, tracks[i], soundParams, 0, &gSound[i]);
for (int i=0; i<tracksSize; i++) {
result = FMOD_System_PlaySound(gSystem, FMOD_CHANNEL_FREE, gSound[i], true, &gChannel[i]);
FMOD_Channel_SetMode(gChannel[i], FMOD_LOOP_NORMAL);
FMOD_Channel_SetLoopCount(gChannel[i], -1);
FMOD_Channel_SetPaused(gChannel[i], false);
}
但歌曲间歇性地播放。请帮帮我。
答案 0 :(得分:0)
我没有看到您的代码出现任何问题,看来您正在创建和播放9个音频流。我担心的是在Android(移动)设备上播放9个流的CPU成本。如果您使用的是复杂的压缩格式,如MP3,则可能会使CPU饱和。您可以使用System :: getCPUUsage()来检查这一点,看一下'总'CPU值,它是否超过或接近100%?如果是这样,那将是你的问题。
解决方案是选择较少的通道同时播放,或选择较少CPU密集的压缩格式,如ADPCM。