Question

D'après les notes de version, Stagefright remplace le cadre de OpenCore dans la version Gingerbread. Il semble qu'il y ait eu de nombreuses discussions qui dit: le streaming HTTP en direct d'Apple est pris en charge par défaut depuis Android 2.3. Même Wikipédia mentionne cela.
Cependant, lorsque je tente de lancer le flux de test fourni par Apple en utilisant le MediaPlayerDemo_Video.java fourni avec l'API Demos je reçois le exceptions suivantes:

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 

--- code correspondant (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);

Questions:
1. Est-ce que la construction GingerBread supporte vraiment HTTP Live Streaming d'Apple Protocole
2. Qu'est-ce qui a mal tourné au-dessus?

S'il vous plaît aider.

Était-ce utile?

La solution

D'accord, j'ai trouvé des données et je vais mettre à jour ce fil en répondant à ma propre question. Si quelqu'un a des suggestions ou d'autres considérations d'apporter à la table s'il vous plaît ajouter.

  1. Stagefrightframework qui vient avec des supports de construction de Honeycomb HTTP Live Streaming. La documentation lit la plupart des parties du projet de spécification sans mentionner explicitement quelles parties.

  2. La vidéo et l'audio doit être conforme aux formats multimédias pris en charge par Android .

  3. j'ai pu lire des flux de contenu protégé employant le cryptage AES-128. Cependant, les performances de l'émulateur (malheureusement, je n'avais pas l'appareil) n'a pas été bonne. Audio et vidéo ont été terriblement désynchronisés. applications de streaming doivent être testés sur des appareils réels.

  4. Vous ne pouvez pas diffuser vos données via https. En outre, afin de détecter que le flux est conforme à la norme HTTPLive vous devrez remplacer une partie de "http://" de l'URL avec "httplive://"

Autres conseils

pain d'épice pris en charge par jouer quelques HLS flux à l'aide du httplive:. // préfixe système mais les codecs pris en charge sont très limitées et il est très facile de construire un flux parfaitement valide qui bloque le cadre des médias et ne joue pas

Mes expériences ont montré que cet accident se produit normalement pendant le chargement ou le décodage du premier segment, même pour le contenu crypté, mais que la clé ne soit pas suggérer a demandé que le cadre ne tient pas compte des lignes KEY.

Bien sûr, pour ceux qui ne doivent soutenir les appareils très récents sur le marché, le soutien à HLS dans ICS apparaît raisonnable (quoique encore imparfaite) mais ceux d'entre nous qui ont besoin d'une sorte de compatibilité ascendante sont laissés résolument dans le froid, et il semble que la seule option pour le streaming (par opposition à téléchargement progressif) est RTSP, qui lui-même est mal implimented dans Android.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top