导致这个错误的原因比较多,大致是文件格式 ,文件完整性, 文件的码率等因素。
文件的完整性,一个解决方案是,根据 mp3文件格式自己去解析 做完整性检查 。 另一个偷懒的办法是让AVAudioPlayer自己去检查。
方法1
NSString mp3 = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.mp3"];
NSData *data = [NSData dataWithContentsOfFile: mp3];
[[AVAudioPlayer alloc] initWithData:data error:&errr];
方法2
NSString mp3 = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.mp3"];
[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:mp3] error:&errr];
方法1 中AVAudioPlayer不会对文件完整性做检查 ,而方法2 而会,所以习惯用方法2的人,则不会遇到这个错误。