2013-04-12 65 views
0

我正在处理具有录制音频的应用程序,并播放存储在文档目录中的录制文件。录制音频并保存到文档目录无法播放AVAudioPlayer的音频文件

这里是我的代码:

录制按钮的方法。

(IBAction)stopButtonPressed:(id)sender{ 

    UIButton *button = (UIButton *)sender; 

    if (button.selected) { // Play recorded file. 

    self.stopButton.selected = NO; 

    NSError *error; 

    self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioRecorder.url  error:&error]; 

    self.audioPlayer.delegate = self; 

    self.audioPlayer.volume = 1.0; 

    [self.audioPlayer prepareToPlay]; 

    [self.audioPlayer play]; 

    } 

    else{ // Stop recording. 

    self.stopButton.selected = YES; 

    if (recordTimer) { 

    [recordTimer invalidate]; 

    } 

    [self.audioPlayer stop]; 

    self.recordButton.selected = NO; 

    [audioRecorder stop]; 

    self.readyLabel.text = @"READY"; 

    [self insertNewRecording]; 
     } 
    } 
+0

我能够记录该文件,但不能播放录制的文件。 –

+0

你检查了你的错误吗? – CarlJ

+0

它没有显示任何错误。 –

回答

1

呃..我不确定。但作为一个测试,也许你可以尝试如果你可以通过指定它的名字来播放文件?例如。你有forest.mp3发挥和代码的关键部分可以是这样的:

path = [[NSBundle mainBundle] pathForResource:@"forest" ofType:@"mp3"]; 
NSData *sampleData = [[NSData alloc] initWithContentsOfFile:path]; 
NSError *audioError = nil; 
av = [[AVAudioPlayer alloc] initWithData:sampleData error:&audioError]; 

如果一切顺利的话,也许它的东西在你的代码做audioRecorder.url?

希望这给你一些想法。

+0

是的,它与路径问题有关。现在我可以播放录制的文件了。 –

2

我认为你使用的是ARC,在这种情况下,你需要保留AVAudioPlayer,因为它自动设置为nil。在您的头文件中输入以下内容:#

@property(nonatomic,strong)AVAudioPlayer * audioPlayer;

希望这对你的作品, 干杯吉姆

+0

你说得对。 – junaidsidhu