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