【问题标题】:How to get buffering percent of VideoView on Android如何在 Android 上获取 VideoView 的缓冲百分比
【发布时间】:2012-09-05 09:59:57
【问题描述】:

我的代码如下:

Uri uri = Uri.parse(URL);
video.setVideoURI(uri);
video.start();

我使用 VideoView 播放流式视频。
该视频是一个 VideoView。
我想在 MediaPlayer 中获得像 setOnBufferingUpdateListener 这样的缓冲百分比。

MediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
        //buffering is percent
    }
});

我该怎么做?

【问题讨论】:

  • VideoView 不提供对其包装的MediaPlayer 的访问或设置用于缓冲进度的回调的方法,尽管它在内部使用两者。在我看来,您可以通过反复调用 getBufferPercentage() 来轮询值(不理想),或者使用反射来获取 MediaPlayer 实例并注册自己的侦听器(也不理想)。
  • 我添加了一个线程,每秒调用一次getBufferPercentage(),但是返回的百分比真的很奇怪。它不会继续增加,有时会减少并且永远不会超过几个单位%。相同的线程在其他 exoplayer 上工作,所以调用是正确的。

标签: android media-player android-videoview


【解决方案1】:

为您的 VideoView 实现此方法:

public abstract void onBufferingUpdate (MediaPlayer mp, int percent)

mp 是更新所属的 MediaPlayer percent 是到目前为止已缓冲或播放的内容的百分比 (0-100)。

Source

您可以在开始加载视频之前添加一个进度条,然后在此方法中不断更新它。 一旦缓冲完成(在 onPreparedListener 中),只需关闭进度条。

【讨论】:

  • 但是我不需要进度条,我只需要百分比数字。
  • 这是不正确的。在子类 VideoView 中实现 onBufferingUpdate 什么都不做。
【解决方案2】:

让您的活动实施

OnBufferingUpdateListener ...

然后你得到:

  @Override
  public void onBufferingUpdate(MediaPlayer mp, int percent) {

  }

:=) 祝你好运

【讨论】:

  • 我已经在我的活动中实现了它,但它不会再次回调。
  • 我已经在以下链接stackoverflow.com/questions/29029597/…中作为单独的问题提出了问题
  • 好的,很抱歉目前没有进入这个话题,可能有一些方法可以设置缓冲区自动播放到某个百分比。祝你好运。
  • 不,实际上我已经在该代码中为缓冲区侦听器添加了回调函数,但它没有被调用,这是我的问题......我知道在某个百分比后开始播放的方式。
猜你喜欢
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 2015-12-19
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多