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

时间:2017-06-02 09:29:21

标签: java android android-mediaplayer

我正在使用MediaPlayer在Android中开发流式视频应用。问题是我需要显示当前的比特率,但是我还没有找到有关如何获得它的任何有效建议?

以下是我设置视频网址的方式:

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

我不知道实现这项工作的唯一方法是使用ExoPlayer(我可能已经阅读过了)

有什么建议吗?

谢谢!

1 个答案:

答案 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;如果您正在从文件中读取描述符它可能更严重)。希望没什么大不了的。