语音上传,播放

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];
}

四~~~加播放第三方

文件参考资源里  录音播放第三方文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值