2

で遊ぶのに問題がfilesありAVAudioPlayerます。特定の m4a を再生しようとすると、正常に動作します。私が試したmp3でも動作します。ただしmp3、再生しようとする順序に関係なく、毎回特定の 1 つ (Radiohead による 15 ステップ) で失敗します。playビューの読み込みと同時に発生するすべてが正しく行われますが、オーディオはそうではありません。コードは以下です。「プレーヤーがロードされました」と表示されます。他の 2 つの曲の出力をログに記録しますが、15 ステップでは出力しません。私file pathは正しいことを知っています(アプリで以前に出力されたログを記録しており、正しいです)。何か案は?

NSData *musicData = [NSData dataWithContentsOfURL:[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:[song filename] ofType:nil]]];

NSLog([[NSBundle mainBundle] pathForResource:[song filename] ofType:nil]);
if(musicData)
{
    NSLog(@"File found.");
}

self.songView.player = [[AVAudioPlayer alloc] initWithData:musicData error:nil];

if(self.songView.player) 
{
    NSLog(@"Player loaded.");
}

[self.songView.player play];
NSLog(@"You should be hearing something now.");
4

2 に答える 2

1

パーティーに入るのがとても遅くなってすみません。将来これを参照する人に役立つように、ヒントを投稿したいだけです。

毛むくじゃらのカエルの答えに対する小さな修正。正しい使い方は次のとおりです。

NSError *anError = nil;
anAVAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:someURL] error:&anError];
if (!anAVAudioPlayer) {
    NSLog(@"localizedDescription : %@", [anError localizedDescription]);
}
于 2012-08-09T13:49:47.790 に答える
0
NSData *musicData = [NSData dataWithContentsOfURL:[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:[song filename] ofType:nil]]];

ここでmusicData nil、問題の場合ですか?

また:

self.songView.player = [[AVAudioPlayer alloc] initWithData:musicData error:nil];

オブジェクトnilを受け取るメソッドを渡すべきではありません。NSError正しく使用すれば、問題がより明らかになる可能性があります。

NSError* error = nil;
self.songView.player = [[AVAudioPlayer alloc] initWithData:musicData error:&error];
if (error)
{
    NSLog(@"Error with initWithData: %@", [error localizedDescription]);
}
于 2010-04-12T21:43:35.287 に答える