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

3

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

以下是我设置视频播放链接的方法:

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

我不知道让它工作的唯一方法是否是使用ExoPlayer(我读到可能有可能)

有什么建议吗?

谢谢!

1个回答

3

显然你不能使用 MediaPlayer 来完成这个任务,但是你可以使用自从 10 级 API 就可用的 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;如果你从文件描述符中读取,则可能更严重)。希望没有太大问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接