精华内容
下载资源
问答
  • ios自带录音格式(caf)转MP3格式

    千次阅读 2017-10-30 16:18:51
    //(转码频率:11025或者44100)这里的频率要和录音时设置的频率一样,否则会转码失败  lame_set_VBR(lame, vbr_default);  lame_init_params(lame);    do {  read = fread(pcm_buffer, 2*sizeof...

    直接上代码(项目中在使用,直接复制吧):

    - (void)audio_PCMtoMP3
    {
        
        @try {
            int read, write;
            
            FILE *pcm = fopen([voiceFilePath cStringUsingEncoding:1], "rb");  //source 被转换的音频文件位置
            fseek(pcm, 4*1024, SEEK_CUR);                                   //skip file header
            FILE *mp3 = fopen([mp3PathStr cStringUsingEncoding:1], "wb");  //output 输出生成的Mp3文件位置
            
            const int PCM_SIZE = 8192;
            const int MP3_SIZE = 8192;
            short int pcm_buffer[PCM_SIZE*2];
            unsigned char mp3_buffer[MP3_SIZE];
            
            lame_t lame = lame_init();
            lame_set_in_samplerate(lame, 11025); //(转码频率:11025或者44100)这里的频率要和录音时设置的频率一样,否则会转码失败
            lame_set_VBR(lame, vbr_default);
            lame_init_params(lame);
            
            do {
                read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);
                if (read == 0)
                    write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
                else
                    write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
                
                fwrite(mp3_buffer, write, 1, mp3);
                
            } while (read != 0);
            
            lame_close(lame);
            fclose(mp3);
            fclose(pcm);
        }
        @catch (NSException *exception) {
            NSLog(@"%@",[exception description]);
        }
        @finally {
            NSLog(@"MP3生成成功: %@",mp3PathStr);
        }
        
    }

    展开全文
  • 1、添加录音按钮(一直按着录音,松手之后录音结束,结束播放录音)  UIButton *speakBut = [UIButton buttonWithType:UIButtonTypeCustom];   speakBut.frame = CGRectMake(60, 340, 200, 40);  [speakBut ...
        

    1、添加录音按钮(一直按着录音,松手之后录音结束,结束播放录音)

        UIButton *speakBut = [UIButton buttonWithType:UIButtonTypeCustom];
        speakBut.frame = CGRectMake(60, 340, 200, 40);
        [speakBut setBackgroundImage:[UIImage imageNamed:@"btn_orange" cache:NO] forState:UIControlStateNormal];
        [speakBut setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [speakBut addTarget:self action:@selector(btnDown:) forControlEvents:UIControlEventTouchDown];
        [speakBut addTarget:self action:@selector(pressToSpeak:) forControlEvents:UIControlEventTouchUpInside];
        [speakBut setTitle:@"按住说话" forState:UIControlStateNormal];
        [speakBut setTitle:@"正在录音" forState:UIControlStateHighlighted];
        speakBut.titleLabel.font = [UIFont boldSystemFontOfSize:25];
        [mainView addSubview:speakBut];

    //录音文件保存路径
        NSString *recordUrl = NSTemporaryDirectory();//[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        recordUrl = [recordUrl stringByAppendingPathComponent:@"sound.aac"];

        //录音设置
        NSMutableDictionary *recordSetting = [[[NSMutableDictionary alloc]init] autorelease];
        //设置录音格式  AVFormatIDKey==kAudioFormatLinearPCM
        [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
        //设置录音采样率(Hz) 如:AVSampleRateKey==8000/44100/96000(影响音频的质量)
        [recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];
        //录音通道数  1 或 2
        [recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
        //线性采样位数  8、16、24、32
        [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
        //录音的质量
        [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];
       
        avRecorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:recordUrl] settings:recordSetting error:nil];
        avRecorder.delegate = self;

       
        avSession = [AVAudioSession sharedInstance];
        [avSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
        [avSession setActive:YES error:nil];

    //按钮按下方法
    - (void)btnDown:(id)sender
    {
        [avRecorder prepareToRecord];
        [avRecorder record];
    }

    //按钮点击方法
    - (void)pressToSpeak:(id)sender{
        double cTime = avRecorder.currentTime;
        //NSLog(@"sss---->%f",cTime);
        if (cTime > 2) {//如果录制时间<2 不发送
            NSLog(@"发出去");//可以将音频文件发送后台
        }else {
            //删除记录的文件
            [avRecorder deleteRecording];
            //删除存储的
        }
        [avRecorder stop];
    }

    //录制结束的代理方法
    - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
        [avSession setActive:NO error:nil];
        NSString *recordUrl = NSTemporaryDirectory();//[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        recordUrl = [recordUrl stringByAppendingPathComponent:@"sound.aac"];
        AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:recordUrl] error:nil];
        [player play];
    }
    展开全文
  • 1、添加录音按钮(一直按着录音,松手之后录音结束,结束播放录音) UIButton *speakBut = [UIButton buttonWithType:UIButtonTypeCustom]; speakBut.frame = CGRectMake(60, 340, 200, 40); [speakBut ...

    1、添加录音按钮(一直按着录音,松手之后录音结束,结束播放录音)

        UIButton *speakBut = [UIButton buttonWithType:UIButtonTypeCustom];
        speakBut.frame = CGRectMake(60, 340, 200, 40);
        [speakBut setBackgroundImage:[UIImage imageNamed:@"btn_orange" cache:NO] forState:UIControlStateNormal];
        [speakBut setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [speakBut addTarget:self action:@selector(btnDown:) forControlEvents:UIControlEventTouchDown];
        [speakBut addTarget:self action:@selector(pressToSpeak:) forControlEvents:UIControlEventTouchUpInside];
        [speakBut setTitle:@"按住说话" forState:UIControlStateNormal];
        [speakBut setTitle:@"正在录音" forState:UIControlStateHighlighted];
        speakBut.titleLabel.font = [UIFont boldSystemFontOfSize:25];
        [mainView addSubview:speakBut];

    //录音文件保存路径
        NSString *recordUrl = NSTemporaryDirectory();//[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        recordUrl = [recordUrl stringByAppendingPathComponent:@"sound.aac"];

        //录音设置
        NSMutableDictionary *recordSetting = [[[NSMutableDictionary alloc]init] autorelease];
        //设置录音格式  AVFormatIDKey==kAudioFormatLinearPCM
        [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
        //设置录音采样率(Hz) 如:AVSampleRateKey==8000/44100/96000(影响音频的质量)
        [recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];
        //录音通道数  1 或 2
        [recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
        //线性采样位数  8、16、24、32
        [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
        //录音的质量
        [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];
       
        avRecorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:recordUrl] settings:recordSetting error:nil];
        avRecorder.delegate = self;

       
        avSession = [AVAudioSession sharedInstance];
        [avSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
        [avSession setActive:YES error:nil];

    //按钮按下方法
    - (void)btnDown:(id)sender
    {
        [avRecorder prepareToRecord];
        [avRecorder record];
    }

    //按钮点击方法
    - (void)pressToSpeak:(id)sender{
        double cTime = avRecorder.currentTime;
        //NSLog(@"sss---->%f",cTime);
        if (cTime > 2) {//如果录制时间<2 不发送
            NSLog(@"发出去");//可以将音频文件发送后台
        }else {
            //删除记录的文件
            [avRecorder deleteRecording];
            //删除存储的
        }
        [avRecorder stop];
    }

    //录制结束的代理方法
    - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
        [avSession setActive:NO error:nil];
        NSString *recordUrl = NSTemporaryDirectory();//[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        recordUrl = [recordUrl stringByAppendingPathComponent:@"sound.aac"];
        AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:recordUrl] error:nil];
        [player play];
    }
    展开全文
  • iOS 录像录音

    千次阅读 2011-06-03 16:43:00
    这段利用苹果自带相机进行录像的代码由 CocoaChina 会员 “1056975026” 分享,对开发的应用中用到拍照、摄像功能的开发者应该有所帮助。-(void) choosePhotoBySourceType: ...

    这段利用苹果自带相机进行录像的代码由 CocoaChina 会员 “1056975026” 分享,对开发的应用中用到拍照、摄像功能的开发者应该有所帮助。

    8-1106011552450-L.jpg

     


    展开全文
  • 原理: 进入界面,先遍历文件目录,将所有的文件名,...1.ios录音主要使用ios自带的类,是工程中需要手动添加这俩个framework#import #import <CoreAudio/CoreAudioTypes.h>2.在录音前,先监测文件存放目录是否存在,
  • iOS 录音踩坑之旅

    2019-09-02 19:16:34
    1、使用iOS自带API:AVAudioRecorder录音wav格式音频,存储到本地,录音暂停(pause)的时候,路径下并没有生成真正的音频文件(没有任何声音),只有调用stop结束录音,才会生成完整的wav文件。 2、解决办法:暂停...
  • iOS录音和音频播放

    千次阅读 2019-01-09 14:58:55
    iOS原生自带语音识别
  • iOS之利用系统自带API实现录音功能

    千次阅读 2014-11-18 20:37:40
    1、添加录音按钮(一直按着录音,松手之后录音结束,结束播放录音) UIButton *speakBut = [UIButton buttonWithType:UIButtonTypeCustom]; speakBut.frame = CGRectMake(60, 340, 200, 40); [speakBut ...
  • 1、AVAudioSessionCategory说明 1.1 AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound ...并且不会中止其它应用播放声音,可以和其它自带应用如iPod,safari等同时播放声音。 注意:该Cat...
  • ios 录音,播放 tips

    2015-12-22 17:30:04
    最近在做iOS录音相关东西,也遇到了一些坑,顺便记录下。 正文  系统自带的AVFoundation框架,提供了AVAudioRecorder(录音),AVAudioPlayer(播放)两个最简单易用的API. 录音播放的基础教程几篇(传送门): ...
  • 获取录音设备, 返回值是设备名 string[] mDevice = Microphone.devices; 开始录音 // 如果 _deviceName = null; 会选默认的录音输入口 // _micSecond 为录音时常,最大不超过3600秒 //_frequency 采样率一般为...
  • ios 录音播放问题

    2013-11-08 14:11:20
    现在分析了sdk自带的speakHere的demo.它里面是使用AudioQueue实现先录制成一个文件。然后再播放这个文件。没有达到同时录音和播放。  我想达到的目的是同时录音和播放。于是我修改demo如下。加入一个ringbuffer, ...
  • 在苹果手机里面,我们可以借助苹果手机的自带应用——语音备忘录进行录音。 操作方法: 1.打开苹果手机,在桌面应用中找到语音备忘录 2.在界面上点击红色的按钮开始录音 3.完成录音之后点击红色的按钮停止 4.新录制...
  • <div><p> 使用https://xiangyuecn.gitee.io/recorder/app-support-sample/能正常使用 ...请求权限"就报“打开失败:此浏览器不支持录音”</p><p>该提问来源于开源项目:xiangyuecn/Recorder</p></div>
  • 目前因项目需要,接触到有关... 一、功能:录音,播放 问题:录音成功之后文件不能播放  #import 1、主要使用自带的AVFoundation类库,在.h文件中导入头文件 2、.h 声明 {  AVAudioSession *session;  AVAudi
  • IOS自带的浏览器可以录音播放。但开发的APP里面集成浏览器就弹出 不支持当前浏览器! 请问有什么办法解决吗? 麻烦给一个思路 谢谢!</p><p>该提问来源于开源项目:xiangyuecn/Recorder...
  • 近日项目集成了个带聊天功能的Webview,一开始只是文字聊天后来增加需求要可以发文字/图片/语音等,一开始使用Webview自带的授权来实现录音功能的,只要授权即可,后面由于IOS的不支持,导致要跟IOS一致,本地写几个方法. ...
  • 本文主要是采用iOS自带的类MPMediaPickerController 来实现UIImagePickerController音频、视频文件的选取。  首先需要说明的是,如果需求是需要从语音备忘录里面读取原有录音,那么是较难实现的。我在...
  • 如果您的App里需要获得由系统自带的照相机、摄像机和录音软件所生成的文件。可以借鉴以下代码来调用iPhone摄像头拍照或者摄像的功能,并把获得的数据直接写入到文件。  如果您的App里需要获得由系统自带的照相机、...
  • 开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时,指定声音输出设备 ...第一个问题,对于iTouch和iPad等本身...对于iphone,由于其本身已近自带麦...
  • 由于公司要在app中实现聊天功能,在花了一段时间了解实现该功能后发现网上的资料大多只实现了聊天对话,互发图片,录音等等,找了好久都没有发现一个自带存储聊天记录的资料,于是我在简单的用SQL实现了存储功能后...
  • iOS 之检测耳机插入和拔出

    千次阅读 2014-09-09 18:15:12
    开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个...对于iphone,由于其本身已近自带麦克风,所以相对容易。第二个问题,当在本身带有外放的设备上插入耳机等输出设备时,就出现了多个输出设备,需要实现在程
  • 如果您的App里需要获得由系统自带的照相机、摄像机和录音软件所生成的文件。可以借鉴以下代码来调用iPhone摄像头拍照或者摄像的功能,并把获得的数据直接写入到文件。 //这一段是,点击一个takePicture按钮的...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

ios自带录音