react not community android android-3.0-honeycomb http-live-streaming

android - community - react native video undefined is not an object



HLS(http live streaming) en Android 3.0 y buscando (5)

Tenemos un proveedor que nos proporciona archivos m3u8 para transmisiones HLS (originalmente diseñadas para su uso en una aplicación de iOS).

Android 3.0+ admite la transmisión en vivo de http (http://developer.android.com/guide/appendix/media-formats.html), y de hecho podemos reproducir estos archivos m3u8 utilizando el VideoView estándar en Android 3.0+.

EDITAR: Android parece tratar esto como un video en tiempo real y desactiva la capacidad de buscar o calcular la duración de un video. (¿Dónde-como iOS te permite buscar dentro de la secuencia sin problema)

¿Hay alguna forma de forzar a Android 3.0+ a buscar dentro de estos archivos?

Aquí hay una actividad de muestra para que otros la prueben:

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 muestra:

<?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á utilizando un enlace HLS de muestra de Apple.


Algo relacionado con esto: parece que hay un error que impide que los feeds de HLS en vivo se inicien en el punto en vivo como se supone que deben hacerlo. Me imagino que esto puede ser debido a esta limitación de búsqueda. Cuando inicia un feed HLS en vivo (que NO tiene la etiqueta EXT-X-ENDLIST) en Android, hay un error en los componentes del análisis de HLS central 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 archivado en code.google.com acerca de esto: puedes ''iniciar'' o promocionarlo allí:

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


Lo siento chicos, están tratando de obtener sangre de una piedra. Android 3.0 es compatible con un subconjunto muy limitado de HLS, y para permitir la búsqueda en transmisiones en vivo, necesitará un mejor cliente de HLS del que proporciona Google.


Mira esta página (a la que también hiciste referencia) page

Dice:

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

Y aquí puedes consultar el borrador de HLS . Puedes elegir una versión en la parte superior de la página.

La primera referencia a la búsqueda apareció en el borrador 3 (en comparación 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 a una hora apropiada de reloj de pared, que se puede usar 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 puede que lo hayan implementado parcialmente, lo cual es suficiente para jugar, pero no es suficiente para buscarlo.

No creo que tengas una solución fácil para esto, excepto la recopilación de datos en un cliente HLS de terceros (como lo sugiere vipw)



Supongo que el comportamiento de búsqueda que describiste se implementó utilizando una lista de reproducción solo iframe (# EXT-XI-FRAMES-ONLY), que requiere un cliente que admita al menos la versión 4 de la especificación de Pantos.