#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应用中实现...
然而,有时候由于各种原因,如存储卡故障、文件传输错误或软件问题,可能会导致m4a音频文件损坏,无法正常播放。本文将深入探讨m4a音频文件损坏的原因及如何进行修复,以确保我们能够恢复那些宝贵的录音。 首先,...
6. **程序源码分析**:通过阅读和理解提供的源码,开发者可以学习到如何在实际项目中集成上述功能,包括初始化音频会话、设置录音和播放参数、处理音频文件等步骤。 7. **知识文档**:郝旭亮的文档很可能会涵盖iOS...
在iOS平台上实现语音通信涉及到多个...总的来说,"ios语音通信"是一个涵盖音频录制、编码、网络传输、解码和播放的综合性技术话题,需要开发者具备扎实的iOS编程基础,理解音频处理原理,并熟悉网络通信的相关知识。
在iOS开发中,有时我们需要将录制的音频文件从常见的.wav格式转换为更紧凑且适合网络传输的.amr格式。这通常发生在实现跨平台语音通信应用时,如VoIP或即时通讯应用。在这种场景下,iOS开发者需要理解如何处理音频...
总的来说,"IOS-Compress-master"是一个实用的示例,它演示了如何在iOS平台上利用Speex库进行音频压缩和解压缩,同时提供了跨平台的兼容性,对于那些需要处理音频数据的开发者来说,这是一个很好的学习和参考资源。
前言 音频格式是数字音乐世界中的重要组成部分,它们决定了音乐文件的存储方式、音质以及文件大小。本文将深入探讨19种常见的音频...了解这些音频格式的特性,将有助于我们在音乐制作、存储和播放时做出明智的决策。
这些文件可能展示了如何使用特定的编程语言(如Java、C++、Swift或Python)以及相关库来实现音频录制和播放功能。具体的内容可能包括初始化音频设备、设置录音参数、开始和停止录音、保存录音文件、加载和播放音频...
这个示例可以帮助开发者理解如何在iOS平台上处理AMR音频,包括录制AMR音频、播放AMR音频以及进行格式转换。使用这样的示例,开发者可以快速集成AMR功能到自己的应用程序中,例如开发语音聊天应用或录音应用。 总之...
通过源码,我们可以看到如何将压缩的音频数据还原为原始PCM(脉冲编码调制)信号,以及如何将未经压缩的PCM数据压缩成更小的文件。 3. **滤波与信号处理**:音频处理往往需要对信号进行滤波、降噪、增益控制等操作...
- **AMR**:这种音频格式的压缩比非常高,因此文件体积很小,但录音质量较差。需要注意的是,iOS自4.x版本起不再明确支持AMR格式,因此在iOS平台上使用AMR可能需要借助第三方库进行转换。 - **PCM**:实际上,PCM...
开发者可以通过监听音频流,实现实时的音频效果,如混响、均衡器、动态压缩等。这对于音乐制作、语音识别或者语音增强等应用场景非常有用。 **6. 文件存储与权限** 在iOS中,录音文件通常保存在应用的沙盒内,需要...
NLVideoPlayerDemo是一个基于Objective-C开发的项目,其主要目标是实现类似微信小视频的录制功能,同时还包括视频的转码和压缩。这个项目对于iOS开发者来说,是一个很好的学习资源,特别是那些想要深入理解视频处理...
1. **音频录制**:开发者可能使用了设备内置的音频API,如Android的MediaRecorder或者iOS的AVFoundation框架,来捕捉用户的语音输入。这些API允许程序在指定的格式和质量下录制音频,并保存为文件。 2. **文件存储*...
它在使用 Phonegap 的音频捕获或媒体录制功能时很有用。 不建议通过蜂窝连接上传 WAV 文件。 M4A 编码文件是大小的 1/4 到 1/10。 使用插件 该插件在 window.encodeAudio(originalSrc, success, fail) 方法中创建了...
1. **音频录制**: 微信语音聊天的核心在于音频的录制。这通常通过操作系统提供的API来实现,例如在iOS上使用AVFoundation框架,Android上则可以使用MediaRecorder类。开发者需要设置录音的参数,如采样率、位深度...
标题“女声:你有一条新订单提醒.zip”暗示了这是一个包含有女性声音录制的订单提醒消息的压缩文件。这个提醒适用于各种业务环境,可能是电商、餐饮或服务行业,用于通知工作人员有新的订单到来。描述中提到的声音...
这个项目可能包括一套跨平台的解决方案,允许在不同操作系统(如Android和iOS)上后台录制视频,并将录制内容保存为MP4格式的文件。 **1. 摄像头API的使用** 在Android中,我们可以使用`Camera`或`Camera2` API来...
5. **优化和效率**:在实际应用中,需要考虑到内存占用和处理速度,可能需要对生成的WAV音频进行压缩,或者采用更高效的音频编码格式,如MP3,以减小文件大小。 6. **多平台兼容**:如果应用需要跨平台运行,如在...