2008-11-09 6 views
12

Una grabadora de voz no necesita audio Linear PCM sin comprimir. Comprimido AMR haría bien. El marco de iPhone creado para grabar audio es bastante simple, pero los únicos ejemplos que he encontrado para configurar el formato de audio (que provienen de Apple) utilizan LinearPCM. He intentado varias otras combinaciones de valores, pero parece que no puedo hacer que nada funcione.¿Cómo puedo grabar el formato de audio AMR en el iPhone?

¿Alguien tiene algún código que realmente registre AMR?

Editar: El formato AMR es una de las opciones para configurar el tipo de datos, pero las otras opciones (tamaño del paquete, tamaño, etc.) no parecen coincidir, no importa lo que les puse a.

Editar: Esto es lo que tengo para la versión 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; 

Respuesta

13

códec AMR no es compatible con la codificación/grabación en el iPhone, aunque se admite para la reproducción: esta es la razón de ser de la constante kAudioFormatAMR.

Official api dice que los formatos de codificación compatibles son:

  • ALAC (Apple Lossless) ~> kAudioFormatAppleLossless
  • iLBC (Internet baja tasa de bits Codec, para el habla) ~> kAudioFormatiLBC
  • IMA/ADPCM (IMA4) ~> kAudioFormatAppleIMA4
  • PCM lineal ~> kAudioFormatLinearPCM
  • μ-ley ~> kAudioFormatULaw
  • una ley ~> kAudioFormatALaw

Usted puede probar uno de estos formatos o utilizar un codificador AMR de código abierto como goldenmean sugiere.

edición: Actualización de enlace API Oficial

2

supongo formato de códec AMR no es compatible con mi aplicación grabadora de voz iPhone.

Puede ser que uno intente integrar alguna fuente abierta, la implementación del codificador AMR en el marco de la aplicación iPhone de apple e intente hacer que la grabadora de voz almacene el audio en formato AMR codificado. (No sé si eso está permitido por Apple por su NDA/licencia).

-AD

1

Puede grabar audio en un búfer PCM lineal sin comprimir (circular o de anillo), y, en otro hilo, convertir los datos en este tampón, usando su propio AMR (u otro motor de compresión), antes guardando los datos de audio comprimidos en un archivo.

Cuestiones relacionadas