IOS 录音(AVAudioRecorder)
- #import "HMViewController.h"
- #import <AVFoundation/AVFoundation.h>
- @interface HMViewController ()
- - (IBAction)startRecord;
- - (IBAction)stopRecord;
- @property (nonatomic, strong) AVAudioRecorder *recorder;
- @property (nonatomic, strong) CADisplayLink *timer;
- @property (nonatomic, strong) NSTimer *stopRecordTimer;
- /** 静音的持续时间 */
- @property (nonatomic, assign) CGFloat slientDuration;
- @end
- @implementation HMViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- }
- - (void)addTimer
- {
- self.timer = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
- [self.timer addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
- }
- - (void)removeTimer
- {
- [self.timer invalidate];
- self.timer = nil;
- }
- - (void)update
- {
- // 更新测试值
- [self.recorder updateMeters];
- // 如果分贝不超过-20
- float power = [self.recorder averagePowerForChannel:];
- if (power <= -) { // 几乎为静音
- self.slientDuration += self.timer.duration;
- if (self.slientDuration >= ) {
- // 停止录音
- [self.recorder stop];
- }
- } else { // 有说话
- self.slientDuration = ;
- }
- }
- //- (void)update
- //{
- // // 更新测试值
- // [self.recorder updateMeters];
- //
- // // 如果分贝不超过-20
- // float power = [self.recorder averagePowerForChannel:0];
- // if (power <= -20) { // 几乎为静音
- // if (!self.stopRecordTimer) {
- // self.stopRecordTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self.recorder selector:@selector(stopRecord) userInfo:nil repeats:NO];
- // }
- // } else { // 有说话
- //// [self.stopRecordTimer invalidate];
- //// self.stopRecordTimer = nil;
- // NSDate *time = [NSDate dateWithTimeIntervalSinceNow:2.0];
- // [self.stopRecordTimer setFireDate:time];
- // }
- //}
- - (IBAction)startRecord {
- NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
- NSString *path = [doc stringByAppendingPathComponent:@"test.caf"];
- NSURL *url = [NSURL fileURLWithPath:path];
- AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:url settings:nil error:nil];
- // 缓冲
- [recorder prepareToRecord];
- // 开启分贝测量功能
- recorder.meteringEnabled = YES;
- // 开始录音
- [recorder record];
- self.recorder = recorder;
- // 开启定时器
- [self addTimer];
- }
- - (IBAction)stopRecord {
- // [self.recorder stop];
- }
- @end
IOS 录音(AVAudioRecorder)的更多相关文章
- Domain=NSOSStatusErrorDomain Code=1937337955 关于iOS录音AVAudioRecorder与音频播放AVAudioPlayer真机调试录音不能播放的问题
error:Domain=NSOSStatusErrorDomain Code=1937337955 ,这个错误很常见, 原因是因为我们需要调用另外一个AVAudioPlayer 的初始化方法,来确定 ...
- 【iOS 录音转码MP3及转码BASE64上传】
iOS 录音转码MP3及转码BASE64上传 一,开始录音 NSLog(@"开始录音"); [self startRecord]; - (void)startRecord { // ...
- Swift实现iOS录音与播放音频功能
作用AVPLayer:可以用来播放在线及本地音视频AVAudioSession:音频会话,主要用来管理音频设置与硬件交互使用时需要导入 #import <AVFoundation/AVFound ...
- ios录音Demo
<AudioToolbox/AudioToolbox.h> :这个库是C的接口,偏向于底层,主要用于在线流媒体的播放 <AVFoundation/AVFoundation.h> ...
- iOS开发简记(4):录音AVAudioRecorder
录音,声音的采集,一般有两种实现办法,一是使用AVAudioRecorder,一是使用AudioUnit.如果只是简单的录音,使用AVAudioRecorder就可以了,如果想更灵活地处理刚录到的声音 ...
- iOS开发(4):录音AVAudioRecorder
录音,声音的采集,一般有两种实现办法,一是使用AVAudioRecorder,一是使用AudioUnit.如果只是简单的录音,使用AVAudioRecorder就可以了,如果想更灵活地处理刚录到的声音 ...
- 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放
都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...
- ios录音、音频播放功能
#import <AVFoundation/AVFoundation.h> { NSInteger _timeCount; NSTimer *_timer; } @pro ...
- ios录音
#import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewCont ...
随机推荐
- pyspider的基本操作
一.安装 pip install pyspider 1.修改 pyspider/webui/webdav.py 第209行:否则启动会报错 把: 'domaincontroller': NeedAut ...
- drf的安装和配置
一.安装 1.安装 pip install djangorestframework 2.配置 注:以上两部就OK了 二.最简单的drf版本 1.创建应用 在项目中新建一个应用: python mana ...
- 【网络】访问控制列表(ACL)
目的:172.16.12.1可以telnet到172.16.12.254,但是无法ping通172.16.12.254 Router0配置: 配置enable密码(必须,否则无法进入特权模式): r1 ...
- 搭建Redis报错
2018-10-26 报错信息 You need tcl 8.5 or newer in order to run the Redis test 原因 缺少 tcl 插件 解决方式 wget http ...
- 关于i18n
现在工作主要负责小程序端,很少负责backend.最近的一个任务是配置多语言.因为一开始都是写死的中文,现在需要把那些变成英文. 狂搜了一波,其实网上的方法都不怎好.(可能就是一开始看的时候觉得好.) ...
- svn server配置与TortoiseSVN、Ankhsvn+VS使用
Svn服务器与客户端安装 1. 下载安装VisualSvn-Server服务端.(过程略)http://subversion.apache.org/packages.html 2. ...
- Java Swing笔记
想到了解一下GUI主要是想用来做点小工具,记录一些笔记. 文本框自动换行和滚动条 private static JTextArea addJTextArea(JPanel panel, int x, ...
- 022-pinyin4j工具类模板
模板一 package ${enclosing_package}; import java.util.Arrays; import net.sourceforge.pinyin4j.PinyinHel ...
- GridView, ListView 区别
ListView, GridView部分的类层次结构 AbsListView的xml属性 android:listSelector 当前item高亮时,显示的drawable android:draw ...
- 给python解释器本身添加注册表
import sys from _winreg import * # tweak as necessary version = sys.version[:3] installpath = sys.pr ...