Как получить отдельные главы MPMediaItem (аудиокниги) - PullRequest
2 голосов
/ 19 февраля 2012

Я знаю, что могу получить все аудиокниги из библиотеки 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 Ответ

3 голосов
/ 20 мая 2012

Чтобы получить отдельные главы, вам необходимо создать AVAsset из свойства MPMediaItem AssetURL.

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-адрес и создать ресурс, проверить доступные локали для главыи получить главы из актива.В результате получается массив AVTimedMetadataGroup с, каждый из которых содержит CMTimeRange и массив AVMetadataItem с.Каждый AVMetadataItem содержит часть метаданных (например, заголовок главы, оформление главы).

Согласно документации единственным поддерживаемым ключом является AVMetadataCommonKeyArtwork.

...