2011-09-29 88 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