2011-08-07 3 views
1

FMOD를 사용하여 파일에서 일부 소리를 재생하고 일부 효과를 추가합니다. 내가 추가 한 효과를 미리보고 만족스러운 결과를 디스크에 저장하고 싶습니다. SetOutput 및 Init을 사용하고 나서 createSound, playSound 을 시도했지만 소리를들을 수 없어 디스크에 저장된 파일이 잘못되었습니다!Fmod : 오디오 파일을 읽고 효과를 추가 한 다음 결과 int를 파일에 저장합니다.

제 4 매개 변수 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); 

당신이 날 도울 수 있기를 바랍니다!

는 WavWriter와의 setOutput를 사용하는 경우

답변

0

오디오 대신 스피커의 파일로 이동합니다 감사합니다. 이것이 당신이 찾고있는 것이 아니면 아마도 당신은 커스텀 DSP로 오디오를 포착 해보십시오.

기본적인 아이디어는 dsp_custom 예제를 따르고, 사용자가 만든 DSP를 만든 다음 DSP 읽기 콜백에서 데이터를 디스크에 쓰는 것입니다. 또한 오디오를 스피커로 통과 시키려면 DSP로 들어오는 데이터를 출력 버퍼 (직접 memcpy)에 복사해야합니다. 오디오를 포착 할 DSP 네트워크 어디에서나 DSP를 배치 할 수 있습니다. 최종 믹스에만 관심이 있다면 System :: addDSP를 사용하면됩니다.

+0

필자는 fwrite를 사용하여 와 함께 파일에 버퍼를 쓰려고했지만 sdcard의 파일 크기는 0입니다. 내가 사용하는 파일을 작성하려고 노력했습니다. 그리고 아무 문제가 없습니다! 그래서 어떻게 ndk에서 fwrite를 사용하여 안드로이드 파일 시스템에 파일을 쓸 수 있습니까 ?? – mingzhu

+0

나는 비슷한 것을하려고합니다. 저는 여러 개의 채널을 동시에 연주하고 있는데 fx로 결합 된 오디오를 포착하고 싶습니다. DSP를 추가하고 DSP 읽기 콜백에 wav 데이터를 써야한다는 것을 이해하고 있지만 writeWavHeader가 Sound 객체를 기대하기 때문에 문제가 있습니다. 채널 그룹에서 오디오를 캡처하려고합니다. 몇 가지 다른 소리들. wsp 파일로 작성하기 전에 dsp에서 채널 그룹의 사운드를 만들어야합니까? FMOD에서 DSP 내의 데이터를 처리하는 방법에 대한 예가 있습니까? – crgt