amlogic播放器 oninfo时怎样获取缓冲速度Mbps
时间: 2023-08-09 22:06:11 浏览: 172
在 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接口
```java
public class MyOnInfoListener implements MediaPlayer.OnInfoListener {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_UPDATE) {
// 处理缓冲速度
int speed = extra;
Log.d("MyOnInfoListener", "Buffering speed: " + speed + "Mbps");
}
return true;
}
}
```
2. 设置OnInfoListener
```java
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnInfoListener(new MyOnInfoListener());
```
在这个例子中,当MediaPlayer缓冲时,会触发onInfo回调函数,并通过参数what判断是否是缓冲更新事件。如果是,就可以通过extra参数获取缓冲速度,然后进行处理。
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` 这个事件,所以我们需要自己实现缓冲速度的计算逻辑。
阅读全文