【问题标题】:How to get file path of shared storage folder in Android 10 and above?Android 10及以上系统如何获取共享存储文件夹的文件路径?
【发布时间】:2021-07-09 12:17:41
【问题描述】:

我们正在我们的应用程序中集成范围存储,我们正在 sahred 存储中读取和写入视频文件,例如 Environment.DIRECTORY_MOVIES 文件夹(共享存储电影目录)它按预期工作,但我们需要在视频中编写自定义元数据才能做到这一点我们正在使用org.mp4parser:isoparser。要读取和写入元数据,此库需要在作用域存储之前使用文件对象,我们可以使用 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) 获取绝对路径,现在它已被弃用,还有其他方法可以在作用域存储中获取文件路径吗?

public static String readVideoMetadata(File videoFile) throws IOException {
    
        if (!videoFile.canRead()) {
            throw new IllegalStateException("No read permissions to file " + videoFile.getAbsolutePath());
        }
        if(!isImageFile(videoFile)) {
            try {
                IsoFile isoFile = new IsoFile(videoFile);
                if (null != Path.getPath(isoFile, "moov[0]/udta[0]/meta[0]/ilst/©cmt")) {
                    AppleCommentBox nam = Path.getPath(isoFile, "moov[0]/udta[0]/meta[0]/ilst/©cmt");
                    String xml = nam.getValue();
                    isoFile.close();
                    return xml;
                }
            } catch (OutOfMemoryError | Exception e) {
                e.printStackTrace();
            }
        }else{
            ExifInterface exifInterface=new ExifInterface(videoFile);
            String metaData= exifInterface.getAttribute(ExifInterface.TAG_USER_COMMENT);
            if(metaData!=null){
                return metaData;
            }
        }
    
        return "";
    }

【问题讨论】:

标签: android scoped-storage mp4parser


【解决方案1】:

Use FFMPEG Android library

您可以使用以下代码从媒体 URI 获取文件路径

Uri safUri = intent.getData();
String inputVideoPath = FFmpegKitConfig.getSafParameterForRead(requireContext(), safUri);

您可以使用以下功能读取媒体信息

 MediaInformationSession mediaInformation = FFprobeKit.getMediaInformation("<file path or uri>");
mediaInformation.getMediaInformation();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2023-03-18
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多