随着谷歌照片应用程序,我正在尝试选择一个未缓存在设备上的视频。
我正在使用ACTION_获取_内容意图,启动选项对话框,然后从那里我选择 Google Photos 应用程序。
选择本地视频时,它会返回这种形式的 Uri。
内容://媒体/外部/视频/媒体/6708
然后,我查询内容提供程序以检索实际文件位置,然后从那里继续。文件位置如下所示。
/存储/模拟/0/WhatsApp/媒体/WhatsApp
视频/VID-20131102-WA0000.mp4
现在,当我选择一个在线视频,即:我的设备上尚不可用的视频,需要下载才能使用时,返回的 Uri 如下所示:
内容://com.google.android.apps.photos.content/1/https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d
现在,没有记录的 ContentProvider 可以帮助我获取该视频的实际链接。即使我执行查询,除了 DISPLAY_NAME 和 SIZE 列之外,它不会返回任何内容。
显示名称包含 video.mpeg (不同视频的显示名称相同)
SIZE可能告诉我实际文件的大小。
参考了这篇文章。 https://stackoverflow.com/questions/19805966/download-image-from-new-google-plus-photos-application
我检查了各种帖子,并认为我必须通过内容提供商获取视频的 InputStream,保存文件并使用该文件。然而,选择图像文件效果很好,但对于视频文件则不然。
因此,为了将流复制到文件,我有这段代码。
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path));
最后写入临时文件。文件已创建,但格式似乎不正确。 VLC 播放文件,但自始至终仅显示第一帧。
如果我从上面给出的 URI 的最后部分获取 URL,并尝试在浏览器上查看它,它会下载一个 GIF 文件。我猜这就是问题所在。但我不知道如何获得mpeg视频的格式。
有人有过同样的经历吗?