2

J'ai développé une petite application qui peut enregistrer et lire de petites vidéos (jusqu'à 10 secondes). L'application capture la vidéo à 6 Mbps. Pour assurer une lecture vidéo plus rapide, j'essaie d'implémenter HLS (http live streaming). Mais j'ai remarqué que l'application ramasse toujours le flux avec le débit binaire le plus bas en premier et ne passe au meilleur flux disponible (basé sur la bande passante du réseau) qu'après 10 secondes.Streaming adaptatif HLS dans android change les flux seulement après 10 secondes?

J'ai testé différents lecteurs multimédias comme le lecteur multimédia Android, exoplayer etc., mais le comportement est cohérent. La vidéo ne change de flux qu'après exactement 10 secondes. Est-ce l'implémentation par défaut de hls dans android? ou est-ce qu'il me manque quelque chose? Le m3u8 je le test est http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

 localUrl = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"; 
     vidView.setVideoPath(localUrl); 
     Log.i("GenericRequest", "VideoUrl " + localUrl); 
     vidView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
      vidView.start(); 
      } 
     }); 

Répondre

6

Si vous regardez le contenu des listes de lecture figurant dans bipbopall.m3u8, vous verrez que la durée du segment est de 10 secondes. Cela explique probablement pourquoi vous voyez l'interrupteur après 10 secondes.

Le lecteur téléchargera la première liste de lecture répertoriée dans bipbopall.m3u8, qui est dans ce cas le flux avec le débit le plus bas, et commence la lecture du premier segment. Il calcule ensuite qu'il y a une bande passante supplémentaire disponible, donc passe à un flux avec un débit plus élevé.

Si la durée du segment était différente, le basculement se produirait probablement à un autre moment.