2009-02-20 16 views
14

Estoy haciendo una aplicación de grabación de iPhone que necesita enviar el archivo de sonido como .wav a un servidor externo.Grabación de sonido como WAV en iphone

A partir del ejemplo SPEAKHERE, soy capaz de grabar sonido como un archivo, pero sólo como .caf

¿alguien sabe cómo grabar como un archivo WAV en su lugar? ¿O cómo convertir de .caf a .wav en el iPhone? (La conversión debe ocurrir en el teléfono)

EDIT:

Me pregunto si se puede hacer algo con el uso de kAudioFileWAVEType en lugar de kAudioFileCAFType en AudioFileCreateWithURL

Respuesta

19

Sí, la clave es kAudioFileWAVEType

AudioFileCreateWithURL (
      audioFileURL, 
      kAudioFileWAVEType, 
      &audioFormat, 
      kAudioFileFlags_EraseFile, 
      &audioFileID 
     ); 

El cambio a de onda de la CAF en el ejemplo SPEAKHERE hace que el grabación para ser como wav. También edito lo mismo en la clase de reproducción, y cambié el nombre de archivo para ser Recording.wav

+0

Sea cuidadoso. AVAudioFileTypeKey con kAudioFileWAVEType solo está disponible en iOS 11.0 o posterior – CFIFok

2

Para consultar todas libsndfile. Es una biblioteca C bien utilizada (incluida por Audacity) para trabajar con muchos formatos de archivo. Admite la lectura y escritura de una variedad de formatos CAF y WAV.

El CAF File structure y WAV format son bastante similares. Si lo peor viene a peor, la conversión no debería ser demasiado difícil.

Se trataría de tomar el fragmento de datos de audio, y la copia como es en el archivo WAV, y el uso de la información en la descripción de audio Chunk añadir un equivalente FMT subfragmento para el archivo WAV. Es una copia de bytes bastante simple.

Sin embargo, tenga en cuenta (como Eric señaló) hay problemas de licencias, consulte: Can the Libsndfile library be used on the iPhone iOS?

+1

Gracias. Utilicé el enlace de formato WAV para confirmar que la grabación estaba funcionando. Estaba teniendo problemas para enviar datos a mi servidor. – matt

+1

He votado esto porque el libsndfile no se puede usar en el iPhone: http://stackoverflow.com/questions/4939268/can-the-libsndfile-library-be-used-on-the-iphone-ios –

+0

Gracias para el comentario. Todavía puede usarlo vinculando estáticamente a su código (o al menos la respuesta que menciona lo dice), pero definitivamente vale la pena mencionarlo en la respuesta aquí. Lo agregaré –

Cuestiones relacionadas