使用AVAudioPlayer iOS 7播放音频

时间:2014-03-21 21:17:43

标签: ios core-audio

我正在努力遵循Apple关于使用.wav类播放小AVAudioPlayer文件的文档。我也不确定基本音频播放需要什么工具箱。到目前为止我已导入:

AVFoundation.framework
CoreAudio.framework
AudioToolbox.framework

以下是我的代码.h.m

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

@interface ViewController : UIViewController <AVAudioPlayerDelegate>

- (IBAction)playAudio:(id)sender;

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

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

- (IBAction)playAudio:(id)sender {

    NSLog(@"Button was Pressed");

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"XF_Loop_028" ofType:@"wav"];
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];

    // create new audio player
    AVAudioPlayer *myPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileURL error:nil];
    [myPlayer play];

}
@end

我似乎没有任何错误。但是,我没有收到任何声音。

3 个答案:

答案 0 :(得分:1)

filePath是否返回有效值? fileURL是否返回有效值?此外,您应该使用AVAudioPlayer initWithContentsOfURL的error参数。如果你使用它,它可能会告诉你究竟是什么问题。

确保检查代码中的错误和无效值。检查nil filepath和fileURL是第一步。接下来检查错误参数。

希望这有帮助。

答案 1 :(得分:1)

您在此处遇到ARC问题。当myPlayer超出范围时,我们正在清理它。创建一个强大的属性,分配AVAudioPlayer,你可能已经全部设置!

@property(nonatomic, strong) AVAudioPlayer *myPlayer;

...

// create new audio player
self.myPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileURL error:nil];
[self.myPlayer play];

答案 2 :(得分:1)

我所做的就是为此目的创建一个完整的微型课程。这样我有一个可以保留的对象,它本身就保留了音频播放器。

- (void) play: (NSString*) path {
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: path];
    NSError* err = nil;
    AVAudioPlayer *newPlayer =
        [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &err];
    // error-checking omitted
    self.player = newPlayer; // retain policy
    [self.player prepareToPlay];
    [self.player setDelegate: self];
    [self.player play];
}