mediaplayer中通过oninfo计算缓冲速率Mbps
时间: 2023-11-28 18:51:36 浏览: 37
在 Android MediaPlayer 中,可以通过监听 `onInfo` 回调函数中的 `MEDIA_INFO_BUFFERING_UPDATE` 事件来获取正在缓冲的进度百分比和缓冲速率。具体地,可以在 `onInfo` 回调函数中计算缓冲速率(Mbps)的代码如下:
```java
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_UPDATE) {
int bufferPercent = extra; // 缓冲进度百分比
long duration = mp.getDuration(); // 音频或视频总时长
long bufferedDuration = duration * bufferPercent / 100; // 已缓冲的时长
long bufferedBytes = bufferedDuration * bitrate / 8; // 已缓冲的字节数
long downloadTime = System.currentTimeMillis() - startTime; // 下载时间(毫秒)
double downloadSpeed = bufferedBytes / (downloadTime / 1000.0) / 1000000.0; // 缓冲速率(Mbps)
Log.d(TAG, "Buffering rate: " + downloadSpeed + " Mbps");
}
return true;
}
```
其中,`bitrate` 是音频或视频的比特率(单位:bps),可以通过调用 `mp.getTrackInfo()` 方法来获取。需要注意的是,这种方法只能估算当前的缓冲速率,因为网络状况可能会发生变化,从而导致缓冲速率的变化。