Как мы можем воспроизвести/буферизировать всего несколько минут видео на Android?

Мне нужно воспроизвести первые 2 минуты видео. Используя onBufferingUpdate(), я получаю буферизованный процент. Но к тому времени, когда вызывается onPrepared, я получаю буферизованный% как 40. Это более 2 минут видео. (Учитывая, что у меня есть видео 30 минут)

Есть ли способ воспроизвести / буферизовать видео всего за 2 минуты?

Спасибо.


person nibz    schedule 04.09.2014    source источник


Ответы (1)


Размер буфера предварительно установлен в прошивке. Все, что вы можете сделать, это следить за тем, насколько заполнен буфер, и даже это только в процентах. Размер установлен в frameworks/base/media/libstagefright/include/NuCachedSource2.h

ознакомьтесь с этим отчетом об ошибке на code.google.com.


Редактировать: вы можете получить текущую позицию видео, используя mVideoView.getCurrentPosition();, которая вернет вам текущую позицию в миллисекундах, и теперь вам придется использовать AsynTask

private class myAsync extends AsyncTask<Void, Integer, Void>
{
    @Override
    protected Void doInBackground(Void... params) {
        mVideoView.start();            
        do {            
            try {
                if(mVideoView.getCurrentPosition() == TimeUnit.MINUTES.toMillis(yourMinutes)){
                    mVideoView.stop();
                }
            } catch (Exception e) {
            }
        } while (mVideoView.getCurrentPosition() != mVideoView.getDuration());
        return null;
    }

Вы можете запустить AsyncTask с помощью оператора new myAsync().execute();.

person Sagar Pilkhwal    schedule 04.09.2014
comment
Если это так, то можно ли играть только 2 или, скажем, 10 минут, если я игнорирую буфер? - person nibz; 04.09.2014