Android 如何利用dsp对fmod的影响快速保存文件?
我正在android上使用v1.10低级api。我有一个问题是保存文件太慢。 当我保存一个持续时间为20秒的mp3/wav文件时,它花费了20秒以上 这是我的代码,请帮我找到问题:Android 如何利用dsp对fmod的影响快速保存文件?,android,audio,fmod,Android,Audio,Fmod,我正在android上使用v1.10低级api。我有一个问题是保存文件太慢。 当我保存一个持续时间为20秒的mp3/wav文件时,它花费了20秒以上 这是我的代码,请帮我找到问题: //the file size is always 0 when use FMOD_OUTPUTTYPE_WAVWRITER_NRT and while{update;} result = system->setOutput(FMOD_OUTPUTTYPE_WAVWRITER); ERRCHECK(resu
//the file size is always 0 when use FMOD_OUTPUTTYPE_WAVWRITER_NRT and while{update;}
result = system->setOutput(FMOD_OUTPUTTYPE_WAVWRITER);
ERRCHECK(result);
result = system->init(16, FMOD_INIT_NORMAL, (void *) outpath);
ERRCHECK(result);
result = system->getMasterChannelGroup(&mastergroup);
ERRCHECK(result);
result = system->createSound(inputpath, FMOD_DEFAULT, NULL, &sound);
ERRCHECK(result);
result = system->playSound(sound, 0, false, &channel);
ERRCHECK(result);
system->createDSPByType(FMOD_DSP_TYPE_TREMOLO, &dsp);
channel->addDSP(0, dsp);
bool playing = true;
while(playing){
result = channel->isPlaying(&playing);
ERRCHECK(result);
sleep(1);
}
您可能需要对代码进行概要分析,以了解哪些方法调用需要花多少时间才能知道需要做什么optimize@VladyslavMatviienko谢谢你的评论。由于fmod没有打开它的源代码,我只调用playapi,并通过while(channel->isplay()){sleep(1);}等待它完成。我不知道为什么这么慢,哪种方法花了这么多时间。我只是胡乱猜测:试着增加睡眠时间。大概到100左右ms@VladyslavMatviienko感谢您的建议,我尝试了另一个api参数(FMOD_OUTPUTTYPE_WAVWRITER_NRT),并按照您的建议减少了睡眠时间,现在时间成本降低了!