【问题标题】:Getting videos(non-local) from the Google Photos App从 Google 相册应用获取视频(非本地)
【发布时间】: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 可能会告诉我实际文件的大小。

Referred to this post on SO.

我检查了各种帖子,并认为我必须通过内容提供程序获取视频的 InputStream,保存文件并使用该文件。但是,选择图像文件可以正常工作,但对于视频则不行。

所以,要将流复制到文件中,我有这段代码。

InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path));

最后写入一个临时文件。该文件已创建,但似乎格式不正确。 VLC 播放文件,但始终只显示第一帧。

如果我从上面给出的 URI 的最后部分获取 URL,并尝试在浏览器上查看它,它会下载一个 GIF 文件。我猜这就是问题所在。但是我不知道如何获取视频的mpeg格式。

有人有过同样的经历吗?

【问题讨论】:

    标签: android android-intent google-plus android-photos google-photos


    【解决方案1】:

    终于找到了解决问题的办法。这适用于图像和视频。

    参考了这个视频:

    DevBytes:Android 4.4 存储访问框架:客户端

    https://www.youtube.com/watch?v=UFj9AEz0DHQ

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("图片/*"); 开始活动(意图);

    获取 Uri,然后像这样访问并保存文件:

    ParcelFileDescriptor parcelFileDescriptor = context.getContentResolver() .openFileDescriptor(Uri.parse(path),"r"); 文件描述符 fileDescriptor = parcelFileDescriptor.getFileDescriptor(); InputStream inputStream = new FileInputStream(fileDescriptor); BufferedInputStream reader = new BufferedInputStream(inputStream); // 为要保存到的文件创建输出流 BufferedOutputStream outStream = 新的 BufferedOutputStream( 新文件输出流(文件路径)); 字节[] buf = 新字节[2048]; 国际化; 而 ((len = reader.read(buf)) > 0) { outStream.write(buf, 0, len); }

    由于某种原因,不使用 ParcelFileDescriptor 获取输入流是行不通的。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多