我正在使用MediaPlayer
在Android中开发流式视频应用。问题是我需要显示当前的比特率,但是我还没有找到有关如何获得它的任何有效建议?
以下是我设置视频网址的方式:
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(VIDEO_PATH);
mediaPlayer.prepare();
mediaPlayer.init();
} catch (IOException e) {
e.printStackTrace();
}
我不知道实现这项工作的唯一方法是使用ExoPlayer
(我可能已经阅读过了)
有什么建议吗?
谢谢!
答案 0 :(得分:2)
显然你无法使用MediaPlayer
执行此操作,但可以使用自{API级别10'以来可用的MediaMetadataRetriever
,即很久以前。
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请求以获取元数据(如果您是从URI流式传输,则只有RTT;如果您正在从文件中读取描述符它可能更严重)。希望没什么大不了的。