我正在我的应用程序中创建语音通信功能,通过Web服务器在用户之间发送语音注释,但是在此期间 测试我在播放我创建的消息时遇到错误 使用 AVAudioPlayer 。 AVAudioplayer 只返回 null 值。
如何使用AVAudioPlayer 网址链接播放音频文件?
if (!self.audioRecorder.recording) {
NSURL *url = [NSURL URLWithString:[@"http://.../sound.mp4"]];
NSLog(@"%@", url);
NSLog(@"PlayBack");
NSData *audioData = [NSData dataWithContentsOfURL:url];
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0]
stringByAppendingPathComponent:@"sound1.caf"];
[audioData writeToFile:filePath atomically:YES];
NSError *error;
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
self.audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileURL error:&error];
if (self.audioPlayer == nil) {
NSLog(@"%@", [error description]);
NSLog(@"%@", [self.audioPlayer description]);
}else
[self.audioPlayer play];
}else [self.audioRecorder stop];
答案 0 :(得分:0)
请试用此代码:
- (void) playMessageSound : (NSString *) filename{
self.soundFilename = filename;
//[[RBDMuteSwitch sharedInstance] detectMuteSwitch];
NSString *name = [filename stringByDeletingPathExtension];
NSString *extension = [filename pathExtension];
NSString *filePath = [[NSBundle mainBundle]pathForResource:name ofType:extension];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
NSError *error;
self.audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileUrl error:&error];
self.audioPlayer.numberOfLoops = 0;
self.audioPlayer.volume = 1.0;
[self.audioPlayer play];
}
答案 1 :(得分:0)
检查这个
NSString* resourcePath = @""; //your url
NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]];
NSError *error;
app.audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error];
app.audioPlayer.numberOfLoops = 0;
app.audioPlayer.volume = 4.0f;
[app.audioPlayer prepareToPlay];
if (app.audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[app.audioPlayer play];