#import "ViewController.h"

#import <AVFoundation/AVFoundation.h>

@interface ViewController ()

@property(nonatomic,strong)AVAudioRecorder*record;

@property(nonatomic,strong)CADisplayLink *updatereflesh;

@property(nonatomic,assign)CGFloat timePress;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//添加两个按钮

UIButton *playBtn=[UIButton buttonWithType:UIButtonTypeCustom];

playBtn.backgroundColor=[UIColor greenColor];

playBtn.frame=CGRectMake(10, 40, 100, 50);

[self.view addSubview:playBtn];

[playBtn addTarget:self action:@selector(playMusic) forControlEvents:UIControlEventTouchUpInside];

UIButton *pauseBtn=[UIButton buttonWithType:UIButtonTypeCustom];

pauseBtn.backgroundColor=[UIColor redColor];

pauseBtn.frame=CGRectMake(10, 100, 100, 50);

[self.view addSubview:pauseBtn];

[pauseBtn addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside];

//沉默两秒自动停止录音

//获取沙盒路径保存文件

NSString *path=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"123.caf"];

NSURL *url=[NSURL fileURLWithPath:path];

//录音

//    //settings  设置参数  录音相关参数  声道  速率  采样率

//    NSMutableDictionary *setting = [NSMutableDictionary dictionary];

//    //2.够着  录音参数

//    // 音频格式

//    setting[AVFormatIDKey] = @(kAudioFormatAppleIMA4);

//    // 音频采样率

//    setting[AVSampleRateKey] = @(8000.0);

//    // 音频通道数

//    setting[AVNumberOfChannelsKey] = @(1);

//    // 线性音频的位深度

//    setting[AVLinearPCMBitDepthKey] = @(8);

AVAudioRecorder *recorder=[[AVAudioRecorder alloc]initWithURL:url settings:nil error:NULL];

self.record=recorder;

//允许监听

self.record.meteringEnabled=YES;

}

//开始播放

-(void)playMusic

{

NSLog(@"开始录音");

[self.record record];

//开启定时器

[self.updatereflesh addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

}

//暂停

-(void)pause

{

NSLog(@"结束录音");

[self.record stop];

NSLog(@"%@",NSHomeDirectory());

}

//创建定时器

-(CADisplayLink*)updatereflesh

{

if(!_updatereflesh)

{

_updatereflesh=[CADisplayLink displayLinkWithTarget:self selector:@selector(updateTimeAudioPinLv)];

}

return _updatereflesh;

}

-(void)updateTimeAudioPinLv

{

//时时更新分贝

[self.record updateMeters];

//获取当前分贝

CGFloat power=[self.record averagePowerForChannel:1];

//开始沉默记录时间

if(power<-30)

{

_timePress+=1.0/60;

if (_timePress>2.0) {

[self.record stop];

//定时器停止

[self.updatereflesh invalidate];

self.updatereflesh =nil;

}

}

else

{

_timePress=0;

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

ios录音的更多相关文章

  1. 【iOS 录音转码MP3及转码BASE64上传】

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

  2. Swift实现iOS录音与播放音频功能

    作用AVPLayer:可以用来播放在线及本地音视频AVAudioSession:音频会话,主要用来管理音频设置与硬件交互使用时需要导入 #import <AVFoundation/AVFound ...

  3. lame,把ios录音转换为mp3格式

    在ios设备中进行录音,录音文件的格式为caf.但这种格式在很多设备中没法播放.为了适应终端的播放功能,特将caf转换为mp3格式文件来使用. 在录制caf文件时,需要使用双通道,否则在转换为MP3格 ...

  4. 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放

    都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...

  5. ios录音、音频播放功能

    #import <AVFoundation/AVFoundation.h> { NSInteger   _timeCount;    NSTimer     *_timer; } @pro ...

  6. iOS录音加播放.

    现在发现的事实有: 如果没有蓝牙设备, 那么可以用下面的方法边录音, 边放音乐: 在录音按钮按下的时候: _avSession = [AVAudioSession sharedInstance];   ...

  7. ios 录音

    http://code4app.com/ios/%E5%BD%95%E9%9F%B3%E5%92%8C%E6%92%AD%E6%94%BE/51ba821b6803fa6901000000

  8. ios录音Demo

    <AudioToolbox/AudioToolbox.h> :这个库是C的接口,偏向于底层,主要用于在线流媒体的播放 <AVFoundation/AVFoundation.h> ...

  9. iOS录音后播放声音小,AudioSessionInitialize failed,AudioQueueStart failed (-50)

    方法1: UInt32 audioRoute = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty(kAudioSess ...

随机推荐

  1. 16. javacript高级程序设计-HTML5脚本编程

    1. HTML5脚本编程 l 跨文档消息传递API能够让我们在不降低同源策略安全性的前提下,在来至不同的域的文档间传递消息 l 原生拖放功能可以方便的指定某个元素是否可以拖动,并在放置时做出响应.还可 ...

  2. Navicat连接oracle,出现Only compatible with oci version 8.1 and&nb (转)

    与本地oracle连接的时候,一般没问题,sqlplus和oci都是本地oracle自带的,(设置: 工具->选项->oci) 分别为:   oci:D:\app\pcman\produc ...

  3. spring mvc 重定向问题

    (1)我在后台一个controller跳转到另一个controller,为什么有这种需求呢,是这样的.我有一个列表页面,然后我会进行新增操作,新增在后台完成之后我要跳转到列表页面,不需要传递参数,列表 ...

  4. Android异步加载访问网络图片-解析json

    来自:http://www.imooc.com/video/7871 推荐大家去学习这个视频,讲解的很不错. 慕课网提供了一个json网址可以用来学习:http://www.imooc.com/api ...

  5. HDU 4946 Area of Mushroom (几何凸包)

    题目链接 题意:给定n个人,每个人有一个速度v方向任意.如果平面中存在一个点只有某个人到达的时间最短(即没有人比这个人到的时间更短或相同),那么我们定义这个店归这个人管辖,现在问这些人中哪些人的管辖范 ...

  6. 在Eclipse中手动安装pydev插件,eclipse开发python环境配置

    最近在学习Python,因为我是做java的,用惯了eclipse,所以就想用eclipse开发python,但是配置开发环境的时候发现按照网上的配置大多不行,而且都是用的在线安装,很垃圾,没办法,自 ...

  7. MyBatis之多表关联查询

    1使用resultType.ResultMap处理返回结果 处理返回结果 resultType:指定返回值结果的完全限定名,处理多表查询的结果. 多表查询需要定义vo封装查询的结果. 需求:查询部门和 ...

  8. eclipse快捷键Alt + / 失效

    最近电脑上的Eclipse没有了自动提示功能,也不是全部不提示,大多数情况下按下"alt+/"键还会产生提示,但是当我在java项目中邪main方法和syso的时候,"a ...

  9. !gluLookAt与glOrtho 参数解析

    void gluLookAt( GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLd ...

  10. SQLServer自定义函数简单演示

    CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ][ type_schema_name. ] par ...