是否有可能获得与MPMediaItemvideo相关的元信息?

我正在做一些MPMediaItems的工作,特别是我试图得到用户设备上的video列表。 现在,来自iTunes的video将被locking,因此无法从第三方应用播放,但用户添加的video(如家庭电影)可以播放,即使是来自iTunes的用户也可以查看并显示其元信息。

但是,这里是我越来越绊倒:我似乎无法find这些文件的任何video特定元信息?

MPMediaItem类的引用有一个很长的属性列表,你可以访问,但他们大多是audio特定的。 像MPMediaItemPropertyAlbumTitleMPMediaItemPropertyComposer 。 甚至还有一个专门针对Podcast的属性,但似乎找不到像“Season Number”或“Episode Number”或“Show Title”之类的内容。 这些信息显然是由iTunes存储的,而且是由内部的video应用程序显示的,但我找不到任何方法来获取它自己。

这些是我可以在类参考中find的唯一字段: NSString *const MPMediaItemPropertyPersistentID ; // filterable NSString *const MPMediaItemPropertyAlbumPersistentID ; // filterable NSString *const MPMediaItemPropertyArtistPersistentID ; // filterable NSString *const MPMediaItemPropertyAlbumArtistPersistentID ; // filterable NSString *const MPMediaItemPropertyGenrePersistentID ; // filterable NSString *const MPMediaItemPropertyComposerPersistentID ; // filterable NSString *const MPMediaItemPropertyPodcastPersistentID ; // filterable NSString *const MPMediaItemPropertyMediaType ; // filterable NSString *const MPMediaItemPropertyTitle ; // filterable NSString *const MPMediaItemPropertyAlbumTitle ; // filterable NSString *const MPMediaItemPropertyArtist ; // filterable NSString *const MPMediaItemPropertyAlbumArtist ; // filterable NSString *const MPMediaItemPropertyGenre ; // filterable NSString *const MPMediaItemPropertyComposer ; // filterable NSString *const MPMediaItemPropertyPlaybackDuration; NSString *const MPMediaItemPropertyAlbumTrackNumber; NSString *const MPMediaItemPropertyAlbumTrackCount; NSString *const MPMediaItemPropertyDiscNumber; NSString *const MPMediaItemPropertyDiscCount; NSString *const MPMediaItemPropertyArtwork; NSString *const MPMediaItemPropertyLyrics; NSString *const MPMediaItemPropertyIsCompilation ; // filterable NSString *const MPMediaItemPropertyReleaseDate; NSString *const MPMediaItemPropertyBeatsPerMinute; NSString *const MPMediaItemPropertyComments; NSString *const MPMediaItemPropertyAssetURL; NSString *const MPMediaItemPropertyIsCloudItem ; // filterable NSString *const MPMediaItemPropertyPersistentID ; // filterable NSString *const MPMediaItemPropertyAlbumPersistentID ; // filterable NSString *const MPMediaItemPropertyArtistPersistentID ; // filterable NSString *const MPMediaItemPropertyAlbumArtistPersistentID ; // filterable NSString *const MPMediaItemPropertyGenrePersistentID ; // filterable NSString *const MPMediaItemPropertyComposerPersistentID ; // filterable NSString *const MPMediaItemPropertyPodcastPersistentID ; // filterable NSString *const MPMediaItemPropertyMediaType ; // filterable NSString *const MPMediaItemPropertyTitle ; // filterable NSString *const MPMediaItemPropertyAlbumTitle ; // filterable NSString *const MPMediaItemPropertyArtist ; // filterable NSString *const MPMediaItemPropertyAlbumArtist ; // filterable NSString *const MPMediaItemPropertyGenre ; // filterable NSString *const MPMediaItemPropertyComposer ; // filterable NSString *const MPMediaItemPropertyPlaybackDuration; NSString *const MPMediaItemPropertyAlbumTrackNumber; NSString *const MPMediaItemPropertyAlbumTrackCount; NSString *const MPMediaItemPropertyDiscNumber; NSString *const MPMediaItemPropertyDiscCount; NSString *const MPMediaItemPropertyArtwork; NSString *const MPMediaItemPropertyLyrics; NSString *const MPMediaItemPropertyIsCompilation ; // filterable NSString *const MPMediaItemPropertyReleaseDate; NSString *const MPMediaItemPropertyBeatsPerMinute; NSString *const MPMediaItemPropertyComments; NSString *const MPMediaItemPropertyAssetURL; NSString *const MPMediaItemPropertyIsCloudItem ; // filterable

我相当确信这个信息不能通过MPMediaItemProperties值获得,但是可以通过其他方式访问吗? 是否有访问这些信息的方法,比如这个答案 ,我不完全理解,但看起来很有前景,或者开发者完全不可能看到video来自哪个节目/季节。

编辑:最近变得特别重要,因为当编辑video文件时,iTunes的最新版本现在不再显示那些特定于audio的字段(如“专辑”或“艺术家”)。 现在iTunes中的video文件的“获取信息” 显示特定于video的字段,这意味着此更新之后input的video现在似乎在第三方应用程序中完全无法sorting。

除非有人有想法

编辑2:在我的研究中,我遇到了AVMetadataItem类,我从来没有听说过,特别是AVMetadataiTunesMetadataKey选项( 类参考 )。 他们似乎没有包括显示,季节或Episode信息,但他们确实有一些video特定的字段,如AVMetadataiTunesMetadataKeyDirector 。 有没有这个类的其他一些用途,或像AVAsset一些其他video相关的类,可能有迂回访问我正在寻找的信息?

编辑3:当我发现了iTunes Library Framework ,其中包括一个ITLibMediaItemVideoInfo类,这正是我所期待的。 然而,它似乎是Mac只,我需要在iOS上…任何机会有人有办法在iOS上访问此信息?

这可以帮助你正是你在找什么: https : //code.google.com/p/subler/source/browse/trunk/mp4v2+wrapper/MP42AVFImporter.m

以下是您可能感兴趣的有关AVMetadataKeySpaceiTunes的相关部分的一个亮点:

 ... @"Description", @"desc", @"Long Description", @"ldes", @"Media Kind", @"stik", @"TV Show", @"tvsh", @"TV Episode #", @"tves", @"TV Network", @"tvnn", @"TV Episode ID", @"tven", @"TV Season", @"tvsn", @"HD Video", @"hdvd", @"Gapless", @"pgap", @"Sort Name", @"sonm", @"Sort Artist", @"soar", @"Sort Album Artist", @"soaa", @"Sort Album", @"soal", @"Sort Composer", @"soco", @"Sort TV Show", @"sosn", @"Category", @"catg", @"iTunes U", @"itnu", @"Purchase Date", @"purd", ...