2

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 を使用していますか?

4

1 に答える 1

3

個々の章を取得するには、の AssetURL プロパティAVAssetからを作成する必要があります。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それぞれがCMTimeRangeおよび の配列を含む の配列ですAVMetadataItem。それぞれAVMetadataItemがメタデータの一部を保持します (章のタイトル、章のアートワークなど)。

ドキュメントによると、サポートされている唯一のキーはAVMetadataCommonKeyArtwork.

于 2012-05-20T04:01:45.663 に答える