用于按元数据搜索mp4视频的Android应用

时间:2011-09-29 17:50:43

标签: android metadata mp4

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

应用程序需要能够按类别搜索视频,因此我的计划是在加载它们之前在mp4元数据中添加一些类别信息(可能在“说明”字段中),然后使用ManagedQueryMediaStore.Video.Media.EXTERNAL_CONTENT_URI找到它们。

我已使用Adobe Bridge更新了“description”字段,但是当我查看搜索返回的标记时,“description”字段始终为null。很明显,当Android查看视频文件时,我写入mp4文件的数据没有被提取。

我是否应该采用另一种方式编写/搜索视频元数据?

2 个答案:

答案 0 :(得分:0)

您应该查看MediaStore.Video.VideoColumns.DESCRIPTION

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

答案 1 :(得分:0)

您可以使用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));
}

OR命令行:

./metaedit <file.mp4>

详细了解:http://jcodec.org/docs/working_with_mp4_metadata.html