13

ボイス レコーダーには、圧縮されていないリニア PCM オーディオは必要ありません。圧縮されAMRていれば問題ありません。オーディオを録音するために構築された iPhone フレームワークは非常にシンプルですが、オーディオ形式 (Apple から提供されたもの) をセットアップするために私が見つけた唯一の例は、LinearPCM を使用しています。他のさまざまな値の組み合わせを試しましたが、何も機能しないようです。

実際に記録するコードを持っている人はいますAMRか?

編集: AMR 形式は、データ型を設定するためのオプションの 1 つですが、他のオプション (パケット サイズ、フレーム サイズなど) は、何を設定しても一致しないようです。

編集:これが私がPCMバージョンのために持っているものです:

/*
 If we want to use AMR instead of PCM:
 AMR Format:
 Sampling Frequency: 8 kHz/13-bit (160 samples for 20 ms frames), filtered to 200-3400 Hz
 eight source codecs :  12.2, 1.2, 7.95, 7.40, 6.70, 5.90, 5.15, 4.75 kbit/s
 generated frame length: 244, 204,  159,  148,  134,  118,  103,   95 bits per frame
 */
format->mFormatID = kAudioFormatLinearPCM;
format->mSampleRate = 8000.0;    //8 kHz
format->mFramesPerPacket = 1;    //1 frame per packet
format->mChannelsPerFrame = 1;    //Mono
format->mBytesPerFrame = 2;        //8/bits per frame (round up)
format->mBytesPerPacket = 2;    //Same as bytes per frame
format->mBitsPerChannel = 16;    //16-bit audio
format->mReserved = 0;            //always 0
format->mFormatFlags = kLinearPCMFormatFlagIsBigEndian |
                       kLinearPCMFormatFlagIsSignedInteger |
                       kLinearPCMFormatFlagIsPacked;
4

4 に答える 4

13

AMR コーデックは、再生ではサポートされていますが、iPhone でのエンコード/録音ではサポートされていません。これが kAudioFormatAMR 定数が存在する理由です。

公式 APIによると、サポートされているエンコード形式は次のとおりです。

  • ALAC (Apple ロスレス) ~> kAudioFormatAppleLossless
  • iLBC (音声用のインターネット低ビットレート コーデック) ~> kAudioFormatiLBC
  • IMA/ADPCM (IMA4) ~> kAudioFormatAppleIMA4
  • リニア PCM ~> kAudioFormatLinearPCM
  • µ-law ~> kAudioFormatULaw
  • a-law ~> kAudioFormatALaw

これらの形式のいずれかを試すか、ゴールデンミーンが提案するオープン ソースの AMR エンコーダーを使用することができます

編集:公式APIリンクを更新

于 2009-03-05T13:10:13.310 に答える
4

olegueret の公式ドキュメントへのリンクを更新するには (なぜ彼らはこのようなものを隠しているのですか?)

http://developer.apple.com/library/ios/#qa/qa2008/qa1615.html

于 2010-09-30T19:03:11.337 に答える
2

私のiPhoneボイスレコーダーアプリは、AMRコーデック形式がサポートされていないと思います。

オープンソースの AMR エンコーダーの実装をリンゴの iPhone アプリケーション フレームワークに統合し、ボイス レコーダーに音声を AMR エンコード形式で保存してみてください。(それが Apple の NDA/ライセンスによって許可されているかどうかはわかりません)。

-広告

于 2008-11-10T00:53:44.623 に答える
1

圧縮されていない Linear PCM バッファー (循環またはリング) にオーディオを録音し、別のスレッドで、圧縮されたオーディオ データをファイルに保存する前に、独自の AMR (またはその他の) 圧縮エンジンを使用して、このバッファー内のデータを変換できます。

于 2012-04-20T18:36:51.723 に答える