2009-10-22 9 views
17

私の問題は次のとおりです。私はこのコードを持って、AVAudioPlayerを初期化した後nilであるので、私は壊れNSURLを推測:外部URLが* .m4pの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]; 

任意の提案ここで間違っているものは?

&エラーがこれを示しています

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

URLはどこから来ましたか? – mahboudz

答えて

9

を参照してください。私が最初にこれを試してみましたが、エラー2003334207を得た:

NSData *soundData = [NSData dataWithContentsOfURL:URL]; 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:soundData error:&error]; 

AVAudioPlayerが本当にファイルを望んでいるようだ:それは(//ファイル)ファイルのURLである必要があります。だから私は最初にファイルにデータを入れます:

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

+0

新しいコードを試してみてください私はちょっとした遊びをしてから停止しましたまだ調査中URLはどこですか? – mahboudz

+0

あなたの素晴らしい答えのおかげで、私は同様の問題を修正することができます。 – zono

6

AVAudioPlayerを使う代わりに、AVPlayerを使うことができます。 AVPlayerはリモートURLと同様に動作します