2013-08-13 2 views
0

동시에 (동시에) 재생할 수있는 노래가 필요합니다. 내 코드 :노래를 동시에 재생 Android FMOD

#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

코드에 아무런 이상이 보이지 않습니다. 9 개의 오디오 스트림을 만들고 재생하는 것 같습니다. 내 관심사는 Android (모바일) 기기에서 9 스트림을 재생할 때의 CPU 비용입니다. MP3와 같은 복잡한 압축 형식을 사용하고 있다면 아마도 CPU를 포화 상태로 만들 것입니다. System :: getCPUUsage()를 사용하여이를 확인할 수 있습니다. '전체'CPU 값을 살펴보십시오. 100 % 가깝거나 100 % 가까이입니까? 그렇다면 문제가 될 것입니다.

해결 방법은 동시에 재생되는 채널을 적게 선택하거나 ADPCM과 같이 CPU 집중 형 압축 형식을 적게 선택하는 것입니다.

+0

고마워요, 매튜! Galaxy S4에서 응용 프로그램을 실행하고 오디오 재생 속도가 훨씬 빠르지 만 간헐적으로 재생되는 시간입니다. – voha