04-28
这个是同事写的项目里面的语音上传播放,只是暂时总结放上去,等到用的时候,就拿来用。
上传参考我的资源里 语音上传文件.h/.m,下面只是播放的代码。
一~~~
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import "VoiceConverter.h"
二~~~
///放放录音
AVAudioPlayer *audioPlayer;
三~~~
#pragma mark 播放按钮
-(void)voiceButtonClicked
{
NSLog(@"播放按钮被电击");
// 先创建一个AFURLConnectionOperation对象,然后再使用它的属性outputStream进行处理
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kPicVoiceUrlString,[self.dataDict objectForKey:@"voice"]]];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
// NSLog(@"downloadTask--%@",[documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]);
NSURL *strVoiceAmr=[documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
NSString *amrFilePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"PlayFile.amr"];
NSData *audioData = [NSData dataWithContentsOfURL:strVoiceAmr];
[audioData writeToFile:amrFilePath atomically:YES];
NSString *wavFilePath = [[NSTemporaryDirectory() stringByAppendingPathComponent:@"PlayWAVFile"]stringByAppendingPathExtension:@"wav"];
//amr文件存在则直接转码
int i = [VoiceConverter amrToWav:amrFilePath wavSavePath:wavFilePath];
NSLog(@"文件是否转换成功 %d",i );
if (audioPlayer==nil) {
audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:wavFilePath] error:nil];
}
if (audioPlayer.playing) {
[audioPlayer stop];
}
audioPlayer = [audioPlayer initWithContentsOfURL:[NSURL fileURLWithPath:wavFilePath] error:nil];
///完成开始播放
[self finishPlay];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
}
#pragma mark - 播放已经代理
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"播放结束");
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
}
- (void)finishPlay
{
[audioPlayer play];
}
四~~~加播放第三方
文件参考资源里 录音播放第三方文件