Domanda

Un registratore vocale non necessita di audio Linear PCM non compresso. AMR compresso andrebbe bene. Il framework iPhone creato per la registrazione dell'audio è abbastanza semplice, ma gli unici esempi che ho trovato per impostare il formato audio (che provengono da Apple) usano LinearPCM. Ho provato varie altre combinazioni di valori, ma non riesco a far funzionare nulla.

Qualcuno ha qualche codice che registra effettivamente AMR ?

Modifica Il formato AMR è una delle opzioni per l'impostazione del tipo di dati, ma le altre opzioni (dimensione del pacchetto, dimensione del frame, ecc.) Non sembrano corrispondere indipendentemente da ciò che le ho impostate.

Modifica: Ecco cosa ho per la versione 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;
È stato utile?

Soluzione

Il codec AMR NON è supportato per la codifica / registrazione su iPhone, sebbene sia supportato per la riproduzione: questo è il motivo per cui esiste la costante kAudioFormatAMR.

API ufficiali afferma che i formati di codifica supportati sono :

  • ALAC (Apple Lossless) ~ > kAudioFormatAppleLossless
  • iLBC (codec Internet Low Bitrate, per la voce) ~ > kAudioFormatiLBC
  • IMA / ADPCM (IMA4) ~ > kAudioFormatAppleIMA4
  • PCM lineare ~ > kAudioFormatLinearPCM
  • & # 181; -law ~ > kAudioFormatULaw
  • a-law ~ > kAudioFormatALaw

Puoi provare uno di questi formati o utilizzare un codificatore AMR open source come suggerisce il goldenmean .

modifica : collegamento API ufficiale aggiornato

Altri suggerimenti

Per aggiornare il link di olegueret alla documentazione ufficiale (perché nascondono queste cose?)

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

Suppongo che il formato del codec AMR non sia supportato dalla mia app per registratore vocale per iPhone.

Forse si può provare a integrare un po 'di open source, l'implementazione dell'encoder AMR nel framework delle applicazioni per iPhone di Apple e provare a fare in modo che il registratore vocale memorizzi l'audio in formato codificato AMR. (Non so se questo è consentito da Apple dalla loro NDA / licenza).

-AD

È possibile registrare l'audio in un buffer PCM lineare non compresso (circolare o ad anello) e, in un altro thread, convertire i dati in questo buffer, utilizzando il proprio motore di compressione AMR (o altro), prima di salvare i dati audio compressi in un file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top