2012-04-13 12 views
0

生のバッファデータをオーディオファイルにキャプチャしようとしています。ファイルにオーディオをキャプチャするExtAudioFileWrite

dstFormat.mSampleRate = 224000; 
dstFormat.mFormatID = kAudioFormatMPEG4AAC; 
dstFormat.mChannelsPerFrame = 1; 
dstFormat.mBitsPerChannel = 16; 
dstFormat.mBytesPerPacket = dstFormat.mBytesPerFrame = 2 * dstFormat.mChannelsPerFrame; 
dstFormat.mFramesPerPacket = 1; 
dstFormat.mFormatFlags = kLinearPCMFormatFlagIsPacked | kLinearPCMFormatFlagIsSignedInteger;  
OSStatus result = ExtAudioFileCreateWithURL((CFURLRef) inURL, 
              kAudioFileM4AType, 
              &dstFormat, 
              0, 
              kAudioFileFlags_EraseFile, 
              &audioFileRef) 

私は、次のパラメータを持つ関数にフックしています:それはこのように内部 AudioUnit inUnit, AudioUnitRenderActionFlags * ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inOutputBusNumber, UInt32 inNumberFrames, AudioBufferList * ioData

私は、ファイルにデータを書き込むしようとしていますが、悪いパラメータ-50エラーが発生します。 結果= ExtAudioFileWrite(audioFileRef、inNumberFrames、ioData);

私は自分でioDataパラメータを交換する場合:

AudioBufferList *bufferList = (AudioBufferList*) malloc(sizeof(AudioBufferList)); 
    bufferList->mNumberBuffers = 1;// ioData->mNumberBuffers; 
    for(UInt32 i=0;i<bufferList->mNumberBuffers;i++) 
    { 
     bufferList->mBuffers[i].mNumberChannels = 1; 
     bufferList->mBuffers[i].mDataByteSize = ioData->mBuffers[i].mDataByteSize; //ioData->mBuffers[i].mDataByteSize; // (1024*2) * dstFormat.mBytesPerFrame; 
     bufferList->mBuffers[i].mData = ioData->mBuffers[i].mData; 
    } 

を..私は、第一、第二のために260メガバイトの周りのファイルを取得します。ここで何が間違っていますか?

答えて

1

私はiPhoneがこれらのパラメータを使ってオーディオファイルを作成することにも驚いていますが、これはシミュレータでしかテストしていないため、ハードウェアではテストしていないからです。とにかく、あなたのストリーム形式はここで問題です。

生データをキャプチャする場合、フォーマットIDをm4aに設定するのはなぜですか?リニアPCMを使用するようにフォーマットフラグを設定するのはなぜですか?私は224kHzのサンプルレートにどのように到着したのかもよく分かりませんが、問題に遭遇し、出力ファイルのサイズがなぜそれほど大きいのかを少なくとも部分的に説明します。

ちょっと複雑なので、ストリーム記述構造のいくつかの例を少し調べてみることをお勧めします。この質問はまた、あなたが正しい軌道に乗って得るのを助けるかもしれない:私はちょうど数日前にAAC形式に書き込む方法を考え出し

CoreAudio - kAudioFileUnsupportedDataFormatError

+0

ありがとう、私はすでにprobを修正しましたが、あなたは私に良い答えをくれました。 –

+0

あなたはそれがうまくいっていると聞いてうれしいです。問題は何だったの?作業コードを投稿する必要があります。 :) –

+0

http://stackoverflow.com/questions/3815231/recording-mono-on-iphone-in-ima4-formatこの投稿は私をたくさん助けました –

関連する問題