【问题标题】:Android app to search mp4 videos by metadata通过元数据搜索 mp4 视频的 Android 应用
【发布时间】:2011-09-29 17:50:42
【问题描述】:

我有一组 mp4 文件需要加载到 SD 卡上并在我的 Android 应用程序中读取。

该应用需要能够按类别搜索视频,所以我的计划是在加载它们之前在 mp4 元数据中添加一些类别信息(可能在“描述”字段中),然后在MediaStore.Video.Media.EXTERNAL_CONTENT_URI 找到他们。

我已使用 Adob​​e Bridge 更新了“描述”字段,但是当我查看搜索返回的标签时,“描述”字段始终为空。显然,当 Android 查看视频文件时,我正在写入 mp4 文件的数据没有被拾取。

还有其他我应该编写/搜索视频元数据的方法吗?

【问题讨论】:

    标签: android metadata mp4


    【解决方案1】:

    你应该看看MediaStore.Video.VideoColumns.DESCRIPTION

    您可以像查询任何其他内容提供商一样查询MediaStore.Video.Media.EXTERNAL_CONTENT_URIhttp://developer.android.com/guide/topics/providers/content-providers.html#querying

    【讨论】:

    • 我查看了该字段,但结果总是返回 null。我想这里的另一个问题是如何在应用加载之前将数据写入 MP4 字段,以便在 MediaStore.Video.VideoColumns.DESCRIPTION 字段中提取数据?
    【解决方案2】:

    您可以使用 JCodec 的 MetadataEditor 类在 MP4 文件中添加/删除/查找元数据字段。

    如果您想将元数据字段添加到 MP4 文件,您可以使用:

    MetadataEditor mediaMeta = MetadataEditor.createFrom(new
        File("file.mp4"));
    Map<String, MetaValue> meta = mediaMeta.getKeyedMeta();
    meta.put("com.android.capture.fps", MetaValue.createFloat(25.));
    mediaMeta.save(false); // fast mode is off
    

    也可以使用 CLI 工具 (MetadataEditorMain) 从命令行执行相同操作:

    ./metaedit -sk com.android.capture.fps,float=25.0 file.mp4
    

    在 Java 代码中,您可以像这样获取元数据列表:

    MetadataEditor mediaMeta = MetadataEditor.createFrom(new
        File("file.mp4"));
    Map<String, MetaValue> meta = mediaMeta.getKeyedMeta();
    for (String key : meta.keySet()) {
        System.out.println(key + ": " + meta.get(key));
    }
    

    或从命令行:

    ./metaedit <file.mp4>
    

    了解更多信息:http://jcodec.org/docs/working_with_mp4_metadata.html

    【讨论】:

      猜你喜欢
      • 2016-09-02
      • 2014-03-17
      • 2021-08-13
      • 2012-10-11
      • 2013-09-24
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多