• 背景

    • 最近在做iOS录音相关东西,也遇到了一些坑,顺便记录下。
  • 正文 
    • 系统自带的AVFoundation框架,提供了AVAudioRecorder(录音),AVAudioPlayer(播放)两个最简单易用的API.
  • 录音播放的基础教程几篇(传送门):
    http://www.cnblogs.com/kenshincui/p/4186022.html
    http://blog.csdn.net/ysy441088327/article/details/8164120
    http://msching.github.io/
    http://code.cocoachina.com/view/126074 (新增)
  • 主要遇到了几个问题:
    • 1.AVaudioRecorder的基本录音格式设置

      NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
      [NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,//设置录音格式
      [NSNumber numberWithFloat:8000], AVSampleRateKey,//设置录音采样率,8000是电话采样率,对于一般录音已经够了
      [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
      [NSNumber numberWithInt:AVAudioQualityMin],AVEncoderAudioQualityKey, nil];
    • 注意点:录音的格式可以是AAC,M4A,PCM,具体选择根据你的项目需求。设置了格式对app的影响主要是录音文件的大小。一般情况的PCM>AAC>M4A。如果对本地存储没有限制,请随意选择。当需要控制文件大小时,就需要考虑牺牲一些,例如音质,采样质量等。
    • 其次:iOS7 之后,请再录音之前设置相应的AVAudioSession(相当于一个大管家)
      基本设置如下

      AVAudioSession *audioSession=[AVAudioSession sharedInstance];
      //设置为播放和录音状态,以便可以在录制完之后播放录音
      [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
      [audioSession setActive:YES error:nil];
      //设置播放器为扬声器模式
      [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
      NSError *audioError = nil;
      BOOL success = [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&audioError];if(!success){NSLog(@"error doing outputaudioportoverride - %@", [audioError localizedDescription]);}
      if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {[audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {if (granted) {// Microphone enabled codePADebug(@"正常录音");}else {// Microphone disabled codePADebug(@"失败录音");}}];
      }
  • 注意点:首先需要注意的是,当你在只录音的时候可以讲category设置为AVAudioSessionCategoryRecord;需要录音并播放的时候设置AVAudioSessionCategoryPlayAndRecord;需要播放的时候设置AVAudioSessionCategoryPlayback。
    • 其次,由于录音并播放时,会发现一个录音的时候声音正常,到播放的时候,声音很小。这是由于默认播放是通过听筒,而非扬声器。请设置音频输出为扬声器。并在插上耳机的时候,会优先耳机。
      解决声音小请参考:http://ruckt.info/playing-sound-through-iphone-speaker/

  • iOS上,录音音频格式可以为以下几种:

AAC (MPEG-4 Advanced Audio Coding)

ALAC (Apple Lossless)

iLBC (internet Low Bitrate Codec, for speech)

IMA4 (IMA/ADPCM)

Linear PCM (uncompressed, linear pulse-code modulation)

  • 文件格式可以为:.caf(默认支持最全);.acc;.m4a等,如果需要和安卓同步,就需要统一格式,并需要转码。

  • 局限性:recorder,player简单易用,但是有局限性。
    对我项目影响最大的是,多次录音时,并播放时,会出现文件错误。
    在继续利用recorder,player的前提下,就需要将每次录音完成的文件进行数据追加。

    if ([[NSFileManager defaultManager] fileExistsAtPath:临时音频路径) {NSData *tempAudioData = [[NSData alloc] initWithContentsOfFile:临时音频路径];if ([[NSFileManager defaultManager] fileExistsAtPath:音频路径]) {NSMutableData *newAudioData = [NSMutableData data];NSData *audioData = [[NSData alloc] initWithContentsOfFile:[self configureAudioRecordFilePath:self.currentFileName]];[newAudioData appendData:audioData];[newAudioData appendData:tempAudioData];PADebug(@"data length:%zd", [newAudioData length]);[newAudioData writeToFile:音频路径 atomically:YES];}else{[tempAudioData writeToFile:[self configureAudioRecordFilePath:self.currentFileName] atomically:YES];}[[NSFileManager defaultManager]removeItemAtPath:音频路径 error:nil];}

ios 录音,播放 tips相关推荐

  1. iOS录音播放简例-AVFoundation

    iOS录音播放简例-AVFoundation 本例简单介绍一个demo,录制一段声音,再播放它,用的是AVFoundation框架. 一.添加AVFoundation框架,在.m文件中引入 #impo ...

  2. iOS 音频播放,录音,视频播放,拍照,视频录制

    iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 2014-12-26 09:15 by KenshinCui, 149110 阅读, 67 评论, 收藏, 编辑 --iOS多媒体 概览 随 ...

  3. iOS录音和音频播放

    文章目录 简介 `AVAudioRecorder`录音 `AVAudioPlayer`播放音频文件. 简介 最近公司研发了一个语音识别的框架,但这个框架是后端识别,所以需要手机端录音,录音后将音频文件 ...

  4. Swift实现iOS录音与播放音频功能

    Swift实现iOS录音与播放音频功能 作用 AVPLayer:可以用来播放在线及本地音视频 AVAudioSession:音频会话,主要用来管理音频设置与硬件交互 使用时需要导入 #import & ...

  5. iOS音频播放(一):概述

    (本文转自码农人生) 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改,我也因此对于iOS下的音频播放实现有了一定的研究.写这个 系列的博客目的一方面希望能够抛砖引玉 ...

  6. iOS音频播放 (二):AudioSession 转

    原文出处 :http://msching.github.io/blog/2014/07/08/audio-in-ios-2/ 前言 本篇为<iOS音频播放>系列的第二篇. 在实施前一篇中所 ...

  7. iOS音频播放 (一):概述 转

    2019独角兽企业重金招聘Python工程师标准>>> 基础 先来简单了解一下一些基础的音频知识. 目前我们在计算机上进行音频播放都需要依赖于音频文件,音频文件的生成过程是将声音信息 ...

  8. iOS音频播放之AudioQueue(一):播放本地音乐

    AudioQueue简介 AudioStreamer说明 AudioQueue详解 AudioQueue工作原理 AudioQueue主要接口 AudioQueueNewOutput AudioQue ...

  9. 视频直播APP源码开发iOS音频播放流程

    视频直播APP源码开发iOS音频播放流程 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的, ...

  10. iOS音频播放 (八):NowPlayingCenter和RemoteControl

    转自 码农人生 ChengYin's coding life http://msching.github.io/blog/2014/11/06/audio-in-ios-8/ iOS音频播放 (八): ...

最新文章

  1. range函数python2和3区别_【后端开发】range函数python2和3区别
  2. android代码生成excel,AndroidExcel
  3. 苹果下微信浏览器返回上一页不刷新问题解决方案
  4. properties 配置回车_PTB220/330 | 长春气象仪器所自动站配置
  5. 自学python买什么教材-最好的Python入门教材是哪本?
  6. winform打印html文件,c# 如何实现web打印插件
  7. scrapy解析网页时,针对一些特别格式的数据的处理
  8. 全面了解超声波传感器
  9. 人员规范操作行为识别算法
  10. c++语言编的小游戏,用C++语言编写小游戏系统(可读取文件)
  11. App详细测试流程及测试点
  12. Polkadot 基础
  13. Tomcat工作原理详解
  14. 【SPSS】数据预处理基础教程(附案例实战)
  15. Splashtop 与 Acronis 集成,提供可扩展的远程支持
  16. HackBrowserData密码抓取
  17. python多元非线性拟合csdn_手写算法-Python代码实现非线性回归
  18. 计算机软考下午考试,2020年计算机软考下午考题解答技巧方法
  19. JSP四大作用域详解
  20. 04数据分析- 描述性分析方法

热门文章

  1. 如何让计算机桌面字体变大,如何把字体放大 如何更改桌面与网页字体大小
  2. 【facenet人脸识别】利用LFW数据集进行人脸比对测试
  3. 年度最骚语言之文言文编程!!!
  4. c 语言程序设计基础题答案,C语言程序设计基础教程_习题答案
  5. 安徽省计算机一级选择题题库,计算机等级考试一级选择题题库
  6. 1.ZooKeeper Java客户端的基本使用「第三章 ZooKeeper Java客户端」「架构之路ZooKeeper理论和实战」
  7. Java 数据库添加,修改和删除
  8. 带你彻底弄明白!java简历模板下载
  9. 手游方舟怎么输入代码_方舟秘籍代码详细攻略介绍一览
  10. 商务与经济统计(13版,Python)笔记 01-02章