Хранение / буферизация файлов для быстрого доступа в MediaPlayer - Файл против FileInputStream против FileDescriptor - PullRequest
0 голосов
/ 08 февраля 2019

Мне нужно быстро, в принципе, на первый взгляд, переключаться между видео в мультимедийном проигрывателе Android.Для этого я бы хотел как можно быстрее сохранять / буферизовать видео.

В данный момент я сохраняю ArrayList.Чтобы передать этот файл в MediaPlayer, я использую FileInputStream.getFD (), чтобы получить FileDescriptor.

Я получил следующие утверждения из javadoc соответствующих классов:

  • Файл:«Абстрактное представление имен файлов и каталогов.»
  • FileInputStream: «получает входные байты из файла в файловой системе»
  • FileDescriptor: «Экземпляры класса дескриптора файла служат непрозрачнымидескриптор базовой машинно-специфической структуры, представляющей открытый файл "

С точки зрения производительности, я действительно не понимаю, какой класс будет иметь значение здесь.

Когда я переключаюсь междувидео, есть небольшая задержка.Вполне понятно.Но я хочу, чтобы эта задержка была настолько низкой, насколько это возможно.

Это суть моего кода:

mVideoStreams = SomeClass.getMyVideos();
mMediaPlayer = new MediaPlayer();

public void changeVideo(int number)
{
    mMediaPlayer.reset();

    try {
        mMediaPlayer.setDataSource(mVideoStreams.get(number).getFD());
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        mMediaPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mMediaPlayer.start();
}

Есть ли "самый быстрый" способ пропустить эти видео или даже«буферизировать» их, чтобы они были в памяти и могли быть быстро восстановлены?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...