#pragma mark - 开始录音---test
- (void)beginRecordByFileName:(NSString*)_fileName
{
//设置文件名和录音路径
self.recordFileName = _fileName;
self.recordFilePath = [VoiceRecorderBaseVCgetPathByFileName:self.recordFileNameofType:@"wav"];
NSError *error = [[NSError alloc] init];
//初始化录音
self.recorder = [[[AVAudioRecorderalloc] initWithURL:[NSURLfileURLWithPath:self.recordFilePath] settings:[VoiceRecorderBaseVCgetAudioRecorderSettingDict] error:&error]autorelease];
recorder.delegate = self;
recorder.meteringEnabled = YES;
[recorderprepareToRecord];
//开始录音
[[AVAudioSessionsharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecorderror:nil];
[[AVAudioSessionsharedInstance] setActive:YESerror:nil];
[recorder record];
}
#pragma mark - wavToAmr转换
- (IBAction)wav2Amr:(id)sender {
if (_originWav.length > 0){
self.convertAmr = [_originWavstringByAppendingString:@"wavToAmr"];
//转格式
NSFileManager* fm=[NSFileManagerdefaultManager];
NSData *wavdata = [fm contentsAtPath:[VoiceRecorderBaseVC getPathByFileName:_originWav ofType:@"wav"]];
NSString * wav = [NSString stringWithFormat:@"wavLength = %lu",(unsigned long)wavdata.length];
self.wavLabel.text = wav;
[VoiceConverterwavToAmr:[VoiceRecorderBaseVCgetPathByFileName:_originWavofType:@"wav"] amrSavePath:[VoiceRecorderBaseVCgetPathByFileName:_convertAmrofType:@"amr"]];
//发送音频数据 因为要播放无压缩音频,因此音频名字上传是原wav名,但上传的data数据是转换后的arm
NSData* data = [NSDatadataWithContentsOfFile:[VoiceRecorderBaseVCgetPathByFileName:_convertAmrofType:@"amr"]];
NSLog(@"amrlength = %lu",(unsigned long)data.length);
NSString * amr = [NSString stringWithFormat:@"amrlength = %lu",(unsigned long)data.length];
self.amrLabel.text = amr;
}
}
#pragma mark - 开始录音
- (IBAction)startButtonAction:(id)sender {
startdate = [NSDate date];
self.timeLabel.text = [NSStringstringWithFormat:@"%@",startdate];
//设置文件名
self.originWav = [VoiceRecorderBaseVCgetCurrentTimeString];
//开始录音
[selfbeginRecordByFileName:self.originWav];
}
#pragma mark - 停止录音
- (IBAction)stopButtonAction:(id)sender {
stopdate = [NSDate date];
self.stopTimeLabel.text = [NSStringstringWithFormat:@"%@",stopdate];
//停止录音
if (recorder.isRecording){
[recorder stop];
}
//回调录音文件路径
if ([self.vrbDelegate respondsToSelector:@selector(VoiceRecorderBaseVCRecordFinish:fileName:)]){
[self.vrbDelegateVoiceRecorderBaseVCRecordFinish:recordFilePathfileName:recordFileName];
}
}
#pragma mark - 播放录音
- (IBAction)playVoiceButtonAction:(id)sender {
if ([[NSFileManagerdefaultManager] fileExistsAtPath:[VoiceRecorderBaseVCgetPathByFileName:_originWavofType:@"wav"]]) {
player = [playerinitWithContentsOfURL:[NSURLfileURLWithPath:[VoiceRecorderBaseVCgetPathByFileName:_originWavofType:@"wav"]] error:nil];
if (![player isPlaying]) {
player.delegate = self;
[player play];
}
}
}
相关推荐
iOS音频录制和播放
iOS功能齐全的音频录制与播放的Demo。页面虽然简单,但代码逻辑清晰、注释详细,可用于初学者参考与学习,也可用于单独功能控件的封装参考。
使用AudioQueue实现音频录制和播放。
音频的录制与播放,进行封装后的单例工具组件。 (1)使用AVAudioRecorder进行录音 (2)使用AVAudioPlayer进行音频播放 SYAudio:https://github.com/potato512/SYAudio
1、demo实现了音频流播放(边下边播)、解码、转码、AudioUnit之间的连接和设置、各效果器设置、时间获取和seek操作功能,音频高手请绕道。 2、工作过程:先下载一段音频,解析音频头信息,再转码音频为PCM,对PCM...
iOS AVFoundation框架下的AVAudioRecorder录音机的实现。
通过UIImagePickerController的实现视频录制,并且实现播放
iOS网络音频播放,讯飞语音合成集成,FreeStream cocoapods集成使用,AVplayer播放本地音频
ios应用源码之录制音频 demo recording .
本代码演示如何播放本地音乐,并且截取音频
iOS 音效音频文件 tap.aif
iOS 音频队列 录音
iOS 使用lame库将音频转化MP3会发现通过player获取时长与原文件时长不符,本文主要解决该问题
一个很简单的oc代码封装 简单下载音频对音频存储 播放的类
主要介绍了小程序ios音频播放没声音问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
iOS流式音频播放,基于网络播放实现,非常强大
里边对ios音频方面有着详细的讲解,以及demo和对应的注释,主要有类的作用,并如何使用,对ios新手有着很大帮助,对技术一般的开发者也有着很大的提高。
ios中audio不能直接通过audio.play()播放,需要用户在click事件或者touch事件中执行audio.play()才能播放。 ajax回调中audio.play()音乐不能正常播放。 用户点击按钮,等服务器返回数据后再播放相应的成功或失败的...
通过audio queue 进行音频的录制和播放功能