我知道可以使用AVPlayer播放iPod歌曲,但我無法弄清楚如何使用initWithContentsOfURL
以iPod歌曲URL初始化AVAudioPlayer
。當我嘗試時,初始化時AVAudioPlayer
返回NULL。使用ipod歌曲URL初始化AVAudioPlayer使用initWithContentsOfURL
我需要使用AVAudioPlayer
,因爲我需要使用它的委託方法audioPlayerDidFinishPlaying
作進一步處理時,我的應用程序在後臺(即AVAudioPlayer
委託方法如果應用程序在後臺運行audioPlayerDidFinishPlaying
被調用運行,但AVPlayer
呢不提供委託方法,所以你只能使用不在後臺運行的通知)。
以下代碼用於播放帶有AVPlayer的iPod歌曲。
- (void)viewDidLoad {
[super viewDidLoad];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
NSError *error = nil;
[session setActive:YES error:&error];
MPMediaQuery *query = [MPMediaQuery songsQuery];
NSArray *collection = [query items];
MPMediaItem *item = [collection objectAtIndex:0];
NSLog(@"%@",[item valueForProperty:MPMediaItemPropertyTitle]);
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
AVPlayer *player = [[AVPlayer alloc]initWithURL:url]; // <-- Line to Replace
[player play];
}
這很好。但是,如果我用下面的替換倒數第二行:
AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
調用initWithContentsOfURL
返回null。
有關爲什麼當我使用AVAudioPlayer
時返回NULL的任何想法,但是當我使用AVPlayer
時返回一個初始化的玩家?
根據Technical Q & A http://developer.apple.com/library/ios/#qa/qa1634/_index.html,「與initWithContentsOfURL:一起使用的URL必須是文件URL(file://),即本地路徑。」
當我獲得在我的iPod庫中的歌曲的URL,路徑爲:
的iPod庫://item/item.mp3 ID = -4017276016911605928
你會說,這我的iPod庫的路徑不被視爲「本地路徑」,或者您認爲它是initWithContentsOfURL
返回NULL的錯誤?
想到任何人?
任何解決方案?我在斯威夫特做同樣的事,但沒有運氣。 。你可以請告訴如何使上述網址作爲本地URL – 2015-07-29 07:03:33
@UsamaSadiq對不起,但正如你從下面的答案中可以看到,似乎沒有解決方案(至少沒有適用於我的)。 – JeffB6688 2015-07-31 03:21:20