2010-03-29 20 views
10

Estoy tratando de implementar un reproductor de audio de descarga progresiva para iPhone, usando http y archivos mp3 de tamaño fijo.reproductor de audio con descarga progresiva de iPhone

Encontré el proyecto AudioStreamer pero parece muy complicado y funciona mejor con transmisiones interminables.

Necesito poder encontrar la longitud total de los archivos de audio y también necesito poder buscar en los archivos. Encontré una desviación pirateada de AudioStreamer, pero no parece funcionar muy bien para mí. http://www.saygoodnight.com/?p=14

Me pregunto si hay una manera más simple de lograr mis objetivos o si hay algunas mejores muestras de trabajo por ahí? Encontré la biblioteca de bajo pero no mucha documentación al respecto.

/Br Johannes

+0

estoy añadiendo una recompensa a esta pregunta ya que tengo la misma pregunta - con la esperanza de salvar el contenido como descargo/jugarlo. – ajacian81

Respuesta

8

Hay por desgracia nada sencillo jugar flujos de audio en el iPhone. Aquí está el artículo que me ayudó: Streaming and playing an MP3 stream

Es un proyecto OSX, pero la mayor parte también funcionará con el iPhone. En cuanto a obtener todo el tiempo de reproducción, probablemente tendrías que averiguarlo en función de la propiedad de longitud de contenido del encabezado http, siempre que sea un archivo CBR. De lo contrario, imagino que tendrías que descargar todo el archivo antes de determinarlo.

+1

+1 para enlazar con cocoawithlove, también obtuve una aplicación que solo podría ejecutar con este recurso. –

4

Hay un capítulo muy bueno sobre la transmisión de audio en iPhone Cool Projects. http://apress.com/book/view/9781430223573 Muestra un enfoque más simple que AudioStreamer (usando NSURLConnection en lugar de CFNetwork), más adecuado para la descarga progresiva, y sin código multihilo.

Y para averiguar el tamaño del archivo de audio se puede utilizar en [response expectedContentLength]

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
5

Si sólo necesita para reproducir archivos MP3, ¿por qué estás escribiendo su propio programa de descarga/reproductor? Usted tiene algunas opciones integradas en iOS, cada uno de los cuales admiten la descarga y reproducción de MP3 progresiva:

  • MPMoviePlayerController
  • AVPlayer
  • Safari <audio> jugador

he tenido problemas con el personal capacidades de descarga progresiva de MPMoviePlayerController y AVPlayer, así que tal vez este sea su problema también. Descubrí que estos jugadores intentan ser inteligentes solicitando el mp3 varias veces, verificando si el servidor admite descargas progresivas a través de compensaciones de rango http. Pero cuando el servidor no admite compensaciones de rango, el archivo se descarga varias veces, comiendo ancho de banda (!).

En mi último proyecto incrusté un UIWebView con una etiqueta html <audio> incrustada. El reproductor Safari parece comportarse mejor que AVPlayer y MPMoviePlayerController, pero también tiene sus propias advertencias. Por un lado, hacer que el autoplay funcione es un PITA.

1

Sé que esta es una publicación bastante antigua, pero quería sugerir una biblioteca sólida de código abierto. Se basa en la publicación original de Matt Gallagher recomendada por @pzearfoss arriba. La versión actual usa AudioUnits ahora, en lugar de las clases de AudioQueue, por lo que le da acceso a las muestras de PCM en bruto para cualquier manipulación que quiera realizar (filtrado, etc.) antes de la reproducción.También le brinda capacidades de descarga progresiva de forma gratuita, con un esfuerzo mínimo. ¡La biblioteca parece estar activamente actualizada, lo que es una gran ventaja!

StreamingKit by @tumtumtum

Cuestiones relacionadas