2016-08-23 9 views
0

アプリを実行すると、アプリケーションがMP3ファイル「d.mp3」を再生するときに何も聞こえません。 このファイルはiTunesで正常に再生されます。AVAudioPlayerはmp3ファイルを再生しません

プロジェクトにAVFoundation.frameworkを追加しました。 プロジェクトに「d.mp3」というファイルを追加しました。

#import <UIKit/UIKit.h> 
#import "AVFoundation/AVAudioPlayer.h" 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    // Play an MP3 file: 
    printf("\n Play an MP3 file"); 
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
             pathForResource:@"d" 
             ofType:@"mp3"]]; 
    printf("\n url = %x", (int)url); 
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] 
            initWithContentsOfURL:url 
            error:nil]; 
    printf("\n audioPlayer = %x", (int)audioPlayer); 
    [audioPlayer play]; 
} 

出力ログ:

Play an MP3 file 
url = 3ee78eb0 
audioPlayer = 3ee77810 
+0

に役立ちますたぶん 'エラーに非nilの引数を渡してみてください:'問題が何であるかを伝えるためにしようとしている場合は、引数が参照するには? –

+0

私はAVAudioPlayersが自分自身を保持しているとは考えていません。つまり、プレーヤーはすぐに割り当てを解除される可能性が高いです。あなたはそれを強力なインスタンス変数に格納し、それが機能するかどうか確認できますか? – Msencenb

+0

'printf'と'%x'を使わないでください。 'NSLog'と'%@ 'を使います。これにより、ポインタのアドレスがより有用な情報が得られます! – jcaron

答えて

1

非ARCあなたはそれが自分自身を保持していないため、再生時にそれを保持する必要が

追加は、コントローラを表示します。それが解除されると、即座に再生が停止します。

ARCは、あなたはクラスでAVAudioPlayerのインスタンスを保持する必要があります。それが演奏を停止した後にリリースします。例えば、

#import <AVFoundation/AVFoundation.h> 

@interface YourController() <AVAudioPlayerDelegate> { 
AVAudioPlayer *_yourPlayer; // strong reference 
} 
@end 

@implementation YourController 

- (IBAction)playAudio:(id)sender 
{ 
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"d" withExtension:@"mp3"]; 
    _yourPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL]; 
    _yourPlayer.delegate = self; 
    [_yourPlayer play]; 
} 

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
    if (player == _yourPlayer) { 
     _yourPlayer = nil; 
    } 
} 

@end 

希望は、これが

+0

playAudioの巨根をviewDidLoadに移動した後でのみ動作します。 –

+0

okは、コードが探していたことを意味しますか? – gurmandeep

関連する問題