2012-02-19 6 views
2

Я знаю, что я могу получить все аудиокниги из библиотеки IPod с:Как получить MPMediaItem (аудиокнига) отдельные главы

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, нажав кнопку «Track» в верхнем правом углу во время игры в книгу. Это переворачивает плеер и показывает список глав.

Является ли яблоко использующим частный API для его получения?

+0

Вы когда-нибудь задумывались над этим? – sooper

ответ

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

Получить URL и создать актив, проверить имеющиеся локали для главы, и получить главы из актива. Результатом является массив из AVTimedMetadataGroup s, каждый из которых содержит CMTimeRange и массив AVMetadataItem s. Каждый AVMetadataItem содержит кусок метаданных (например, заголовок главы, художественное произведение главы).

В соответствии с documentation единственным поддерживаемым ключом является AVMetadataCommonKeyArtwork.

 Смежные вопросы

  • Нет связанных вопросов^_^