如何获取 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 应用程序中通过在阅读书籍时点击右上角的“曲目”按钮来看到这一点。这将翻转播放器并显示章节列表。
苹果是否使用私有 API 来获取此内容?
I know I can get all the audiobooks from the iPod library with:
MPMediaPropertyPredicate *abPredicate =
[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeAudioBook]
forProperty:MPMediaItemPropertyMediaType];
MPMediaQuery *abQuery = [[MPMediaQuery alloc] init];
[abQuery addFilterPredicate:abPredicate];
[abQuery setGroupingType:MPMediaGroupingAlbum];
NSArray *books = [abQuery collections];
And I can get the parts/files for each book by using this:
[book items];
What I cant figure out is how to get the separate chapters that make up each part.
I know you can see this in the iPod application by tapping the "track" button in the upper right corner while playing a book. This flips the player around and shows the list of chapters.
Is apple using a private API to get this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要获取各个章节,您需要从
MPMediaItem
的 AssetURL 属性创建AVAsset
。获取 url 并创建资产,检查章节的可用区域设置,然后从资产中获取章节。结果是一个
AVTimedMetadataGroup
数组,每个数组包含一个CMTimeRange
和一个AVMetadataItem
数组。每个AVMetadataItem
都包含一段元数据(例如章节标题、章节插图)。根据 文档 唯一支持的键是
AVMetadataCommonKeyArtwork
。To get the individual chapters you need to create an
AVAsset
from theMPMediaItem
's AssetURL property.Get the url and create the asset, check the available locales for the chapter, and get the chapters from the asset. The result is an array of
AVTimedMetadataGroup
s that each contain aCMTimeRange
and an array ofAVMetadataItem
s. EachAVMetadataItem
holds a piece of metadata (e.g. chapter title, chapter artwork).According to the documentation the only supported key is the
AVMetadataCommonKeyArtwork
.