2011-01-18 13 views
14

Tengo una configuración de servidor de transmisión HTTP en vivo que sirve contenido de audio mp3 segmentado (la URL apunta al archivo de índice playlist.m3u8). Necesito construir una aplicación de cliente iOS para consumir esta corriente de audio sin usando cualquier control/IU estándar de Apple. Debería reproducir la transmisión en segundo plano y quiero usar mi propia interfaz de usuario personalizada para proporcionar los controles.Reproducir secuencia de archivos de audio usando HTTP Live Streaming en el cliente iOS sin perder UI en Quick Time

Dado que el contenido es puramente de audio, no quiero usar la clase MPMoviePlayerController a medida que toma la interfaz de usuario. He intentado usar AVAudioPlayer, aunque no es para transmisiones de red, lo que sorprendentemente no reproduce con un código de error "-43": NSOSStatusErrorDomain.

También he intentado crear una UIWebView con 1 píxel de alto y ancho y apuntarla al archivo playlist.m3u8 en el servidor. Esto funciona, pero desafortunadamente aún pierdo UI ya que UIWebView simplemente delega la tarea de reproducir en el reproductor QuickTime que se inicia dentro de mi aplicación con pantalla completa para dispositivos iOS 3.xx.

Básicamente, me parece que Apple no ha proporcionado ninguna API de cliente para el consumo de HTTP Live Streaming audio corrientes y los desarrolladores se ven obligados a abandonar la interfaz de usuario para el reproductor QuickTime que desempeña la corriente con el logotipo de QT usurpando la pantalla. ughh ...

Me encantaría saber si alguien tiene sugerencias para ayudarme con lo anterior. De lo contrario, mi plan B es abandonar HTTP Live Streaming y utilizar la famosa implementación de streaming clásica Matt Gallagher. Sin embargo, estoy un poco preocupado por Apples guidelines que claramente sugieren que para las aplicaciones que se espera que envíen una gran cantidad de contenido de audio o video a través de redes celulares (que es mi aplicación) deben usar HTTP Live. ¿Esto significa que la implementación de mi plan B es propensa al rechazo de Apple? ¿Alguna forma de eludir esta directriz?

Respuesta

5

Utilicé el streamer de audio de Matt Gallagher en una de mis aplicaciones. Es una aplicación de radio por internet muy parecida a Pandora y LastFM. Y sí, fue aceptado por Apple y ha estado en la App Store desde entonces.

Por lo tanto, en mi opinión, su plan B en realidad no es tan arriesgado. :-)

+0

Gracias por la información. ¿Enviaste la aplicación antes de 2010-Feb-05? En cuanto al historial de revisión de documentos de las directrices de Apple, es cuando emitieron el mandato sobre las aplicaciones que requieren utilizar HTTP Live Streaming para la transmisión de medios con alto b/n. Supongo que pueden haber hecho su política de revisión más estricta solo para las aplicaciones enviadas a la tienda después de que se anunciara públicamente esa guía. – bhavinb

+0

Hmmm .. Envié alrededor de septiembre de 2010, y me aprobaron en el siguiente octubre. –

13

http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html

Los documentos dicen:

reproducción se produce en una vista de propiedad del jugador película y tiene lugar bien pantalla completa o en línea.

En iOS 3.1 y versiones anteriores, esta clase implementó un reproductor de película de pantalla completa solamente.

Una prueba rápida con las secuencias de muestra de Apple demuestra que lo que quiere hacer es posible.

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8"]]; 
player.movieSourceType = MPMovieSourceTypeStreaming; 
player.view.hidden = YES; 
[self.view addSubview:player.view]; 
[player play]; 
+1

la pregunta mencionada "... que se inicia dentro de mi aplicación con pantalla completa para dispositivos iOS 3.xx". Sé acerca de la posibilidad de cambiar el tamaño de la vista y la capacidad de ocultarlo en iPhone 4.0 y posterior (ya que iOS 3.2 era solo iPad, después de iOS 3.1.x, hay iOS 4.0 directamente para el iPhone). La API 'player.view.hidden = YES;' solo es posible en iOS 3.2 y posterior, lo que significa que para iPhones tiene iOS 4.0 y superior. Por lo tanto, esta no es una opción viable ya que quiero admitir iPhones en iOS3.xy superior en mi aplicación – bhavinb

+2

Gotcha. Lo siento, me perdí el requisito de iOS en la pregunta. Sin embargo, es posible que desee considerar seriamente cuánto esfuerzo desea poner en los dispositivos que ejecutan 3.x. Ayudé a crear una aplicación que tiene más de medio millón de descargas y el 93% de los usuarios ejecutan 4.0 o superior. También vea este enlace: http://www.quora.com/What-proportion-of-all-iPhone-owners-use-iOS4-*-today – SteveB

+0

Vas a tener que copiar y pegar ese enlace porque el asterisco es estropeándolo. Lo siento, no pude lograr que se vincule correctamente. – SteveB

Cuestiones relacionadas