问题:
如何获取应用程序私有文件的视频缩略图?具体来说,有没有办法直接从 .mpeg 文件中提取视频帧?
背景:
- 我的应用程序包括一个可以录制视频的相机。
- 出于产品原因,视频文件最初是在应用程序的私有数据目录中以私有模式创建和写入的,使其对应用程序私有。这是通过以下方式完成的:
Context#openFileOutput(fileName, Context.MODE_PRIVATE)
- 典型的文件路径如下所示:/data/data/[package.name]/files/[fileName].mp4
- 仅供参考,我已经尝试过使用Context.MODE_WORLD_READABLE
,Context.MODE_PRIVATE
但它没有帮助。 - 即使视频最终可能最终存储在外部存储中(通过将文件移动到
Environment#getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
) ,也必须在视频位于应用程序私有存储中时显示缩略图。 ThumbnailUtils.createVideoThumbnail(String, int)
将文件移动到公共目录(无论将其添加到 MediaStore)后,该文件似乎可以正常工作,但是null
当文件在内部存储中时,它会静默失败(返回)。- 注意:只要视频文件在应用程序私有存储中,它就不会添加到 MediaStore(设备库上的图像/视频内容提供程序提供)。只有将视频移至外部存储设备后,我才会将其添加到 MediaStore。这是一个与产品相关的决定,我无法绕过;除非有一种方法可以将视频添加到媒体存储中而其他应用程序不可见...我想知道是否可以将应用程序私有存储中的视频添加到媒体存储中并保持应用程序私有但获得所有免费的“服务” " 由媒体商店提供,例如缩略图生成。