aurioTouch2サンプル コードを調査します。しかし、私はすべてをファイルに記録したい。aurioTouch はこの可能性を提供しません。このコードを使用してデータを記録しようとしましFFTBufferManager.cpp
たvoid FFTBufferManager::GrabAudioData(AudioBufferList *inBL)
ExtAudioFileRef cafFile;
AudioStreamBasicDescription cafDesc;
cafDesc.mBitsPerChannel = 16;
cafDesc.mBytesPerFrame = 4;
cafDesc.mBytesPerPacket = 4;
cafDesc.mChannelsPerFrame = 2;
cafDesc.mFormatFlags = 0;
cafDesc.mFormatID = 'ima4';
cafDesc.mFramesPerPacket = 1;
cafDesc.mReserved = 0;
cafDesc.mSampleRate = 44100;
CFStringRef refH;
refH = CFStringCreateWithCString(kCFAllocatorDefault, "/var/mobile/Applications/BD596ECF-A6F2-41EB-B4CE-3A9644B1C26A/Documents/voice2.caff", kCFStringEncodingUTF8);
CFURLRef destinationURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
refH,
kCFURLPOSIXPathStyle,
false);
OSType status = ExtAudioFileCreateWithURL(
destinationURL, // inURL
'caff', // inFileType
&cafDesc, // inStreamDesc
NULL, // inChannelLayout
kAudioFileFlags_EraseFile, // inFlags
&cafFile // outExtAudioFile
); // returns 0xFFFFFFCE
ExtAudioFileWrite(cafFile, mNumberFrames, inBL);
これはうまく機能しますが、私は を使用していますAudioBufferList *inBL
。これはすべてのオーディオ データのごく一部 (約 1 秒) にすぎません。この関数は、マイクからの新しいオーディオ データを分析するために 1 秒ごとに呼び出されます。したがって、ある AudioBufferList から別の AudioBufferList にデータを追加できれば、それは素晴らしいことです。
または、他のアプローチを知っている人かもしれません。