#import "ViewController.h"
#import <AVKit/AVKit.h>
@interface ViewController ()
@property(nonatomic,strong)AVAudioRecorder *recoder;
@property(nonatomic,strong)CADisplayLink *displayLink;
@property(nonatomic,assign)CGFloat slientDuration;
@end
@implementation ViewController
- (IBAction)startRecoord:(id)sender {
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [doc stringByAppendingPathComponent:@"test3.caf"];
NSURL *ulr1 = [NSURL fileURLWithPath:path];
NSLog(@"%@",ulr1);
NSDictionary *configDic = @{
AVFormatIDKey:@(kAudioFormatLinearPCM),
AVSampleRateKey:@(11025.0),
AVNumberOfChannelsKey:@(2),
AVEncoderAudioQualityKey:@(AVAudioQualityMin)
};
self.recoder = [[AVAudioRecorder alloc]initWithURL:ulr1 settings:configDic error:nil];
self.recoder.meteringEnabled = YES;
[self.recoder prepareToRecord];
[self.recoder record];
[self addTime];
}
- (IBAction)stopRecoard:(id)sender {
[self.recoder stop];
[self removeTime];
}
-(void)update1{
[self.recoder updateMeters];
float power = [self.recoder averagePowerForChannel:0];
if(power <= -20){
self.slientDuration += self.displayLink.duration;
if(self.slientDuration >= 2){
[self.recoder stop];
}
}else{
self.slientDuration = 0;
}
}
-(void) addTime{
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(update1)];
[self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}
-(void)removeTime{
[self.displayLink invalidate];
self.displayLink = nil;
}
@end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术