es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fallo al inicializar un AVAudioCompressedBuffer.

Estoy tratando de inicializar un AVAudioCompressedBuffer utilizando este formato:

<AVAudioFormat 0x2818944b0:  2 ch,  48000 Hz, '.mp3' (0x00000000) 0 bits por canal, 0 bytes por paquete, 1152 frames por paquete, 0 bytes por frame>

como tal:

AVAudioCompressedBuffer* compressedBuffer = [[AVAudioCompressedBuffer alloc] initWithFormat:format 
                                                                             packetCapacity:NUM_AQ_BUFS];

Pero estoy obteniendo esta excepción:

Thread 1: "required condition is false: maximumPacketSize != 0"

¿Qué estoy perdiendo?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según la excepción que estás viendo, parece que necesitas establecer la propiedad maximumPacketSize del formato de audio que estás utilizando. El mensaje de error sugiere que actualmente está establecido en 0, lo cual no está permitido.

    Para solucionar este problema, debes actualizar tu código de inicialización de AVAudioFormat para establecer adecuadamente la propiedad maximumPacketSize. Puedes hacerlo así:

    AVAudioFormat *format = [[AVAudioFormat alloc] initWithFileTypeID: kAudioFileMP3Type
                                                            sampleRate: 48000.0
                                                              channels: 2
                                                       bitsPerChannel: 0
                                                     bytesPerPacket: 0
                                                     framesPerPacket: 1152
                                                bytesPerFrame: 0
                                         formatDescription: nil
                                                      channelLayout: nil];
    
    format.maximumPacketSize = TU_TAMAÑO_MAXIMO_DE_PAQUETE;
    
    AVAudioCompressedBuffer *compressedBuffer = [[AVAudioCompressedBuffer alloc] initWithFormat:format packetCapacity:NUM_AQ_BUFS];
    

    Reemplaza TU_TAMAÑO_MAXIMO_DE_PAQUETE por el tamaño máximo real del paquete para el formato de archivo MP3 que estás utilizando. Esto debería resolver el problema y permitirte inicializar la instancia de AVAudioCompressedBuffer correctamente.

Comments are closed.