单击按钮时我正在尝试播放声音。首先,我在头文件中导入了AudioToolbox,然后将代码添加到按下按钮时触发的IBAction中,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)button1:(id)sender {
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"mySong" ofType:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundPath], &soundID);
AudioServicesPlaySystemSound (soundID);
}
我甚至在方法中投入了一个NSLog来确保它被触发。它是。我也只是在字符串中的foo路径中查看它是否会崩溃,它确实如此。我确保将短声音文件拖放到应用程序中。测试了我的扬声器,在设备模拟器上通过模拟器上的youtube测试音频,一切。我无法弄清楚我做错了什么。
当我将代码更改为:
- (IBAction)button1:(id)sender {
AVAudioPlayer *testAudioPlayer;
// *** Implementation... ***
// Load the audio data
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"wav"];
NSData *sampleData = [[NSData alloc] initWithContentsOfFile:soundFilePath];
NSError *audioError = nil;
// Set up the audio player
testAudioPlayer = [[AVAudioPlayer alloc] initWithData:sampleData error:&audioError];
if(audioError != nil) {
NSLog(@"An audio error occurred: \"%@\"", audioError);
}
else {
[testAudioPlayer setNumberOfLoops: -1];
[testAudioPlayer play];
}}
我收到错误:警告:137:错误'!dat'试图设置(null)音频设备的采样率
答案 0 :(得分:1)
您好,根据您的问题,请您检查您的项目文件夹中是否存在音频文件。可能会发生您忘记复选标记"如果需要复制项目"所以它可能不在您的项目文件中。
您还可以播放设备中提供的声音。请访问以下链接,这将有所帮助。
https://github.com/TUNER88/iOSSystemSoundsLibrary
我已经测试了您的代码,它工作正常而且没有崩溃。这就是我的所作所为。
答案 1 :(得分:1)
正如在@ matt的评论中所述,声音播放在模拟器中失败。我在尝试播放视频时遇到了这个问题。
有趣的是,声音在照片应用中的同一视频播放效果很好。