`

ios音频录制和播放,文件很小。压缩效果不错

    博客分类:
  • iOS
阅读更多

#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:[VoiceRecorderBaseVCgetAudioRecorderSettingDicterror:&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];

        }

        

    }

 

}

1
2
分享到:
评论
5 楼 用户6006038975 2016-09-23  
macd2666 写道
录制出来的语音声音好轻啊。

你好,这个编译错误是怎么破的?
4 楼 用户6006038975 2016-09-23  
macd2666 写道
录制出来的语音声音好轻啊。

3 楼 用户6006038975 2016-09-23  
linker command failed with exit code 1 (use -v to see invocation)
你好,感谢分享,
这个编译错误?
2 楼 macd2666 2016-03-19  
录制出来的语音声音好轻啊。
1 楼 权勤扬 2013-12-23  
编译不过,能告诉下?

相关推荐

    iOS仿微信录制小视频功能

    在iOS开发中,实现类似微信的小视频录制功能是一项常见的需求,尤其在社交应用中。这个功能不仅需要捕捉视频,还要支持视频的压缩处理,以确保上传的效率和节省存储空间。接下来,我们将深入探讨如何在iOS应用中实现...

    手机录音,m4a音频损坏修复,亲测有用

    然而,有时候由于各种原因,如存储卡故障、文件传输错误或软件问题,可能会导致m4a音频文件损坏,无法正常播放。本文将深入探讨m4a音频文件损坏的原因及如何进行修复,以确保我们能够恢复那些宝贵的录音。 首先,...

    《iOS语音功能知识与技术分享》工程与文档

    6. **程序源码分析**:通过阅读和理解提供的源码,开发者可以学习到如何在实际项目中集成上述功能,包括初始化音频会话、设置录音和播放参数、处理音频文件等步骤。 7. **知识文档**:郝旭亮的文档很可能会涵盖iOS...

    ios语音通信

    在iOS平台上实现语音通信涉及到多个...总的来说,"ios语音通信"是一个涵盖音频录制、编码、网络传输、解码和播放的综合性技术话题,需要开发者具备扎实的iOS编程基础,理解音频处理原理,并熟悉网络通信的相关知识。

    IOS wav转amr代码例子

    在iOS开发中,有时我们需要将录制的音频文件从常见的.wav格式转换为更紧凑且适合网络传输的.amr格式。这通常发生在实现跨平台语音通信应用时,如VoIP或即时通讯应用。在这种场景下,iOS开发者需要理解如何处理音频...

    IOS-Compress-master.rar

    总的来说,"IOS-Compress-master"是一个实用的示例,它演示了如何在iOS平台上利用Speex库进行音频压缩和解压缩,同时提供了跨平台的兼容性,对于那些需要处理音频数据的开发者来说,这是一个很好的学习和参考资源。

    19种音频格式的介绍与音质压缩比的比较.docx

    前言 音频格式是数字音乐世界中的重要组成部分,它们决定了音乐文件的存储方式、音质以及文件大小。本文将深入探讨19种常见的音频...了解这些音频格式的特性,将有助于我们在音乐制作、存储和播放时做出明智的决策。

    17_audio_record_play.zip

    这些文件可能展示了如何使用特定的编程语言(如Java、C++、Swift或Python)以及相关库来实现音频录制和播放功能。具体的内容可能包括初始化音频设备、设置录音参数、开始和停止录音、保存录音文件、加载和播放音频...

    libopencore-amrnb.a和amrwb.a iOS7.1支持armv7,armv7s,arm64版本 附上arm转wav的小例子

    这个示例可以帮助开发者理解如何在iOS平台上处理AMR音频,包括录制AMR音频、播放AMR音频以及进行格式转换。使用这样的示例,开发者可以快速集成AMR功能到自己的应用程序中,例如开发语音聊天应用或录音应用。 总之...

    商业编程-源码-音频技术源代码cj60lib_demos.zip

    通过源码,我们可以看到如何将压缩的音频数据还原为原始PCM(脉冲编码调制)信号,以及如何将未经压缩的PCM数据压缩成更小的文件。 3. **滤波与信号处理**:音频处理往往需要对信号进行滤波、降噪、增益控制等操作...

    利用android的AudioRecord保存PCM文件并对其播放

    - **AMR**:这种音频格式的压缩比非常高,因此文件体积很小,但录音质量较差。需要注意的是,iOS自4.x版本起不再明确支持AMR格式,因此在iOS平台上使用AMR可能需要借助第三方库进行转换。 - **PCM**:实际上,PCM...

    SPEAKHERE语音录入功能

    开发者可以通过监听音频流,实现实时的音频效果,如混响、均衡器、动态压缩等。这对于音乐制作、语音识别或者语音增强等应用场景非常有用。 **6. 文件存储与权限** 在iOS中,录音文件通常保存在应用的沙盒内,需要...

    NLVideoPlayerDemo:高仿微信小视频录制,以及转码,压缩

    NLVideoPlayerDemo是一个基于Objective-C开发的项目,其主要目标是实现类似微信小视频的录制功能,同时还包括视频的转码和压缩。这个项目对于iOS开发者来说,是一个很好的学习资源,特别是那些想要深入理解视频处理...

    仿微信语音Demo

    1. **音频录制**:开发者可能使用了设备内置的音频API,如Android的MediaRecorder或者iOS的AVFoundation框架,来捕捉用户的语音输入。这些API允许程序在指定的格式和质量下录制音频,并保存为文件。 2. **文件存储*...

    cordova-phonegap-audio-encode:CordovaPhonegap 插件,用于在 iOS 中将音频文件压缩编码为 m4a

    它在使用 Phonegap 的音频捕获或媒体录制功能时很有用。 不建议通过蜂窝连接上传 WAV 文件。 M4A 编码文件是大小的 1/4 到 1/10。 使用插件 该插件在 window.encodeAudio(originalSrc, success, fail) 方法中创建了...

    微信语音聊天demo

    1. **音频录制**: 微信语音聊天的核心在于音频的录制。这通常通过操作系统提供的API来实现,例如在iOS上使用AVFoundation框架,Android上则可以使用MediaRecorder类。开发者需要设置录音的参数,如采样率、位深度...

    女声:你有一条新订单提醒.zip

    标题“女声:你有一条新订单提醒.zip”暗示了这是一个包含有女性声音录制的订单提醒消息的压缩文件。这个提醒适用于各种业务环境,可能是电商、餐饮或服务行业,用于通知工作人员有新的订单到来。描述中提到的声音...

    phoneCamera_摄像头录像代码_视频_

    这个项目可能包括一套跨平台的解决方案,允许在不同操作系统(如Android和iOS)上后台录制视频,并将录制内容保存为MP4格式的文件。 **1. 摄像头API的使用** 在Android中,我们可以使用`Camera`或`Camera2` API来...

    wav.rar_金额 播报 wav

    5. **优化和效率**:在实际应用中,需要考虑到内存占用和处理速度,可能需要对生成的WAV音频进行压缩,或者采用更高效的音频编码格式,如MP3,以减小文件大小。 6. **多平台兼容**:如果应用需要跨平台运行,如在...

Global site tag (gtag.js) - Google Analytics