2012-06-13 12 views
25

Tenemos un proveedor que nos brinda archivos m3u8 para transmisiones HLS (originalmente pensadas para su uso en una aplicación de iOS).HLS (http live streaming) en Android 3.0 y en busca de

Android 3.0+ admite http live streaming (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+ .

EDITAR: Android parece tratar esto como una alimentación de video "en tiempo real", y desactiva la capacidad de buscar o calcular la duración de un video. (Donde iOS te permite buscar dentro de la transmisión sin problemas)

¿Hay alguna manera de forzar que Android 3.0+ busque dentro de estos archivos?

Aquí es una actividad de la 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 una disposición de la 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> 

Se trata de utilizar un enlace de muestra HLS de Apple.

+0

¿Encontró una solución a este problema al final? –

+0

Deseo implementar la búsqueda también en la transmisión en vivo de HLS. ¿Has encontrado alguna solución? –

Respuesta

13

Mira esto (que se ha referido también) page

Dice:

  • Protocol versión 3 (Android 4.0 y superior)
  • versión del protocolo 2 (Android 3.x)

Y aquí se puede comprobar draft's for HLS. Puedes elegir una versión en la parte superior de la página.

Primera referencia a la búsqueda aparecido en el proyecto 3 (comparando el proyecto de 2 Android 3.x)

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

sólo para asegurarse. No leí todo el borrador. Pero, supongo que Android implementó un borrador bastante temprano en Android 3.0 y es posible que lo hayan implementado parcialmente, lo cual es suficiente para jugar, pero no es suficiente buscarlo.

no creo que usted tiene una solución fácil para esto, excepto en salmuera tercera parte del cliente de HLS (según lo sugerido por vipw)

5

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

0

Algo relacionado con esto: parece haber un error que impide que los feeds de HLS en vivo comiencen en el punto de transmisión como se supone que deben. Me imagino que esto puede deberse a esta limitación de búsqueda. Cuando inicia un feed de 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 puede iniciar en el punto de activación (fin del feed), y en cambio, comienza al comienzo de la transmisión.

hay un error presentada el code.google.com sobre esto - se puede 'estrella' o upvote allí:

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

0

Mi conjetura es la conducta de búsqueda que ha descrito llevó a cabo utilizando un iframe solo la lista de reproducción (# EXT-XI-FRAMES-SOLAMENTE), que requiere un cliente que admita al menos la versión 4 de la especificación de Pantos.

Cuestiones relacionadas