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 マイクの場合、AVSampleRateKey
44100 にハードコーディングすると、完全に正常に動作しますが、iSight デバイスでは動作しません。
に指定する正しい値は何AVSampleRateKey
ですか? 誰でもこの問題を解決するのを手伝ってくれますか?