我正在使用MPMediaItems做一些工作,特别是我正在尝试获取用户设备上的视频列表。现在,iTunes中的视频将被锁定,因此无法从第三方应用程序播放,但用户添加的视频(如家庭电影)是可以播放的,甚至iTunes中的这些视频也可以查询和显示其元信息。
但我被绊倒的地方是:我似乎找不到这些文件的任何视频特定元信息?
MPMediaItem类引用有一长串可以访问的属性,但它们大多是特定于音频的。像MPMediaItemPropertyAlbumTitle
或MPMediaItemPropertyComposer
。甚至还有一个播客特定属性的部分,但我似乎找不到像"季号"、"集号"或"节目标题"这样的内容。这些信息显然是由iTunes存储的,并由内部的视频应用程序显示,但我自己找不到任何方法来获取。
这些是我在类引用中唯一能找到的字段:
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值获得,但可以通过任何其他方式访问吗?是否有一种访问这些信息的方法,像这样的答案,我不完全理解,但似乎很有希望,或者开发者完全不可能看到视频来自哪个节目/季?
编辑:这一点最近变得尤为重要,因为最新版本的iTunes在编辑视频文件时甚至不再显示音频特定字段(如"专辑"或"艺术家")。在iTunes中的视频文件上点击"获取信息",现在只有显示特定于视频的字段,这意味着更新后输入的视频现在似乎在第三方应用程序中完全无法排序。
除非有人有主意?
第2版:在我的研究中,我遇到了以前从未听说过的AVMetadataItem
类,特别是AVMetadataiTunesMetadataKey
选项(类参考)。它们似乎不包括节目、季节或剧集信息,但它们确实有一些特定于视频的字段,如AVMetadataiTunesMetadataKeyDirector
。这个类的其他用途,或者像AVAsset这样的其他视频相关类,是否可以迂回访问我要查找的信息?
第3版:当我发现iTunes Library Framework时,我满怀希望,它包括一个ITLibMediaItemVideoInfo
类,这正是我想要的。然而,它似乎只是Mac,我需要它在iOS上。。。有人有机会在iOS上访问这些信息吗?
这可能会帮助您准确地了解您在寻找什么:https://code.google.com/p/subler/source/browse/trunk/mp4v2+包装/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",
...