抱歉,我将该问题发布为错误的用户。这是我尝试过的答案:
来自 android.widget 和 io.vov.vitamio.widget(vitamio - 播放大多数视频格式)包内部的 VideoView(android 默认 - 只播放几种视频格式)具有相同的结构。在两者中,您都可以注册一个 OnBufferingUdateListener,它以百分比返回缓冲区状态:
videoview.setOnBufferingUpdateListener(new io.vov.vitamio.MediaPlayer.OnBufferingUpdateListener() {
public void onBufferingUpdate(io.vov.vitamio.MediaPlayer mp, int i) {
Log.v(TAG, "Buffer percentage done: "+i);
}
});
或使用 android 默认的 VideoView:
videoview.setOnBufferingUpdateListener(new android.media.MediaPlayer.OnBufferingUpdateListener() {
public void onBufferingUpdate(android.media.MediaPlayer mp, int i) {
Log.v(TAG, "Buffer percentage done: "+i);
}
});
如果我使用 android.widget.VideoView 缓冲区百分比会缓慢增加,直到达到 100% - 视频文件已完全下载。当我按下暂停按钮时,它会继续更新 BufferingUpdate。
当我使用 io.vov.vitamio.widget.VideoView 时,百分比会在几秒钟内达到 100%。然后视频开始,OnBufferingUpdateListener 再也不会被调用(当我调用 getBufferPercentage 时,它总是在 99%。这似乎是原因)。正如我所说:当我按下暂停按钮时,它似乎停止了缓冲。
我认为缓冲在 vitamio 中的作用不同。但那是废话。特别是当我从网络流式传输视频并且视频数据速率高于下载速度时,我需要通过按暂停来预缓冲视频并等待它下载足够的数据以顺利观看。希望你明白我的意思。谢谢你