amlogic播放器 oninfo时怎样获取缓冲速度Mbps
时间: 2023-08-09 12:06:11 浏览: 50
在 Amlogic 播放器中,可以通过 OnInfo 回调函数获取缓冲速度信息。具体的方法可以参考以下代码:
```
void AmlogicPlayer::OnInfo(int64_t pts, int64_t pos, int64_t cache_size) {
// 获取缓冲速度
float speed = 0.0f;
if (last_cache_pos_ > 0) {
speed = (pos - last_cache_pos_) / ((pts - last_cache_pts_) / 1000.0f / 1000.0f);
}
// 将速度转换为 Mbps
speed = speed * 8 / 1024 / 1024;
// 输出缓冲速度信息
printf("Cache speed: %.2f Mbps\n", speed);
last_cache_pts_ = pts;
last_cache_pos_ = pos;
}
```
在这段代码中,通过在 OnInfo 回调函数中记录上一次的播放位置和时间戳,计算出当前的缓冲速度,并将其转换为 Mbps。最后输出缓冲速度信息即可。
相关问题
amlogic播放器 使用onInfo(MediaPlayer mp, int what, int extra)获取缓冲速度Mbps
在使用Amlogic播放器时,可以通过实现MediaPlayer.OnInfoListener接口并重写onInfo方法来获取缓冲速度Mbps。具体实现步骤如下:
1. 实现MediaPlayer.OnInfoListener接口,并重写onInfo方法。
```
public class MyInfoListener implements MediaPlayer.OnInfoListener {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
switch (what) {
case MediaPlayer.MEDIA_INFO_BUFFERING_START:
// 缓冲开始
break;
case MediaPlayer.MEDIA_INFO_BUFFERING_END:
// 缓冲结束
break;
case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:
// 获取缓冲速度Mbps
float speedMbps = extra / 1024.0f / 1024.0f;
Log.d("MyInfoListener", "缓冲速度:" + speedMbps + "Mbps");
break;
}
return true;
}
}
```
2. 设置OnInfoListener监听器。
```
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnInfoListener(new MyInfoListener());
```
通过这种方式,可以获取Amlogic播放器的缓冲速度Mbps,并进行相关的处理。
amlogic播放器 使用onInfo(MediaPlayer mp, int what, int extra)获取缓冲速度Mbps,没有MEDIA_INFO_BUFFERING_UPDATE
如果您使用的是 Amlogic 播放器,并且想要获取缓冲速度,可以尝试使用以下代码:
```java
private int mLastPercent = 0;
private long mLastTime = 0;
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
// 计算缓冲速度
long currentTime = System.currentTimeMillis();
if (percent > mLastPercent) {
long deltaTime = currentTime - mLastTime;
if (deltaTime > 0) {
int speed = (int) ((percent - mLastPercent) * 1000 / deltaTime);
Log.d("AmlogicPlayer", "Buffering speed: " + speed + " Kbps");
}
}
mLastPercent = percent;
mLastTime = currentTime;
}
```
在 `onBufferingUpdate` 方法中,我们可以通过计算两次缓冲百分比之间的时间差,来估算缓冲速度。因为 Amlogic 播放器没有提供 `MEDIA_INFO_BUFFERING_UPDATE` 这个事件,所以我们需要自己实现缓冲速度的计算逻辑。