マイク/ラインインオーディオレンダリングコールバックの最後に次のコードを追加しました。ExtAudioFileWriteAsyncのEXC_BAD_ACCESS
しかし、アプリが上EXC_BAD_ACCESSでクラッシュし、次のようにコードの残りの部分がある
err = ExtAudioFileWriteAsync(mOutputAudioFile, inNumberFrames, ioData);
:
ExtAudioFileRef mOutputAudioFile;
AudioFileID mAfid;
NSLog(@"Writing output to file ....");
NSArray *dirPaths;
NSString *docsDir;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSLog(@"docDir = %@", docsDir);
NSString *soundFilePath = [docsDir stringByAppendingPathComponent:@"sound.caf"];
NSURL *inPath = [NSURL fileURLWithPath:soundFilePath];
NSLog(@"Output file path is : %@", inPath);
AudioStreamBasicDescription mStreamFormat;
mStreamFormat.mChannelsPerFrame = 1;
mStreamFormat.mSampleRate = 44100.00;
mStreamFormat.mFormatID = kAudioFormatLinearPCM;
mStreamFormat.mFormatFlags = kAudioFormatFlagIsBigEndian | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
mStreamFormat.mBitsPerChannel = 16;
mStreamFormat.mBytesPerFrame = 2;
mStreamFormat.mFramesPerPacket = 1;
mStreamFormat.mBytesPerPacket = 2;
mStreamFormat.mReserved = 0;
err = AudioFileCreateWithURL((CFURLRef)inPath, kAudioFileCAFType, &mStreamFormat, kAudioFileFlags_EraseFile, &mAfid);
if (err != noErr) {
NSLog(@"ERROR : Audio file could not be created !! %d", (int)err);
}
err = ExtAudioFileWrapAudioFileID(mAfid, true, &mOutputAudioFile);
err = ExtAudioFileSetProperty(mOutputAudioFile, kExtAudioFileProperty_ClientDataFormat, sizeof(AudioStreamBasicDescription), &mStreamFormat);
if (ioData) {
err = ExtAudioFileWriteAsync(mOutputAudioFile, inNumberFrames, ioData);
if (err != noErr) {
NSLog(@"ERROR : Audio file could not be written !! %d", (int)err);
}
}
else {
NSLog(@"No ioData found");
}
NSLog(@"Done writing output to file ....");
私はこれでほとんどすべてを試してみました。誰かが私にそれを解決するのを手伝ってもらえると非常に感謝しています。ありがとう!
UPDATE 1:
私はExtAudioFileWriteの代わりExtAudioFileWriteAsyncを使用する場合は、アプリがクラッシュしますが、ExtAudioFileWriteのエラー-50が返されません。
私はまだ何が起こっているのか分かりません。この点に関する助けは大いに感謝しています。
ありがとうございました。
コンソールからのエラーメッセージ全体は何ですか? – zaph
あなたが欠落している場合は、以前の呼び出しでエラーがないかどうかをチェックします。戻り値を確認すると、必要な情報が得られます。また、次のように定義されています。inNumberFrames、ioData – MByD
@CocoaFuコンソールにメッセージがありません。それは悲しい部分です。 [プロセス6191スレッド0x18203に切り替える] [プロセス6191スレッド0x18203に切り替える] 現在の言語:auto;現在objective-c – Myxtic