如何获得MPMediaItem(有声读物)的各个章节

时间:2012-02-19 01:48:14

标签: ios mpmediaitem mpmediaquery

我知道我可以通过以下方式从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应用程序中看到这一点。这会翻转玩家并显示章节列表。

Apple是否使用私有API来获取此信息?

1 个答案:

答案 0 :(得分:3)

要获取单个章节,您需要从AVAsset的AssetURL属性创建MPMediaItem

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]];

获取网址并创建资产,检查章节的可用区域设置,并从资产中获取章节。结果是AVTimedMetadataGroup个数组,每个数组包含CMTimeRangeAVMetadataItem个数组。每个AVMetadataItem都包含一段元数据(例如章节标题,章节图片)。

根据documentation,唯一支持的密钥是AVMetadataCommonKeyArtwork