1

10.7.5 以降のオーディオ録音アプリケーションを開発しています。を使用AVCaptureAudioDataOutputしてオーディオをキャプチャし、データは を使用して書き込まれAVAssetWriterInputます。

プロパティは次のように設定さAVAssetWriterInputれます。

AVFormatIDKey : kAudioFormatMPEG4AAC
AVSampleRateKey : この値は、以下のコードを使用してデバイスから取得されます

 AudioStreamBasicDescription streanDesc;
 UInt32 propSize = sizeof(AudioStreamBasicDescription);
 AudioDeviceGetProperty(mInputDevice, 0, YES, kAudioDevicePropertyStreamFormat, &propSize,&streanDesc);

AVNumberOfChannelsKey : これは AudioStreamBasicDescription から取得されます。
AVEncoderBitRateKey : これは 96000 にハードコードされています。

これは、サンプル レート 32khz の USB マイクとサンプル レート 48khz の iSight デバイスを除いて、ほとんどのオーディオ デバイスで正常に機能します。これら 2 つのデバイスを入力オーディオ デバイスとして使用すると、オーディオ データの書き込み中に次のエラーが発生します -

Error Domain=AVFoundationErrorDomain Code=-11821 "Cannot Decode" UserInfo=0x279470 {NSLocalizedFailureReason=The media data could not be decoded. It may be damaged., NSUnderlyingError=0x292370 "The operation couldn’t be completed. (OSStatus error 560226676.)", NSLocalizedDescription=Cannot Decode}".

ただし、USB マイクの場合、AVSampleRateKey44100 にハードコーディングすると、完全に正常に動作しますが、iSight デバイスでは動作しません。

に指定する正しい値は何AVSampleRateKeyですか? 誰でもこの問題を解決するのを手伝ってくれますか?

4

0 に答える 0