2008-11-09 14 views
12

Ein Voice Rekorder benötigt kein unkomprimiertes lineares PCM-Audio. Komprimiert AMR würde gut tun. Das iPhone-Framework, das für die Aufnahme von Audio erstellt wurde, ist einfach genug, aber die einzigen Beispiele, die ich für die Einrichtung des Audio-Formats gefunden habe (die von Apple stammen), verwenden LinearPCM. Ich habe verschiedene andere Kombinationen von Werten ausprobiert, aber ich kann scheinbar nichts zum Laufen bringen.Wie kann ich das AMR-Audioformat auf dem iPhone aufnehmen?

Hat jemand einen Code, der tatsächlich AMR aufzeichnet?

Edit: Das AMR-Format ist eine der Optionen für den Datentyp festlegen, aber die anderen Optionen (Paketgröße, Bildgröße etc.) scheint nicht egal zusammenpassen, was ich sie gesetzt zu.

Edit: Hier ist, was ich für die PCM-Version haben:

/* 
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; 

Antwort

13

AMR-Codec wird nicht für die Codierung/Aufnahme auf dem iPhone unterstützt, wenn auch für die Wiedergabe unterstützt wird: Dies ist der Grund dafür ist die kAudioFormatAMR Konstante existiert.

Official api sagt, dass unterstützten Codierungsformate sind:

  • ALAC (Apple Lossless) ~> kAudioFormatAppleLossless
  • iLBC (Internet Low Bitrate Codec, für Sprache) ~> kAudioFormatiLBC
  • IMA/ADPCM (IMA4) ~> kAudioFormatAppleIMA4
  • Linear-PCM- ~> kAudioFormatLinearPCM
  • μ-law ~> kAudioFormatULaw
  • a-law ~> kAudioFormatALaw

Sie können eines dieser Formate versuchen oder einen Open-Source-AMR-Encoder verwenden als goldenmean schlägt vor.

bearbeiten: Aktualisiert Offizielle api Link

2

Ich denke, AMR-Codec-Format mein iPhone Diktiergerät App nicht unterstützt wird.

Vielleicht kann man versuchen, einige Open-Source-Implementierungen von AMR-Encodern in das iPhone-Anwendungsframework der Äpfel zu integrieren und zu versuchen, das Diktiergerät das Audio im AMR-kodierten Format speichern zu lassen. (Ich weiß nicht, ob das von Apple durch ihre NDA/Lizenz erlaubt ist).

-AD

1

Sie können zu einem unkomprimierten Linear PCM Puffer Audioaufzeichnung (kreis- oder Ring), und, in einem anderen Thread, wandeln Daten in diesem Puffer, eigene AMR (oder andere) Komprimierungsmaschine verwendet wird, bevor Speichern der komprimierten Audiodaten in einer Datei.

Verwandte Themen