我正在努力遵循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
我似乎没有任何错误。但是,我没有收到任何声音。
答案 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];
}