2

我開發了一個小應用程序,可以錄製和播放小視頻(最多10秒)。該應用以6 Mbps的速度捕捉視頻。爲了確保更快的視頻播放,我正在嘗試實現HLS(http直播)。但我注意到,應用程序總是首先選擇最低比特率的流,並且僅在10秒後切換到最佳可用流(基於網絡帶寬)。Android中的HLS自適應流媒體僅在10秒後才更改流媒體?

我測試了不同的媒體播放器,如android媒體播放器,exoplayer等,但行爲是一致的。視頻僅在正好10秒後更改流。這是android在Android中的默認實現?或者我錯過了什麼? 我用來測試M3U8是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(); 
      } 
     }); 

回答

6

如果你看一下在bipbopall.m3u8列出的播放列表中的內容,你會看到該段持續時間爲10秒。這可能解釋了爲什麼你在10秒後看到開關。

播放器將下載bipbopall.m3u8中列出的第一個播放列表,該例中是最低比特率的流,並開始播放第一個段。隨後計算出可用的額外帶寬,從而切換到具有更高比特率的流。

如果段的持續時間不同,您可能會看到交換髮生在不同的時間。