2012-06-13 11 views
25

Abbiamo un provider che ci fornisce file m3u8 per stream HLS (originariamente pensati per l'uso in un'app iOS).HLS (streaming live http) su Android 3.0 e in cerca di

Android 3.0+ supporta http live streaming (http://developer.android.com/guide/appendix/media-formats.html) e in effetti possiamo riprodurre questi file m3u8 utilizzando la versione standard di VideoView su Android 3.0 e versioni successive .

MODIFICA: Android sembra considerare questo come feed video "in tempo reale" e disabilita la possibilità di cercare o calcolare una durata del video. (Dove-come iOS cerchiamo all'interno dello stream senza problemi)

C'è un modo per forzare Android 3.0+ a cercare all'interno di questi file?

Ecco un'attività di esempio per gli altri a testare 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(); 
    } 
} 

e un layout di esempio:

<?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> 

Questo sta usando un collegamento campione HLS da Apple.

+0

Hai trovato una soluzione a questo problema alla fine? –

+0

Voglio implementare la ricerca anche in streaming live HLS. Hai trovato qualche soluzione? –

risposta

13

Guardate questa (che lei ha fatto riferimento anche) page

Dice:

  • Protocol versione 3 (Android 4.0 e versioni successive)
  • Protocol versione 2 (Android 3.x)

E qui è possibile controllare draft's for HLS. Puoi scegliere una versione nella parte superiore della pagina.

primo riferimento a cercare apparso in progetto 3 (confrontando per redigere 2 Android 3.x)

Il valore della data e ora fornisce una mappatura informativo della timeline dei media ad un appropriato tempo orologio a muro, che può essere utilizzato come base per cerca

solo per assicurarsi. Non ho letto tutta la bozza. Tuttavia, suppongo che Android abbia implementato una bozza piuttosto anticipata in Android 3.0 e potrebbe averlo implementato parzialmente, il che è sufficiente per giocare, ma non è sufficiente cercare.

non credo che si dispone di una soluzione semplice per questo, tranne che in salamoia 3a parte del cliente HLS (come suggerito da vipw)

5

Scusate ragazzi, state cercando di prendere il sangue da una pietra. Android 3.0 supporta un sottoinsieme molto limitato di HLS e per supportare la ricerca in streaming live avrai bisogno di un client HLS migliore di quello fornito da Google.

0

Un po 'correlato a questo - sembra esserci un bug che impedisce ai feed HLS live di avviarsi dal punto live come dovrebbero. Immagino che questo possa essere dovuto a questa limitazione di ricerca. Quando si avvia un feed HLS live (che NON ha il tag EXT-X-ENDLIST) su Android, c'è un bug nei componenti di analisi di base HLS che non si avvia nel punto di live (fine del feed), e invece inizia all'inizio del flusso.

c'è un bug depositata in code.google.com su questo - si puo 'star' o upvote lì:

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

0

La mia ipotesi è il comportamento in cerca di te descritto è stato implementato utilizzando un iframe solo playlist (# EXT-XI-FRAMES-ONLY), che richiede un client che supporti almeno la versione 4 della specifica Pantos.