Android Fmod:读取音频文件,添加效果,然后将结果保存到文件中

Android Fmod:读取音频文件,添加效果,然后将结果保存到文件中,android,audio,save,effects,fmod,Android,Audio,Save,Effects,Fmod,我使用FMOD播放文件中的一些声音,并添加了一些效果。我想预览添加到其中的效果,并将满意的结果保存到磁盘。 我尝试过使用SetOutput和Init,然后使用createSound和playSound 但我听不到声音,保存在磁盘中的文件似乎有误 如果我不使用第四个参数0的setOutput和init系统,我可以听到声音 附加我的代码: result = FMOD_System_SetOutput(gSystem,FMOD_OUTPUTTYPE_WAVWRITER); result = FMOD_

我使用FMOD播放文件中的一些声音,并添加了一些效果。我想预览添加到其中的效果,并将满意的结果保存到磁盘。 我尝试过使用SetOutput和Init,然后使用createSound和playSound 但我听不到声音,保存在磁盘中的文件似乎有误

如果我不使用第四个参数0的setOutput和init系统,我可以听到声音

附加我的代码:

result = FMOD_System_SetOutput(gSystem,FMOD_OUTPUTTYPE_WAVWRITER);
result = FMOD_System_Init(gSystem, 32,FMOD_INIT_NORMAL,"/sdcard/wav.wav");
result = FMOD_System_CreateSound(gSystem, filename, FMOD_SOFTWARE | FMOD_LOOP_NORMAL, 0, &gSound);
result = FMOD_System_PlaySound(gSystem, FMOD_CHANNEL_FREE, gSound, 0, &gChannel);
希望你能帮助我


谢谢

如果您将setOutput与WavWriter一起使用,音频将进入文件而不是扬声器。如果这不是你正在寻找的,也许你应该尝试用一个定制的DSP捕捉音频


基本思想是按照dsp_自定义示例,制作一个用户创建的dsp,然后在dsp读回调中将数据写入磁盘。您还必须将进入DSP的数据复制到输出缓冲区(direct memcpy)中,以允许音频通过扬声器。您可以将DSP置于您想要捕获音频的DSP网络中的任何位置。如果您只对最终的混音感兴趣,请使用System::addDSP。

我尝试过这种方法,使用fwrite将缓冲区写入文件,但SD卡中的文件大小为零。我已经尝试过在imac中使用c编写文件,没有问题!那么,如何在ndk中使用fwrite在android文件系统中编写文件呢?我正在尝试做类似的事情——我同时播放多个频道,并希望用fx捕捉它们的组合音频。我已经添加了一个DSP,我知道我需要在DSP读取回调中写入wav数据,但是我遇到了问题,因为writeWavHeader需要一个声音对象——我正在尝试从由几个不同声音组成的通道组捕获音频。在尝试将其写入wav文件之前,是否需要从dsp中的通道组创建声音?有没有关于如何在FMOD中处理DSP内数据的示例?