HLS (http streaming en vivo) en Android 3.0 y buscando

Tenemos un proveedor que nos da los archivos m3u8 para flujos HLS (originalmente destinados para su uso en una aplicación iOS).

Android 3.0 soporta http streaming en vivo (http://developer.android.com/guide/appendix/media-formats.html) – y de hecho podemos reproducir estos archivos m3u8 utilizando el estándar VideoView en Android 3.0+.

EDIT: Android parece tratar esto como "en tiempo real" alimentación de vídeo, y deshabilita la posibilidad de buscar o calcular una duración de vídeo. (Donde-como iOS vamos a buscar dentro de la corriente sin problema)

¿Hay alguna manera de forzar a android 3.0+ a buscar dentro de estos archivos?

A continuación, se muestra una actividad de muestra para que otros puedan probar con:

import android.app.Activity; import android.os.Bundle; import android.widget.MediaController; import android.widget.VideoView; public class SandboxActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); VideoView vw = (VideoView) findViewById(R.id.videoView); vw.setVideoPath("http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8"); vw.setMediaController(new MediaController(this)); vw.requestFocus(); vw.start(); } } 

Y un diseño de ejemplo:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:id="@+id/root"> <VideoView android:id="@+id/videoView" android:layout_width="wrap_content" android:layout_height="match_parent" /> </RelativeLayout> 

Esto está usando un enlace de HLS de la muestra de Apple.

Mira esta página (a la que te refieres)

Dice:

  • Protocolo versión 3 (Android 4.0 y superior)
  • Versión de protocolo 2 (Android 3.x)

Y aquí puede comprobar el proyecto de HLS . Puede elegir una versión en la parte superior de la página.

La primera referencia a la búsqueda apareció en el borrador 3 (comparando con el borrador 2 de Android 3.x)

El valor de la fecha y la hora proporciona un mapeo informativo de la línea de tiempo de los medios de comunicación a una hora de reloj de pared apropiada, que puede utilizarse como base para buscar

Solo por asegurar. No leí todo el borrador. Pero, mi conjetura sería que Android implementó un borrador bastante temprano en Android 3.0 y que puede haber implementado parcialmente, que es suficiente para jugar, pero no es suficiente para buscar.

No creo que usted tiene una solución fácil para esto, excepto salmuera en el cliente HLS de terceros (como lo sugiere vipw)

Lo siento chicos, estás tratando de obtener sangre de una piedra. Android 3.0 es compatible con un subconjunto muy limitado de HLS, y para soportar la búsqueda en secuencias en directo, vas a necesitar un cliente HLS mejor que Google.

Im no seguro pero puesto que el VideoView no está apoyando la búsqueda para su caso, usted puede intentar algunas diversas opciones como: http://wiki.videolan.org/AndroidCompile (que es fácil de compilar)

Algo relacionado con esto – parece haber un error que impide que los feeds HLS en vivo comiencen en el punto en directo como se supone que. Me imagino que esto puede ser debido a esta limitación buscando. Al iniciar un feed HLS en vivo (que NO tiene la etiqueta EXT-X-ENDLIST) en Android, hay un error en los componentes de análisis de núcleo HLS que no se inicia en el punto en vivo (final del feed) y en su lugar Comienza al principio de la corriente.

Hay un error introducido en code.google.com acerca de esto – puede "star" o upvote allí:

http://code.google.com/p/android/issues/detail?id=37156

Mi conjetura es que el comportamiento de búsqueda descrito se implementó usando una lista de reproducción de iframe (# EXT-XI-FRAMES-ONLY), que requiere un cliente que soporte al menos la versión 4 de la especificación Pantos.

  • Obtener la fecha actual en Http Live Streaming Android 3.0+
  • Android HLS - ¿Dónde está el código fuente?
  • Tamaño de la memoria intermedia de Android VideoView
  • Cómo reproducir el archivo de audio Mp3 desde el servidor
  • Metadatos temporizados para la transmisión HTTP en tiempo real en android
  • Representación de subtítulos para flujos HLS en Android
  • ¿Reproductor de vídeo flotante en android?
  • Android - Transmisión adaptativa de velocidad de bits. (HLS) Calidad del flujo
  • VideoView activa OnPreparedListener demasiado pronto para HLS
  • Transmisión de vídeo en directo desde el dispositivo Android al servidor
  • Reproducir vídeo m3u8 en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.