当前位置: 首页 > 知识库问答 >
问题:

从内容uri获取所拍摄视频的文件

范鸿
2023-03-14

我下面有一个方法:

private String getRealPathFromUriForVideos(Uri selectedVideoUri) {
    String wholeID = DocumentsContract.getDocumentId(selectedVideoUri);
    String id = wholeID.split(":")[1];

    String[] column = { MediaStore.Video.Media.DATA };
    String sel = MediaStore.Video.Media._ID + "=?";
    Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{ id }, null);
    String filePath = "";

    int columnIndex = cursor.getColumnIndex(column[0]);
    if (cursor.moveToFirst()) {
        filePath = cursor.getString(columnIndex);
    }
    cursor.close();
    return filePath;
}

共有1个答案

东方淇
2023-03-14

这可以很好地为用户选择的视频获取文件

它可能在少数情况下起作用。一般情况下是行不通的。从action_open_document之类的东西获得的URI不必表示一个文件,更不必表示一个可以通过文件系统访问的文件,更不必表示这个脚本儿童算法允许您访问的文件。

新创建的视频的URI为:content://media/external/video/media/41

  • 使用ContentResolverOpenFileInput()获取URI
  • 表示的内容的 InputStream
  • 在您控制的某个文件上创建FileOutputStream(例如,在GetCachedir())
  • 将内容从输入流复制到输出流
  • 使用您的副本上载
  • 工作完成后删除副本

您将外部URI视为Web服务器的URL:流式传输内容。

 类似资料:
  • FFMpeg的工作速度要快得多,但仍然相当慢。 所以,我的问题是,如果有一个lib,我可以在其中执行类似以下伪代码的操作: 快速扫描视频,不看帧内的任何东西,只看标题,以找到帧的类型,并继续下一帧。 我发现如果我直接指定帧,我不会得到真正的速度差异。 除了通过API之外,FFMPEG还有什么更快的吗?

  • 我正在尝试使用MediaCodec从视频中检索所有帧,用于图像处理,我正在尝试渲染视频并从outBuffers捕获帧,但我无法从接收到的字节启动位图实例。 我试着将它呈现为一个表面或无(null),因为我注意到当你呈现为null时,outBuffers将获得呈现帧的字节。 这是代码: 任何帮助都是非常有用的

  • 我正在尝试获取内容URI的文件路径。URL如下所示:content://com.android.providers.downloads.documents/document/31 游标对象不是null,但cursor.getString(column_index)返回null。 列索引始终为0。 编辑:内容URI是从文件管理器返回的,因此它应该表示实际的文件。

  • 我正在开发一个android应用程序,我需要从应用程序中获取图像捕获,并返回捕获<code>uri < code > uri = data . get data(); 此外,我尝试从位图中获取uri,如下所示: 但仍然不起作用。 我错过了什么?谢谢!

  • 我正在尝试使用隐式意图操作_SEND将其他应用程序中的图像共享到我的应用程序中。 当从chrome浏览器共享搜索图像时,应用程序接收到一个内容URI,如下所示: 如何从这种类型的内容URI获取文件路径?所有其他应用,比如Facebook、谷歌都在这么做。我使用FileChooser获取其他类型内容URI的文件路径(例如,从Gallery)。 试着到处寻找,但没有太多帮助。有人能建议如何使用这些内容

  • 问题内容: 当我在浏览器中使用以下URL时,它将提示我下载带有JSOn内容的文本文件。 https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json (单击上面的URL查看下载的文件内容) 现在,我想创建一个php页面。我希望当我调用此php页面时,它应调用上述URL并从文件中