2011-09-29 89 views
1

我有一组mp4文件,需要将其加载到SD卡上并在我的Android应用程序中阅读。通过元数据搜索mp4视频的Android应用程序

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

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

我还有另外一种方法来编写/搜索视频元数据吗?

回答

0

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

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

+0

我已经看过那场,但结果总是回来空。我想这里的另一个问题是如何在应用程序加载之前将数据写入MP4字段,以便在MediaStore.Video.VideoColumns.DESCRIPTION字段中获取数据? – user817851

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 fro米命令行:

./metaedit <file.mp4> 

了解更多关于它:http://jcodec.org/docs/working_with_mp4_metadata.html