本文介绍了使用MPMediaItemPropertyAssetURL在AVAudioPlayer中无法播放MPMediaItem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码,用于查找和播放MPMediaItem:
I have this code, to find and play a MPMediaItem:
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:self.persistentIDOfSongToPlay
forProperty:MPMediaItemPropertyPersistentID
comparisonType:MPMediaPredicateComparisonContains];
NSSet *predicateSet = [NSSet setWithObject:predicate];
MPMediaQuery *searchQuery = [[MPMediaQuery alloc] initWithFilterPredicates:predicateSet];
NSArray *queryResults = [searchQuery items];
NSLog(@"count: %i", queryResults.count);
MPMediaItem *item = [queryResults objectAtIndex:0];
NSLog(@"item: %@", item);
NSURL *itemURL = [item valueForProperty:MPMediaItemPropertyAssetURL];
NSLog(@"url: %@", itemURL);
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:itemURL error:&error];
[audioPlayer prepareToPlay];
[audioPlayer play];
NSLog(@"error: %@", error);
我的日志:
count: 1
item: <MPConcreteMediaItem: 0x200b0870> 12385304089059716916
url: ipod-library://item/item.m4a?id=-6061439984649834700
error: (null)
但是音频无法播放.我打开了音量,另一个AVAudioPlayer执行了不同的功能,稍后再播放其音频.
But the audio doesn't play. I have volume on, and another AVAudioPlayer, performing a different function, plays its audio fine later on.
推荐答案
必须将AVAudioPlayer
声明为属性或ivar,以便在方法完成后仍然存在.
The AVAudioPlayer
must be declared as a property or ivar so it survives after the method is finalized.
这篇关于使用MPMediaItemPropertyAssetURL在AVAudioPlayer中无法播放MPMediaItem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!