Мне нужно быстро, в принципе, на первый взгляд, переключаться между видео в мультимедийном проигрывателе 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();
}
Есть ли "самый быстрый" способ пропустить эти видео или даже«буферизировать» их, чтобы они были в памяти и могли быть быстро восстановлены?