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.

Problema con los bucles en el grabador de audio y reproductor de audio de AVFoundation.

Estoy intentando hacer una aplicación que registra y repite un fragmento de audio.
Tengo esta función en mi struct AudioPlayer:

func loop(nums: Int) {
audioPlayer!.numberOfLoops = nums
}

Y la estoy referenciando en mi struct swiftUI. Por alguna razón, la aplicación se bloquea. Aquí es donde hago referencia a la función:

Button(action:{
    if !canRecord && !edit && slot.beenRecorded == true {
        if isInfinite {
            audioPlayer.loop(nums: -1)
        } else {
            audioPlayer.loop(nums: myInt)
        }
        if let recording = audioRecorder.recordings.first(where: { $0.fileURL.lastPathComponent == "(index).m4a" }) {
            self.audioPlayer.startPlayback(audio: recording.fileURL)
        }
    }
    else {
        print("No se guardó ninguna URL de audio")
    }

    if audioPlayer.isPlaying == false {
        print("El audio se está reproduciendo")
    }

}
if canRecord && oneIsRecording == false {
    slot.beenRecorded = true
    UserDefaults.standard.set(true, forKey: slot.id)
    isActive = true
}
})
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es difícil determinar la razón exacta por la cual la aplicación se está bloqueando basándonos en el fragmento de código proporcionado. Sin embargo, aquí tienes algunas sugerencias:

    1. Asegúrate de que la instancia audioPlayer no sea nula antes de llamar a la función loop. Puedes agregar una comprobación para esto:
      if let player = audioPlayer {
         player.loop(nums: myInt)
      }
      
    2. Si la instancia audioPlayer no es nula, asegúrate de que se haya inicializado y configurado correctamente antes de llamar a la función loop.

    3. Verifica el valor de myInt antes de pasarlo a la función loop. Si es negativo, puede estar causando el bloqueo.

    4. Verifica la salida de la consola en busca de mensajes de error que puedan brindar información sobre la causa del bloqueo.

    5. Si ninguna de las sugerencias anteriores ayuda, intenta simplificar el código y agregar gradualmente funcionalidad hasta aislar el problema.

Comments are closed.