我使用Cocos2d。这个CocosDention没有我需要的属性。 也许有人知道在ios的当前阶段使用记录和保存所有声音的方式。如何使用DJ应用程序 - 他们将音乐保存在不同的部分并将它们放在一起。
例如,在游戏中播放背景音乐。当球员跳跃时,cocosdenchion可以发出跳跃声。我可以实时创建新的音轨组合背景音乐和其他音乐效果并保存吗?
我如何理解AVAudioRecorder仅用于录制麦克风设备。 我能用什么 - AudioToolbox? OpenAL的? CoreAudio的?其他框架?
在我认为使用FMOD之前,但是有500美元的许可证,我不确定我的项目会给我一些比赛资金。在此我找到免费的方法或框架。 感谢。
答案 0 :(得分:1)
我找到了一些解决方案。我使用BASS iOS library。 一减 - 这是付出的。第二个减去 - 它是用C ++编写的。 而不是iOS的一些例子。但在论坛上有很好的帮助。
//BASS initialisation. use BASS_free for free resources
BASS_Init(-1,44100,0,NULL,NULL);
//create mixer
BASS_GetInfo(&info); // get output device info. needet to get freq
mixer=BASS_Mixer_StreamCreate(info.freq, 2, 0); // create a stereo mixer with the same sample rate
NSString *shortSound = [[NSBundle mainBundle] pathForResource:@"piano2" ofType:@"wav"];
//create channel
chan2 = BASS_StreamCreateFile(FALSE, [shortSound cStringUsingEncoding:NSUTF8StringEncoding], 0, 0, BASS_STREAM_DECODE);
//create channel from file use absolute path url
NSString *soundFileName = [[NSBundle mainBundle] pathForResource:@"ff13" ofType:@"mp3"];
chan = BASS_StreamCreateFile(FALSE, [soundFileName cStringUsingEncoding:NSUTF8StringEncoding], 0, 0, BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT|BASS_SAMPLE_LOOP);
//add channel into mixer
BASS_Mixer_StreamAddChannel(mixer, chan, 0);
//point the dirrectory and file name for our new file saved mixer data
NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filename = [documentDir stringByAppendingString:@"/file.mp3"];
//start encode mixer to file when view did load. With parameters for encode.
BASS_Encode_StartCAFile(mixer, 'm4af', 'alac', 0, 0, [filename cStringUsingEncoding:NSUTF8StringEncoding]);
//mixer add any delay for play added channel. Fix it using this option
BASS_ChannelSetAttribute(mixer, BASS_ATTRIB_NOBUFFER, 1);
BASS_ChannelPlay(mixer, 0); // start mixer
此处使用混音器录制所有声音和麦克风语音。