2017-06-02 90 views
1

我正在用MediaPlayer開發Android版流視頻應用程序。問題是我需要顯示當前的比特率,但我還沒有找到任何有效的建議來了解如何獲得它?如何使用MediaPlayer獲取流媒體比特率?

下面是我如何設置視頻網址播放:

mediaPlayer = new MediaPlayer(); 
    try { 
     mediaPlayer.setDataSource(VIDEO_PATH); 
     mediaPlayer.prepare(); 
     mediaPlayer.init(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

我不知道是不是隻有這樣,才能得到那工作是使用ExoPlayer(我讀過有可能)

有什麼建議嗎?

謝謝!

回答

1

顯然,您不能使用MediaPlayer來做到這一點,但您可以使用MediaMetadataRetriever,這是自API級別10(即不久前)以來可用的。

int getBitRate(String url) { 
     final MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
     try { 
      mmr.setDataSource(url, Collections.EMPTY_MAP); 
      return Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE)); 
     } catch (NumberFormatException e) { 
      return 0; 
     } finally { 
      mmr.release(); 
     } 
    } 

缺點這可以是你將做出額外的HTTP請求獲取元數據(僅一個RTT,如果你是從URI流;如果您是從文件描述符它讀可能會更嚴重)。希望沒有什麼大不了的。

相關問題