Transmitir datos de la networking en AVAudioEngine, ¿es posible?

Tengo una aplicación en la que uso AVAudioEngine para reproducir files del sistema de files local mediante AVAudioPlayerNodes y AVAudioFiles . Esto funciona perfectamente bien.

Ahora quisiera habilitar mi configuration para que también admita la transmisión de files MP3 desde un server en Internet.

Lo que he intentado hasta ahora

Mi esperanza era que pudiera crear algún tipo de búfer de objects NSURL que apuntan a direcciones de networking, que luego podría usar con mi AVAudioPlayerNode .

He buscado Stack Overflow y Internet en general, pero no he encontrado buenos consejos sobre cómo lograr esto.

Sé que la línea AVAudioEngine consta de:

  • AVAudioPlayerNode , que puede reproducir audio de un AVAudioFile o un AVAudioBuffer . Ya utilizo AVAudioFile para mi "configuration de file local" hoy.
  • AVAudioFile , que se usará para files locales. Se ha creado un 'AVAudioFile' con un 'NSURL', así que he intentado con una URL que apunta a un file MP3 en un server como en un Playground:

     var fileError: NSError? = nil let file = AVAudioFile(forReading: someURL, error: &fileError) if fileError != nil { fileError } 

que me recompensa con este error:

 Error Domain=com.apple.coreaudio.avfaudio Code=2003334207 "The operation couldn't be completed. (com.apple.coreaudio.avfaudio error 2003334207.)" UserInfo=0x7fbfab424480 {failed call=ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)} 
  • AVAudioPCMBuffer , que es la class que esperaba utilizar, pero no puedo encontrar ninguna forma de instanciarla con datos.

Mi pregunta (solo para dejar en claro :-))

¿ AVAudioEngine de ustedes, personas shinys, sabe cómo usar AVAudioEngine para transmitir files MP3 desde un server en Internet?

¿O debería renunciar y usar AVPlayer para esto?

A la espera de saber de ti.

La documentation de Apple no especifica si puede funcionar con un mp3 alojado en línea, pero tan pronto como bash inicializar un AVAudioFile con una URL mp3, se bloquea al instante con una exception fatal. Creo que responde tu pregunta.