如何解决在xcode中播放音频的问题?

时间:2014-09-26 14:25:54

标签: ios objective-c

我的viewcontroller中有以下代码。当我运行时,音频不会在xcode模拟器中播放。关于我应该做什么的任何建议?

另外,我已将anomaly.mp3保存在与ViewController.m相同的目录(无子文件夹)中。

#import <AVFoundation/AVFoundation.h> //before viewDidLoad    


NSError * error = nil;

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                     pathForResource:@"anomaly"
                                     ofType:@"mp3"]];

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
                              initWithContentsOfURL:url
                              error:&error];
if (error){
    NSLog(@"error: %@", [error localizedDescription]);
}

NSLog(@"test");
[audioPlayer play];

2 个答案:

答案 0 :(得分:0)

尝试设置音频播放器的音量。您还可以查看&#34;播放&#34;的结果。功能,看看事情是否正常。 play函数隐式调用prepareToPlay。此功能可能由于多种原因而失败,令人生气,没有任何错误对象或消息......

NSError * error = nil;

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                     pathForResource:@"anomaly"
                                     ofType:@"mp3"]];

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
                              initWithContentsOfURL:url
                              error:&error];
if (error){
    NSLog(@"error: %@", [error localizedDescription]);
} else {

    audioPlayer.volume = 50;

    if([audioPlayer play]) NSLog(@"Should be playing");
    else NSLog(@"Something weird happened"); //usually related to unavailable hardware
}

答案 1 :(得分:0)

通过将其声明为:{/ p>来强烈引用audioPlayer

@property (nonatomic) AVAudioPlayer *audioPlayer;

,然后在使用self.audioPlayer的任何地方使用audioPlayer

您的代码存在的问题是,因为您的audioPlayer只是方法的局部变量,所以只要您的方法完成,它就会被ARC取消分配。保持对它的强烈引用将保留audioPlayer对象和内存,只要你不打电话,你的声音就会一直播放

[self.audioPlayer stop];