#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类。开发者需要设置录音的参数,如采样率、位深度...
这个项目可能包括一套跨平台的解决方案,允许在不同操作系统(如Android和iOS)上后台录制视频,并将录制内容保存为MP4格式的文件。 **1. 摄像头API的使用** 在Android中,我们可以使用`Camera`或`Camera2` API来...
5. **优化和效率**:在实际应用中,需要考虑到内存占用和处理速度,可能需要对生成的WAV音频进行压缩,或者采用更高效的音频编码格式,如MP3,以减小文件大小。 6. **多平台兼容**:如果应用需要跨平台运行,如在...
标题“手机录音-amr”指的是在移动设备...综上所述,"手机录音-amr"这个主题涵盖了移动设备上的音频录制、AMR编码格式的使用以及源码开发等相关技术,对于移动应用开发者特别是涉及语音处理的项目具有很高的实践价值。