我有一套mp4文件需要加载到SD卡上并在我的Android应用程序中读取。
应用程序需要能够按类别搜索视频,因此我的计划是在加载它们之前在mp4元数据中添加一些类别信息(可能在“说明”字段中),然后使用ManagedQuery
在MediaStore.Video.Media.EXTERNAL_CONTENT_URI
找到它们。
我已使用Adobe Bridge更新了“description”字段,但是当我查看搜索返回的标记时,“description”字段始终为null。很明显,当Android查看视频文件时,我写入mp4文件的数据没有被提取。
我是否应该采用另一种方式编写/搜索视频元数据?
答案 0 :(得分:0)
您应该查看MediaStore.Video.VideoColumns.DESCRIPTION
。
您可以像查询任何其他内容提供商一样查询MediaStore.Video.Media.EXTERNAL_CONTENT_URI
:http://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>