如何检查MPMediaItem的MPMediaType只是音频? [英] How do I check an MPMediaItem for MPMediaType of just audio?
问题描述
我希望我需要进行逐位比较,但我不清楚如何在Objective-C语法中完成。 MPMediaType的枚举定义如下。
I expect I need to do a bitwise comparison but I am unclear on how that is done in Objective-C syntax. The enum definition of MPMediaType is below.
我需要做的是确保MPMediaItem根本不是视频,因为AVAssetReader会阻塞视频文件,尽管我用MPMediaTypeAnyAudio过滤掉了媒体查询。
What I need to do is ensure the MPMediaItem is not video at all because AVAssetReader is choking on video files despite filtering to MPMediaTypeAnyAudio with my media query.
如何确保MPMediaItem是唯一的音频类型之一?
How can I ensure the MPMediaItem is one of the only audio types?
enum {
// audio
MPMediaTypeMusic = 1 << 0,
MPMediaTypePodcast = 1 << 1,
MPMediaTypeAudioBook = 1 << 2,
MPMediaTypeAudioITunesU = 1 << 3, // available in iOS 5.0
MPMediaTypeAnyAudio = 0x00ff,
// video (available in iOS 5.0)
MPMediaTypeMovie = 1 << 8,
MPMediaTypeTVShow = 1 << 9,
MPMediaTypeVideoPodcast = 1 << 10,
MPMediaTypeMusicVideo = 1 << 11,
MPMediaTypeVideoITunesU = 1 << 12,
MPMediaTypeAnyVideo = 0xff00,
MPMediaTypeAny = ~0
};
typedef NSInteger MPMediaType;
推荐答案
要从音乐库中检索所有音乐曲目,尝试:
To retrieve all the music tracks from the music library, try:
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeMusic] forProperty:MPMediaItemPropertyMediaType];
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:predicate];
NSArray *items = [query items];
检索音乐,有声读物和播客:
To retrieve music, audio books and podcasts:
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue [NSNumber numberWithInteger:MPMediaTypeMusic | MPMediaTypePodcast | MPMediaTypeAudioBook] forProperty:MPMediaItemPropertyMediaType comparisonType:MPMediaPredicateComparisonContains];
这篇关于如何检查MPMediaItem的MPMediaType只是音频?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!