php手机网页在线录音ios,iOS 录音实现

需求

某处功能加上录音功能,时间大概60秒,上传到服务器,服务器要求文件大小控制在1M以内。

实现思路

利用系统框架AVFoundation实现录音和录音播放

实现步骤

一. 添加AVFoundation

9b8edca8d7c8?from=singlemessage

录音1.jpg

二. 在需要的文件导入AVFoundation

#import

三.核心代码

* 开始录音

- (IBAction)startRecord:(id)sender {

NSLog(@"开始录音");

countDown = 60;

[self addTimer];

AVAudioSession *session =[AVAudioSession sharedInstance];

NSError *sessionError;

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

if (session == nil) {

NSLog(@"Error creating session: %@",[sessionError description]);

}else{

[session setActive:YES error:nil];

}

self.session = session;

//1.获取沙盒地址

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

filePath = [path stringByAppendingString:@"/RRecord.wav"];

//2.获取文件路径

self.recordFileUrl = [NSURL fileURLWithPath:filePath];

//设置参数

NSDictionary *recordSetting = [[NSDictionary alloc] initWithObjectsAndKeys:

//采样率 8000/11025/22050/44100/96000(影响音频的质量)

[NSNumber numberWithFloat: 8000.0],AVSampleRateKey,

// 音频格式

[NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,

//采样位数 8、16、24、32 默认为16

[NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,

// 音频通道数 1 或 2

[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,

//录音质量

[NSNumber numberWithInt:AVAudioQualityHigh],AVEncoderAudioQualityKey,

nil];

_recorder = [[AVAudioRecorder alloc] initWithURL:self.recordFileUrl settings:recordSetting error:nil];

if (_recorder) {

_recorder.meteringEnabled = YES;

[_recorder prepareToRecord];

[_recorder record];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(60 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

[self stopRecord:nil];

});

}else{

NSLog(@"音频格式和文件存储格式不匹配,无法初始化Recorder");

}

}

*停止录音

- (IBAction)stopRecord:(id)sender {

[self removeTimer];

NSLog(@"停止录音");

if ([self.recorder isRecording]) {

[self.recorder stop];

}

NSFileManager *manager = [NSFileManager defaultManager];

if ([manager fileExistsAtPath:filePath]){

_noticeLabel.text = [NSString stringWithFormat:@"录了 %ld 秒,文件大小为 %.2fKb",COUNTDOWN - (long)countDown,[[manager attributesOfItemAtPath:filePath error:nil] fileSize]/1024.0];

}else{

_noticeLabel.text = @"最多录60秒";

}

}

*播放录音

- (IBAction)PlayRecord:(id)sender {

NSLog(@"播放录音");

[self.recorder stop];

if ([self.player isPlaying])return;

self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:self.recordFileUrl error:nil];

NSLog(@"%li",self.player.data.length/1024);

[self.session setCategory:AVAudioSessionCategoryPlayback error:nil];

[self.player play];

}

9b8edca8d7c8?from=singlemessage

效果图.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值