如何获得MPMediaItem(有声读物)个别章节
我知道我可以从iPod库中获得所有的有声读物:
MPMediaPropertyPredicate *abPredicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeAudioBook] forProperty:MPMediaItemPropertyMediaType]; MPMediaQuery *abQuery = [[MPMediaQuery alloc] init]; [abQuery addFilterPredicate:abPredicate]; [abQuery setGroupingType:MPMediaGroupingAlbum]; NSArray *books = [abQuery collections];
我可以通过使用这个获得每本书的部分/文件:
[book items];
我无法弄清楚如何获得构成每个部分的单独章节。
我知道你可以在iPod应用程序中看到这一点,通过点击右上angular的“轨道”button,同时玩一本书。 这会翻转玩家并显示章节列表。
是苹果使用私人API来得到这个?
要获得单个章节,您需要从MPMediaItem
的AssetURL属性创build一个AVAsset
。
NSURL *assetURL = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:assetURL options:nil]; NSArray *locales = [asset availableChapterLocales]; NSArray *chapters = [asset chapterMetadataGroupsWithTitleLocale:locale containingItemsWithCommonKeys:[NSArray arrayWithObject:AVMetadataCommonKeyArtwork]];
获取URL并创build资产,检查该章节的可用区域设置,并从资产中获取章节。 结果是一个AVTimedMetadataGroup
数组,每个数组包含一个CMTimeRange
和一个AVMetadataItem
数组。 每个AVMetadataItem
包含一段元数据(例如章节标题,章节graphics)。
根据文档唯一支持的关键是AVMetadataCommonKeyArtwork
。