我使用下面的代码来播放音频文件。它可以很好地播放MP3文件,但是当我尝试播放AAC文件时,[[AVAudioPlayer alloc] initWithContentsOfURL:]
返回nil
,我得到以下错误:
Error Domain=NSOSStatusErrorDomain Code=1937337955 "The operation couldn’t be completed. (OSStatus error 1937337955.)"
字符串
音频文件在Mac和iPhone上播放良好(当我将其通过电子邮件发送给自己时),并在这里:https://dl.dropboxusercontent.com/u/2667666/song.aac
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&setCategoryError];
// Create audio player with background music
NSString *backgroundMusicPath = [[NSBundle mainBundle] pathForResource:@"song" ofType:@"aac"];
NSURL *backgroundMusicURL = [NSURL fileURLWithPath:backgroundMusicPath];
NSError *error;
_backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundMusicURL error:&error];
if (!_backgroundMusicPlayer) {
NSLog(@"_backgroundMusicPlayer pointer is null!!");
}
[_backgroundMusicPlayer setDelegate:self]; // We need this so we can restart after interruptions
[_backgroundMusicPlayer prepareToPlay];
[_backgroundMusicPlayer play];
型
更新:如果我将文件的扩展名从aac更改为m4a,错误代码将更改为1954115647(其四个字母的代码是“tip?)。我用arc扩展得到的错误代码的四个字母代码是“sync”。
3条答案
按热度按时间tez616oj1#
用
initWithData:error:
初始化音频播放器可以解决这个问题。举例来说:
字符串
令人失望的是,苹果初始化他们的音频播放器的基础上扩展,而不是看二进制数据,并试图找出哪种类型的数据,他们收到。
izkcnapc2#
找到解决方案了!
事实证明,如果我只是使用
AVPlayer
而不是AVAudioPlayer
,如果我使用.aac作为文件的扩展名,那么它就可以正常运行。现在我可以播放aac和mp3文件。7cjasjjr3#
.aac文件可以播放,请尝试检查该文件是否存在?
字符串