Question

Un enregistreur vocal n'a pas besoin d'audio PCM linéaire non compressé. AMR compressé ferait l'affaire. Le framework iPhone conçu pour l'enregistrement audio est assez simple, mais les seuls exemples que j'ai trouvés pour configurer le format audio (fourni par Apple) utilisent LinearPCM. J'ai essayé diverses autres combinaisons de valeurs, mais rien ne semble fonctionner.

Quelqu'un a-t-il un code qui enregistre réellement AMR ?

Modifier: Le format AMR est l’une des options permettant de définir le type de données, mais les autres options (taille du paquet, taille de la trame, etc.) ne semblent pas correspondre, quelle que soit la configuration choisie.

Modifier: Voici ce que j'ai pour la version 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;
Était-ce utile?

La solution

Le codec AMR n'est PAS pris en charge pour le codage / l'enregistrement sur l'iPhone, bien qu'il le soit pour la lecture: c'est la raison pour laquelle la constante kAudioFormatAMR existe.

Une api officielle indique que les formats de codage pris en charge sont :

  • ALAC (Apple Lossless) ~ > kAudioFormatAppleLossless
  • iLBC (codec Internet à faible débit, pour la parole) ~ > kAudioFormatiLBC
  • IMA / ADPCM (IMA4) ~ > kAudioFormatAppleIMA4
  • PCM linéaire ~ > kAudioFormatLinearPCM
  • loi µ ~ > kAudioFormatULaw
  • a-law ~ > kAudioFormatALaw

Vous pouvez essayer l’un de ces formats ou utiliser un encodeur AMR open source comme goldenmean suggère.

modifier : lien de l'API officiel mis à jour

Autres conseils

Pour mettre à jour le lien d'olegueret vers la documentation officielle (pourquoi cachent-ils ce genre de choses?)

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

Je suppose que le format de codec AMR n'est pas pris en charge par mon application d'enregistreur vocal iPhone.

On peut peut-être essayer d’intégrer un encodeur AMR à code source ouvert dans le cadre d’application pour iPhone des pommes et essayer de faire en sorte que l’enregistreur vocal stocke le son au format AMR. (Je ne sais pas si c'est autorisé par apple par leur NDA / licence).

-AD

Vous pouvez enregistrer de l'audio dans un tampon PCM linéaire non compressé (circulaire ou en anneau) et, dans un autre thread, convertir des données dans ce tampon, à l'aide de votre propre moteur de compression AMR (ou autre), avant de sauvegarder les données audio compressées dans un fichier. fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top