2009-10-22 49 views
17

我的问题如下。我得到这个代码,我猜腐败NSURL因为AVAudioPlayer是零初始化后:带外部URL的AVAudioPlayer去* .m4p

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]; 

任何建议是怎么回事错在这里?

的&错误表明这一点:

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

URL来自哪里? – mahboudz 2009-10-22 09:26:02

回答

9

我尝试这样做第一,但遇到错误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); 
+0

非常感谢,这解决了第一步:) 但在我看来,AVAudioPlayer无法播放m4p文件:(它不会开始播放或响应任何代表方法:( – tommy 2009-10-22 10:34:23

+0

)新代码试一试,我把它播放了一会儿,然后停下来,仍在调查中,网址从哪里来? – mahboudz 2009-10-22 10:40:01

+0

感谢你的精彩回答,我可以解决它类似的问题。 – zono 2012-11-11 09:30:39

6

而不是使用AVAudioPlayer,您可以使用AVPlayer。 AVPlayer也适用于远程URL