2012-07-20 15 views
8

Tengo una aplicación de prueba que usa AVPlayer para reproducir video especificado por una lista de reproducción m3u8 HLS. La lista de reproducción especifica varias secuencias de audio alternativas, similares a la lista de reproducción de muestra "Lista 10" proporcionada por Apple que se encuentra aquí: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html#//apple_ref/doc/uid/DTS40012238-CH1-ALTERNATE_MEDIA La aplicación necesita poder cambiar entre las secuencias de audio alternativas mientras se reproduce el video. Por ejemplo, la aplicación debería poder cambiar entre las transmisiones de audio en inglés, francés y español mediante el uso de los botones de la aplicación mientras se reproduce el video.Cómo cambiar entre secuencias de audio alternativas usando AVPlayer

¿Qué clases y métodos AVFoundation usaría el AVPlayer y sus objetos relacionados para cambiar entre las secuencias de audio que se especifican en la lista de reproducción m3u8? He consultado la documentación de la clase AVFoundation pero no veo cómo hacerlo.

Un enlace a un código de muestra que muestre cómo hacerlo sería genial. He estado buscando en la web esta información sin éxito. Gracias por cualquier ayuda en esto.

+0

También tengo curiosidad acerca de esto, pero para un video alternativo similar al "Listado 12" en: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html. Imagino que cualquier respuesta que encuentres me ayudará – user1636983

Respuesta

18

Para la reproducción de m3u8 con AVPlayer, parece que no puede usar un AVAsset para construir un AVPlayerItem. Necesita construir un AVPlayerItem directamente desde el URI. Al instanciar un AVPlayer con este AVPlayerItem, y luego KVO escuchando en la propiedad @ "estado", tendrá un activo dentro del [[avPlayerInstance currentItem] asset] si el estado es AVPlayerStatusReadyToPlay. Esto se describe en la página 20 del AV Foundation Programming Guide.

Para cambiar el audio a varios suplentes utilizan:

AVMediaSelectionGroup *audioSelectionGroup = [[[avPlayerInstance currentItem] asset] mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicAudible]; 

NSLog(@"audioSelectionGroup: %@", audioSelectionGroup); 

// [audioSelectionGroup options] // Array of the options in the group above. 

y el selectivo AVMediaSelectionOption (el canal de audio que desee) con:

[[avPlayerInstance currentItem] selectMediaOption:avMediaSelectionOptionInstance] inMediaSelectionGroup: audioSelectionGroup]; 

El mismo funcionará para vídeo.

Esto se describe en la sección "Selección de audio y subtítulos de acuerdo con el idioma y otros criterios" de AV Foundation Release Notes for IOS 5 (sección 3).

Cuestiones relacionadas