如何使用MediaPlayer获取流媒体比特率?

问题描述:

我正在用MediaPlayer开发Android版流视频应用程序。问题是我需要显示当前的比特率,但我还没有找到任何有效的建议来了解如何获得它?如何使用MediaPlayer获取流媒体比特率?

下面是我如何设置视频网址播放:

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

我不知道是不是只有这样,才能得到那工作是使用ExoPlayer(我读过有可能)

有什么建议吗?

谢谢!

显然,您不能使用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流;如果您是从文件描述符它读可能会更严重)。希望没有什么大不了的。