Domanda

Secondo le note di rilascio, Stagefright sostituisce il quadro OpenCore nella versione Gingerbread. Sembra che ci sono state numerose discussioni che dice: Live streaming HTTP di Apple è supportata di default dal Android 2.3. Anche il Wikipedia menzioni questo.
Tuttavia, quando si tenta di eseguire il href="http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8" rel="noreferrer"> flusso di prova fornito da Apple utilizzando il MediaPlayerDemo_Video.java bundle con API Demos ottengo il seguenti eccezioni:

setDataSource('http://devimages.apple.com/iphone/samples/bipbop/gear1/
prog_index.m3u8')
connect to devimages.apple.com:80/iphone/samples/bipbop/gear1/
prog_index.m3u8 @0
INFO/NuCachedSource2(34): ERROR_END_OF_STREAM
error (1, -2147483648)
ERROR/MediaPlayerDemo(667): error: Prepare failed.: status=0x1
java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer.prepare(Native Method)
at
com.video.stream.MediaPlayerDemo_Video.playVideo(MediaPlayerDemo_Video.java:
125)
at
com.video.stream.MediaPlayerDemo_Video.surfaceCreated(MediaPlayerDemo_Video.java:
181)
  ...
    surfaceChanged called
    Displayed com.video.stream/.MediaPlayerDemo_Video: +1s652ms (total
    +7s427ms)
    GC_EXPLICIT freed 2K, 55% free 2514K/5511K, external 716K/1038K,
    paused 183ms
    GC_EXPLICIT freed 17K, 52% free 2782K/5767K, external 716K/1038K,
    paused 87ms
    GC_EXPLICIT freed 68K, 50% free 2972K/5895K, external 2544K/3109K,
    paused 104ms
    request time failed: java.net.SocketException: Address family not
    supported by protocol 

--- codice rilevante (MediaPlayerDemo_Video.java):

path = "http://devimages.apple.com/iphone/samples/bipbop/gear1/
prog_index.m3u8";
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

Domande:
1. non GingerBread costruire davvero supporta HTTP Live Streaming di Apple protocollo?
2. Che cosa è andato storto sopra?

Si prega di aiuto.

È stato utile?

Soluzione

Bene, ho trovato alcuni dei dati e ho intenzione di aggiornare questa discussione rispondendo alla mia domanda. Se qualcuno ha suggerimenti o altre considerazioni di portare a tavola si prega di aggiungere.

  1. Stagefrightframework che viene fornito con i supporti Honeycomb costruire HTTP Live Streaming. La documentazione si legge la maggior parte delle parti del progetto di specifica , senza menzionare in modo esplicito quali parti.

  2. Il video e l'audio deve essere conforme alle formati multimediali supportati da Android .

  3. sono stato in grado di riprodurre flussi di contenuti protetti da crittografia impiegano AES-128. Anche se, le prestazioni dell'emulatore (purtroppo, non ho avuto il dispositivo) non era buona. Video Audio e erano terribilmente fuori sincrono. applicazioni Streaming devono essere testati su dispositivi reali.

  4. Non è possibile trasmettere i dati su https. Inoltre, al fine di rilevare che i conforme flusso a HTTPLive livello dovrete sostituire parte "http://" del URL con "httplive://"

Altri suggerimenti

Gingerbread fa supporto che gioca un po 'di HLS ruscelli utilizzando il httplive:. // schema prefix ma i codec supportati sono molto limitate ed è molto facile da costruire un flusso perfettamente valido che si blocca il quadro dei media e non riesce a giocare

Le mie esperienze hanno dimostrato che questo incidente si verifica normalmente durante il caricamento o la decodifica del primo segmento, anche per i contenuti criptati, ma che la chiave non viene richiesto il che suggerisce che il quadro sta ignorando le linee fondamentali.

Naturalmente, per coloro che hanno solo bisogno di supportare i dispositivi molto più nuovi sul mercato, il supporto per HLS in ICS sembra ragionevole (anche se ancora imperfetta), tuttavia quelli di noi che hanno bisogno di un qualche tipo di compatibilità all'indietro sono lasciati decisamente in il freddo, e sembra l'unica opzione per lo streaming (al contrario di download progressivo) è RTSP, che di per sé è scarsamente implimented in Android.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top