php手机网页在线录音ios,iOS 录音实现
需求
某处功能加上录音功能,时间大概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 录音实现相关推荐
- php手机网页在线录音ios,iOS 实现录音功能
参考资料 音频文件相关知识 文件格式 wav: 特点:音质最好的格式,对应PCM编码 适用:多媒体开发,保存音乐和音效素材 mp3: 特点:音质好,压缩比比较高,被大量软件和硬件支持 适用:适合用于比 ...
- java h5在线音频_html5 mp3音频播放代码网页在线录音
特效描述:html5 mp3音频播放 网页在线录音.本地设置麦克风权限,才能正常预览 代码结构 1. 引入JS 2. HTML代码 Html5网页JavaScript录制MP3音频 录制 停止 上传 ...
- 根据两个经纬度点调用百度地图应用查询路线 适用android或者ios中及网页浏览(手机网页同样适用)
Intent intent = null;try {// 如果有安装百度地图 就启动百度地图StringBuffer sbs = new StringBuffer();sbs.append(" ...
- iOS 实现录音并保存在指定文件目录下面
原理: 进入界面,先遍历文件目录,将所有的文件名,显示在uitableview中.在录音时需要设置session以及录音采样率. 1.ios录音主要使用ios自带的类,是工程中需要手动添加这俩个fra ...
- android ios语音转码,iOS实现录音转码MP3及转码BASE64上传示例
iOS 录音转码MP3及转码BASE64上传 一,开始录音 NSLog(@"开始录音"); [self startRecord]; - (void)startRecord { // ...
- iOS 录音,获取录音时长及格式转换
转载请注明出处!!! 在APP中,我们也会遇到调用录音的功能,那么如何录音呢?并且在iOS中录音格式是wav或者caf格式的,和安卓不通用,为了达到通用的效果,我们还需要把他转换成通用格式.近期我遇到 ...
- Android高仿iOS Messages录音操作按钮
Android高仿iOS Messages录音操作按钮 目录 一.目标 二.功能分析 三.实现效果 四.实现过程 五.开发过程回顾 六.接下来 七.Finally 前面的2次开发,分别完成了实现录音和 ...
- 手机网页,输入时 软键盘盖住输入框完整解决方案,兼容安卓、鸿蒙、苹果IOS
手机网页,输入时 软键盘盖住输入框完整解决方案,兼容安卓.鸿蒙.苹果IOS 当点击输入框时调起软盘,安卓和IOS会有所不同,IOS中弹起软盘会让整体布局往上移,而安卓不会而是整体布局高度缩减了. 参考 ...
- iOS Native录音+web交互
主要流程: 1.创建音频路径,位置放在document文件夹下: 2.通过AVAudioseesion来设置录音时的背景声音,需要设置背景声音为静音,这样方便录音: 3.设置录音时候需要的一些参数,包 ...
最新文章
- 肠道微生物的研究不复杂,不信看这篇Science
- 静态编译和动态编译区别
- 在springBoot中使用Mapper类问题_@Mapper_@MapperScan_xml文件跟mapper分开_xml文件跟mapper在同一个目录下
- graphics | 基础绘图系统的拼图方法之三:使用mfrow、mfcol参数和layout函数
- linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理
- 锐浪报表数据源access_学习锐浪报表之MySQL连接字符串的实际操作步骤汇总
- PMP-35项目沟通管理
- DDCTF2018-黑盒破解 详细WP
- kettle日志解析_Kettle运行日志记录
- 浅谈通过抢注域名获取好域名的小技巧
- MessagingTimeout: Timed out waiting for a reply to message ID
- 虚拟服务器磁盘 厚置备置零,VMware ESXi 虚拟硬盘格式记录:厚置备延迟置零、厚置备置零、精简置备...
- 1688API接口系列,教你如何获取商品详情
- 数字中国建设峰会闭幕,现场海量图片一览!
- 上海证券交易所-债券品种介绍
- 外星人跑深度学习_外星人带你搞基?这部12年的动画绝了
- PostgreSQL数据外部表使用(postgres_fdw)
- 矩阵连乘c语言实验报告,2013矩阵连乘实验报告.docx
- endnote中CWYW无文件_Endnote软件的使用,有图有干货!
- 10个数比大小(排序)——冒泡和选择
热门文章
- NHANES数据库的介绍及使用(一)
- 基于SpringBoot框架的管理系统【完整项目源码】
- 华硕网络同传+计算机名,HP网络同传使用方法
- 纠错技术之FEC(向前纠错)
- View androidx.appcompat.widget.AppCompatImageViewdoes not have a NavController set
- 【ESP32】11.雨滴探测实验(ADC)
- m认知无线电信号检测算法matlab仿真,能量检测,循环平稳检测以及自相关检测
- 【英语】2月英语学习
- Pytorch使用大核的卷积神经网络: RepLKNet
- win7平台下QT软件的打包与发布(部署与安装)