Iphone AVAudioPlayer,外部URL指向*.m4p

Iphone AVAudioPlayer,外部URL指向*.m4p,iphone,url,audio,avaudioplayer,Iphone,Url,Audio,Avaudioplayer,我的问题如下。我得到了这段代码,我猜是一个损坏的NSURL,因为AVAudioPlayer在初始化后为零: NSString *dummyURLString = @"http://a825.phobos.apple.com/us/r2000/005/Music/d8/a8/d2/mzi.jelhjoev.aac.p.m4p"; NSError *error; NSURL *url = [NSURL URLWithString:dummyURLString]; AVAudioPlayer *pl

我的问题如下。我得到了这段代码,我猜是一个损坏的NSURL,因为AVAudioPlayer在初始化后为零:

NSString *dummyURLString = @"http://a825.phobos.apple.com/us/r2000/005/Music/d8/a8/d2/mzi.jelhjoev.aac.p.m4p";
NSError *error;
NSURL *url = [NSURL URLWithString:dummyURLString]; 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[player play];
有什么建议这里出了什么问题

错误(&R)显示以下内容:

Error Domain=NSOSStatusErrorDomain Code=-43 "Operation could not be completed. (OSStatus error -43.)"

AVAudioPlayer仅适用于本地URL。它必须是文件URL(文件:/)


请参见

我首先尝试了此操作,但出现错误2003334207:

NSData *soundData = [NSData dataWithContentsOfURL:URL];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:soundData error:&error];
似乎AVAudioPlayer真的想要一个文件。因此,我首先将数据放入一个文件中:

NSURL *url = [NSURL URLWithString:@"http://a825.phobos.apple.com/us/r2000/005/Music/d8/a8/d2/mzi.jelhjoev.aac.p.m4p"]; 
NSData *soundData = [NSData dataWithContentsOfURL:url];
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                        NSUserDomainMask, YES) objectAtIndex:0] 
                        stringByAppendingPathComponent:@"sound.caf"];
[soundData writeToFile:filePath atomically:YES];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL
                fileURLWithPath:filePath] error:NULL];  
NSLog(@"error %@", error);

您可以使用AVAudioPlayer而不是AVAudioPlayer。AVPlayer也可以处理远程URL

非常感谢,这解决了第一步:)但在我看来,AVAudioPlayer无法播放m4p文件:(…它不会开始播放或响应任何委托方法:(尝试一下新代码。我让它播放了一会儿,然后它停止了。仍在调查。URL从哪里来?多亏了你的精彩回答,我可以解决类似的问题。