录音
2016-07-13 22:55
555 查看
简单实现录音功能
声明全局成员变量
@property(nonatomic,strong)AVAudioRecorder *recorder ;
@property (nonatomic,
strong) AVAudioPlayer * audioPlayer;
@property (nonatomic,
strong) CADisplayLink *link;
@property (nonatomic,
assign) double slientDuration;
- (CADisplayLink *)link
{
if (!_link) {
self.link = [CADisplayLink
displayLinkWithTarget:self
selector:@selector(update)];
}
return
_link;
}
//开始录音
- (IBAction)startRecording:(id)sender {
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject] stringByAppendingString:@"tesst.caf"];
NSURL *url = [NSURL
fileURLWithPath:path];
NSMutableDictionary *setting = [NSMutableDictionary
dictionary];
//音频格式
setting[AVFormatIDKey] =
@(kAudioFormatAppleIMA4);
//音频采样率
setting[AVSampleRateKey]=
@(8000.0);
//音频通道数
setting[AVNumberOfChannelsKey] =
@(1);
//线性音频的位深度
setting[AVLinearPCMBitDepthKey] =
@(8);
// 创建录音器
AVAudioRecorder *recorder = [[AVAudioRecorder
alloc] initWithURL:url
settings:setting error:nil];
//允许测量分贝
recorder.meteringEnabled =
YES;
//缓冲
[recorder prepareToRecord];
//录音
[recorder record];
self.recorder = recorder;
}
- (IBAction)stopRecording:(id)sender {
[self.recorder
stop];
}
//真机中文件读取不到 可以在模拟器中取到声音文件
- (IBAction)playRecording:(id)sender {
//加载音乐文件
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject] stringByAppendingString:@"tesst.caf"];
// NSURL *url = [[NSBundle mainBundle] URLForResource:path withExtension:nil];
NSData *data = [[NSFileManager
defaultManager] contentsAtPath:path];
NSError *error =
nil;
_audioPlayer = [[AVAudioPlayer
alloc] initWithData:data
error:&error];
// _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
NSLog(@"%@", error);
//缓冲
[_audioPlayer
prepareToPlay];
[_audioPlayer
play];
}
声明全局成员变量
@property(nonatomic,strong)AVAudioRecorder *recorder ;
@property (nonatomic,
strong) AVAudioPlayer * audioPlayer;
@property (nonatomic,
strong) CADisplayLink *link;
@property (nonatomic,
assign) double slientDuration;
- (CADisplayLink *)link
{
if (!_link) {
self.link = [CADisplayLink
displayLinkWithTarget:self
selector:@selector(update)];
}
return
_link;
}
//开始录音
- (IBAction)startRecording:(id)sender {
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject] stringByAppendingString:@"tesst.caf"];
NSURL *url = [NSURL
fileURLWithPath:path];
NSMutableDictionary *setting = [NSMutableDictionary
dictionary];
//音频格式
setting[AVFormatIDKey] =
@(kAudioFormatAppleIMA4);
//音频采样率
setting[AVSampleRateKey]=
@(8000.0);
//音频通道数
setting[AVNumberOfChannelsKey] =
@(1);
//线性音频的位深度
setting[AVLinearPCMBitDepthKey] =
@(8);
// 创建录音器
AVAudioRecorder *recorder = [[AVAudioRecorder
alloc] initWithURL:url
settings:setting error:nil];
//允许测量分贝
recorder.meteringEnabled =
YES;
//缓冲
[recorder prepareToRecord];
//录音
[recorder record];
self.recorder = recorder;
}
- (IBAction)stopRecording:(id)sender {
[self.recorder
stop];
}
//真机中文件读取不到 可以在模拟器中取到声音文件
- (IBAction)playRecording:(id)sender {
//加载音乐文件
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject] stringByAppendingString:@"tesst.caf"];
// NSURL *url = [[NSBundle mainBundle] URLForResource:path withExtension:nil];
NSData *data = [[NSFileManager
defaultManager] contentsAtPath:path];
NSError *error =
nil;
_audioPlayer = [[AVAudioPlayer
alloc] initWithData:data
error:&error];
// _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
NSLog(@"%@", error);
//缓冲
[_audioPlayer
prepareToPlay];
[_audioPlayer
play];
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 基于jQuery的网页影音播放器jPlayer的基本使用教程
- 实例解析使用Java实现基本的音频播放器的编写要点
- java音频播放示例分享(java如何播放音频)
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题