Android - можно ли получить доступ к мультимедийным файлам локально после их просмотра с помощью VideoView и Mediacontroller?
Я использую MediaController
и VideoView
показать видео, которые я транслирую по HTTP из Amazon S3.
Я хочу сделать видеофайлы доступными в автономном режиме после того, как они были просмотрены в первый раз. Потоковая передача работает хорошо, мой вопрос в том, где Android сохраняет видеофайлы и действительно ли они доступны после того, как видео полностью просмотрено (и, следовательно, должно быть полностью загружено).
Документация обоих классов не предоставляет никаких подробностей по этому вопросу ни в том случае, если файлы мультимедиа хранятся, ни где они будут храниться. Такое ощущение, что это будет отличной задачей для MediaController
, но на самом деле нигде я не нашел никаких намеков на это.
Мое решение теперь будет использовать экземпляр DownloadManager
, то есть загрузка файла параллельно во время потоковой передачи, но это выглядит очень, очень неправильно!
1 ответ
VideoView
в Android использует MediaPlayer
API, который в случае удаленного мультимедиа будет транслировать его и декодировать / отображать на экране на лету.
MediaPlayer
не собирается ничего хранить на флэш-памяти устройства, скорее, он будет использовать циклический буфер в памяти, который используется в качестве кеша предварительной обработки. Более подробная информация об этом доступна в исходном коде реализации NuCacheSource2.
Теперь, что вы можете сделать, чтобы решить вашу проблему, это написать прокси, который будет работать на вашем устройстве или в другом месте, где вы хотите сохранить носитель. При загрузке удаленного носителя, он сможет сохранить его в файловой системе при пересылке данных на Android. MediaPlayer
, В этом случае вам нужно будет предоставить MediaPlayer
с URL-адресом, указывающим на ваш прокси, а не на исходное местоположение, в котором находится удаленный носитель.