Вопрос:
Как получить миниатюру видео для частного приложения? В частности, есть способ извлечь видео кадры из файла .mpeg напрямую?
История:
- Мое приложение включает камеру, которая может записывать видео.
- По соображениям продукта видеофайл сначала создается и записывается в приватном режиме в личном каталоге приложений, что делает его приватным для приложения. Это делается с помощью:
Context#openFileOutput(fileName, Context.MODE_PRIVATE)
- типичный путь к файлу выглядит следующим образом:/data/data/[package.name]/files/[fileName].mp4
- FYI Я уже пробовал использоватьContext.MODE_WORLD_READABLE
вместо этого изContext.MODE_PRIVATE
, но это не помогло. - Несмотря на то, что видео может в конечном итоге оказаться во внешнем хранилище (перемещая файл на
Environment#getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
), миниатюра должна отображаться во время видео находится в частном хранилище приложений. -
Кажется, что
ThumbnailUtils.createVideoThumbnail(String, int)
отлично работает для файла после его перемещения в общий каталог (независимо от его добавления в MediaStore), но молча завершает работу (возвращаетnull
), когда файл находится во внутреннем хранилище.- Примечание. До тех пор, пока видеофайл находится в частном хранилище приложений, он не добавляется в MediaStore (поставщик изображений/видеоконтента на ленте галереи устройства). Только после того, как видео будет перемещено во внешнее хранилище, я добавляю его в MediaStore. Это решение, связанное с продуктом, которое я не могу совершить кругосветным путем; если нет способа добавить видео в медиа-магазин, не видя его в других приложениях... Интересно, можно ли добавить в хранилище мультимедиа видео в приложении-частном хранилище и останется частным приложением, но получить все бесплатные "услуги" "предоставленный медиа-магазином, например, создание миниатюр.