需求

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

实现思路

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

实现步骤

一. 添加AVFoundation

录音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];

}

效果图.gif

php手机网页在线录音ios,iOS 录音实现相关推荐

  1. php手机网页在线录音ios,iOS 实现录音功能

    参考资料 音频文件相关知识 文件格式 wav: 特点:音质最好的格式,对应PCM编码 适用:多媒体开发,保存音乐和音效素材 mp3: 特点:音质好,压缩比比较高,被大量软件和硬件支持 适用:适合用于比 ...

  2. java h5在线音频_html5 mp3音频播放代码网页在线录音

    特效描述:html5 mp3音频播放 网页在线录音.本地设置麦克风权限,才能正常预览 代码结构 1. 引入JS 2. HTML代码 Html5网页JavaScript录制MP3音频 录制 停止 上传 ...

  3. 根据两个经纬度点调用百度地图应用查询路线 适用android或者ios中及网页浏览(手机网页同样适用)

    Intent intent = null;try {// 如果有安装百度地图 就启动百度地图StringBuffer sbs = new StringBuffer();sbs.append(" ...

  4. iOS 实现录音并保存在指定文件目录下面

    原理: 进入界面,先遍历文件目录,将所有的文件名,显示在uitableview中.在录音时需要设置session以及录音采样率. 1.ios录音主要使用ios自带的类,是工程中需要手动添加这俩个fra ...

  5. android ios语音转码,iOS实现录音转码MP3及转码BASE64上传示例

    iOS 录音转码MP3及转码BASE64上传 一,开始录音 NSLog(@"开始录音"); [self startRecord]; - (void)startRecord { // ...

  6. iOS 录音,获取录音时长及格式转换

    转载请注明出处!!! 在APP中,我们也会遇到调用录音的功能,那么如何录音呢?并且在iOS中录音格式是wav或者caf格式的,和安卓不通用,为了达到通用的效果,我们还需要把他转换成通用格式.近期我遇到 ...

  7. Android高仿iOS Messages录音操作按钮

    Android高仿iOS Messages录音操作按钮 目录 一.目标 二.功能分析 三.实现效果 四.实现过程 五.开发过程回顾 六.接下来 七.Finally 前面的2次开发,分别完成了实现录音和 ...

  8. 手机网页,输入时 软键盘盖住输入框完整解决方案,兼容安卓、鸿蒙、苹果IOS

    手机网页,输入时 软键盘盖住输入框完整解决方案,兼容安卓.鸿蒙.苹果IOS 当点击输入框时调起软盘,安卓和IOS会有所不同,IOS中弹起软盘会让整体布局往上移,而安卓不会而是整体布局高度缩减了. 参考 ...

  9. iOS Native录音+web交互

    主要流程: 1.创建音频路径,位置放在document文件夹下: 2.通过AVAudioseesion来设置录音时的背景声音,需要设置背景声音为静音,这样方便录音: 3.设置录音时候需要的一些参数,包 ...

最新文章

  1. 肠道微生物的研究不复杂,不信看这篇Science
  2. 静态编译和动态编译区别
  3. 在springBoot中使用Mapper类问题_@Mapper_@MapperScan_xml文件跟mapper分开_xml文件跟mapper在同一个目录下
  4. graphics | 基础绘图系统的拼图方法之三:使用mfrow、mfcol参数和layout函数
  5. linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理
  6. 锐浪报表数据源access_学习锐浪报表之MySQL连接字符串的实际操作步骤汇总
  7. PMP-35项目沟通管理
  8. DDCTF2018-黑盒破解 详细WP
  9. kettle日志解析_Kettle运行日志记录
  10. 浅谈通过抢注域名获取好域名的小技巧
  11. MessagingTimeout: Timed out waiting for a reply to message ID
  12. 虚拟服务器磁盘 厚置备置零,VMware ESXi 虚拟硬盘格式记录:厚置备延迟置零、厚置备置零、精简置备...
  13. 1688API接口系列,教你如何获取商品详情
  14. 数字中国建设峰会闭幕,现场海量图片一览!
  15. 上海证券交易所-债券品种介绍
  16. 外星人跑深度学习_外星人带你搞基?这部12年的动画绝了
  17. PostgreSQL数据外部表使用(postgres_fdw)
  18. 矩阵连乘c语言实验报告,2013矩阵连乘实验报告.docx
  19. endnote中CWYW无文件_Endnote软件的使用,有图有干货!
  20. 10个数比大小(排序)——冒泡和选择

热门文章

  1. NHANES数据库的介绍及使用(一)
  2. 基于SpringBoot框架的管理系统【完整项目源码】
  3. 华硕网络同传+计算机名,HP网络同传使用方法
  4. 纠错技术之FEC(向前纠错)
  5. View androidx.appcompat.widget.AppCompatImageViewdoes not have a NavController set
  6. 【ESP32】11.雨滴探测实验(ADC)
  7. m认知无线电信号检测算法matlab仿真,能量检测,循环平稳检测以及自相关检测
  8. 【英语】2月英语学习
  9. Pytorch使用大核的卷积神经网络: RepLKNet
  10. win7平台下QT软件的打包与发布(部署与安装)