
我已经使用installTapOnBus:bufferSize:format:block:来实现,这个函数在一秒钟内被调用三次.
我想将此函数设置为每秒调用20次.
我在哪里可以设置?
AVAudioSession *audioSession = [AVAudioSession sharedInstance];NSError* error = nil;if (audioSession.isinputAvailable) [audioSession setcategory:AVAudioSessioncategoryPlayAndRecord error:&error];if(error){ return;}[audioSession setActive:YES error:&error];if(error){ retur;}self.engine = [[[AVAudioEngine alloc] init] autorelease];AVAudiomixerNode* mixer = [self.engine mainmixerNode];AVAudioinputNode* input = [self.engine inputNode];[self.engine connect:input to:mixer format:[input inputFormatForBus:0]];// tap ... 1 call in 16537Frames// It does not change even if you change the bufferSize[input installTapOnBus:0 bufferSize:4096 format:[input inputFormatForBus:0] block:^(AVAudioPCMBuffer* buffer,AVAudioTime* when) { for (UInt32 i = 0; i < buffer.audiobufferlist->mNumberBuffers; i++) { float32 *data = buffer.audiobufferlist->mBuffers[i].mData; UInt32 frames = buffer.audiobufferlist->mBuffers[i].mDataByteSize / sizeof(float32); // create waveform ... }}];[self.engine startAndReturnError:&error];if (error) { return;}解决方法 他们说,Apple支持回复否:( 2014年9月) Yes,currently internally we have a fixed tap buffer size (0.375s),
and the clIEnt specifIEd buffer size for the tap is not taking effect.
但有人调整缓冲区大小,并获得40毫秒
https://devforums.apple.com/thread/249510?tstart=0
在ObjC中无法检查它:(
UPD它有效!只是单行:
[input installTapOnBus:0 bufferSize:1024 format:[mixer outputFormatForBus:0] block:^(AVAudioPCMBuffer *buffer,AVAudioTime *when) { buffer.frameLength = 1024; //here 总结 以上是内存溢出为你收集整理的ios – 我想每秒调用20次installTapOnBus:bufferSize:format:block:全部内容,希望文章能够帮你解决ios – 我想每秒调用20次installTapOnBus:bufferSize:format:block:所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)