【发布时间】:2013-12-13 04:59:12
【问题描述】:
使用 Google 照片应用,我正在尝试选择一个未缓存在设备上的视频。
我正在使用 ACTION_GET_CONTENT 意图来启动选项对话框,然后我从那里选择 Google 相册应用。
在选择本地视频时,它会以这种形式返回一个 Uri。
content://media/external/video/media/6708
然后,我查询内容提供程序以检索实际文件位置,然后从那里继续。文件位置如下所示。
/storage/emulated/0/WhatsApp/Media/WhatsApp 视频/VID-20131102-WA0000.mp4
现在,当我选择在线视频时,即:我的设备上还没有视频,需要下载才能使用,返回的 Uri 如下所示:
content://com.google.android.apps.photos.content/1/https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d
现在,有了这个,没有记录的 ContentProvider 可以帮助我获得该视频的实际链接。即使我进行查询,除了 DISPLAY_NAME 和 SIZE 列之外,它什么也不返回。
DISPLAY_NAME 包含 video.mpeg(不同视频的显示名称相同)
SIZE 可能会告诉我实际文件的大小。
我检查了各种帖子,并认为我必须通过内容提供程序获取视频的 InputStream,保存文件并使用该文件。但是,选择图像文件可以正常工作,但对于视频则不行。
所以,要将流复制到文件中,我有这段代码。
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path));最后写入一个临时文件。该文件已创建,但似乎格式不正确。 VLC 播放文件,但始终只显示第一帧。
如果我从上面给出的 URI 的最后部分获取 URL,并尝试在浏览器上查看它,它会下载一个 GIF 文件。我猜这就是问题所在。但是我不知道如何获取视频的mpeg格式。
有人有过同样的经历吗?
【问题讨论】:
标签: android android-intent google-plus android-photos google-photos