我正在制作录音机。重新编码和播放在模拟器上工作正常。但在iPhone上它不起作用。 (我按照iPhoneOSProgrammingGuide/AudioandVideoTechnologies)
中提到的确切步骤进行了操作 printf("%s(player)\n",[[self.soundFileURL absoluteString] UTF8String]);
AVAudioPlayer *newPlayer =
[[AVAudioPlayer alloc] initWithContentsOfURL: self.soundFileURL error: nil];
if([self.soundFileURL isFileURL]){
printf("isFileURL\n");
}
self.player = newPlayer;
[newPlayer release];
[player prepareToPlay];
[player setDelegate: self];
//recorderLabel.text=@"Playing..";
[player play];
printf("playing..\n");
调试器输出是 文件://localhost/var/mobile/Applications/9A607A45-974B-4E9F-9839-FD21B3BC9DD8/Documents/1251828741.caf(播放器) isFileURL 播放..
答案 0 :(得分:0)
iPhone OS on-device上没有与iPhone OS模拟器相同的音频编解码器。在我的项目中,我遇到了以单向编码而不是另一种方式编写.caf
个文件的问题...这里有一些试验和错误会有所帮助(我最终使用了16BLE PCM)。
我会尝试更改录制的音频文件的编码,以尝试找到设备支持的音频编解码器。
答案 1 :(得分:0)
确保iPhone上的声音没有关闭。
将以下内容添加到您的代理人(自己):
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)playedPlayer successfully:(BOOL)flag {
NSLog(@"Done playing %@", flag ? @"with success" : @"with failure" );
}
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error {
NSLog(@"Error while decoding: %@", [error localizedDescription] );
}
这可能会给你一些线索。
答案 2 :(得分:0)
iPhone的.caf文件需要编码为单声道,而不是立体声频道,只能用于iPhone。