音频文件(Audio File)

1、有两个概念
(1)、文件格式(File Format or Audio Containers)——描述文件本身的格式,里面的音频数据可以用不同的编码格式。
例如:caf文件就是一种文件格式。这种文件里面包含的音频数据可以是MP3编码,线性PCM编码或者其他的编码格式。
(2)、数据格式(Data Format or Audio Encoding)——音频数据的编码格式。

2、数据格式(Data Format or Audio Encoding)
(1)、AAC
(2)、HE-AAC
(3)、AMR
(4)、ALAC
(5)、iLBC
(6)、IMA4
(7)、linear PCM
(8)、u-law and a-law
(9)、MP3

3、我应该选择那种数据格式?
实际上,只有少数的数据格式更适合使用,在选择数据格式时,要了解下面两个方面
(1)、你可以又快又好的播放line PCM、IMA4和一些其他的无压缩或简单压缩的数据格式。
(2)、对于一些高级的数据格式,例如AAC、MP3和ALAC等,iPhone有硬件来支持快速解码,但问题在于,硬件解码每一次只能处理一个文件。当有多个文件要处理时,其他的解码会放在软件中解码,速度会变得很慢。

所以,选择数据格式,需要考虑以下两个方面:
(1)、如果空间不是问题:所有的数据格式都采用linear PCM,不仅仅因为它解码最快,而且可以同时播放多个同样的数据格式,而不会引起CPU资源消耗过度。
(2)、如果空间是问题:那么如果是背景音乐文件,请选择AAC数据格式,如果是音效文件,选择IMA4数据格式。

4、Linear PCM的几种变种
Linear PCM是iPhone上最喜欢的无压缩数据格式。
根据音频数据如何存储,Linear PCM有几个变种。例如,数据可以存储成大端格式,小端格式;数据可以存储成浮点型,整型,和各种位宽。

iPhone上最喜欢的linear PCM变种是小端,整型,16-bit或者LEI16。
MAC OSX上最喜欢的linear PCM变种是native-endian floating point 32-bit

因为音频文件经常在MAC上创建,所以在iPhone上使用时最好先检查一下,最好转换成iPhone喜欢的格式后再用。

5、文件格式(File formats or Audio Containers)
iPhone支持许多文件格式,包括MPEG-1(.mp3),MPEG-2 ADTS(.aac),AIFF,CAF和WAVE。这里的重点是,通常情况下,你只需要使用CAF,因为它可以包含iPhone支持的任何数据格式(编码格式),而且它是iPhone最喜欢的文件格式。

6、Bit Rates
bit rates是和数据格式(编码格式)相关的一个技术指标。bit rate是指音频文件每秒占用(takes up)的字节数(bytes)。
一些数据格式例如AAC和MP3让你指定音频文件压缩成的字节数。越低的bite rate,音频质量越差。

你应该根据实际情况选择合适的bit rate,尝试不同的bit rates,试图在file size和quality之间找一个最合适的平衡点。如果你的文件大部分是speech,你可能get away with a lower bit rate。

下表给出通用的bit rate

32kbit/s: AM Radio quality
48kbit/s: Common rate for long speech podcasts
64kbit/s: Common rate for normal-length speech podcasts
96kbit/s: FM Radio quality
128kbit/s: Most common bit rate for MP3 music
160kbit/s: Musicians or sensitive listeners prefer this from 128kbit/s
192kbit/s: Digital radio broadcasting quality
320kbit/s: Virtually indistinguishable from CDs
500kbit/s-1,411kbit/s: Lossless audio encoding such as linear PCM

7、采样率
采样率也是和数据格式相关的一个技术指标。
当把一个模拟信号转换成一个数字信号的时候,采样率描述了 波形被采样的频率 (即每秒钟采样多少次波形)。
大部分情况下,44100Hz会被采用,因为它和CD Audio的采样率是一样的。

FAA:
1、how to record audio as mp3 file by using AvAudiorecorder
http://stackoverflow.com/questions/10314510/how-to-record-audio-as-mp3-file-by-using-avaudiorecorder

2、The Problem is kAudioFormatMPEGLayer3 which is not supported by AVAudioRecorder.

Alternatively you can use kAudioFormatAppleIMA4 for your recording purpose.

Finally you can write your own encoding logic to convert kAudioFormatAppleIMA4 in to MP3 Format.

The other supported encoding for Recording purpose are

kAudioFormatMPEG4AAC   
kAudioFormatAppleLossless  
kAudioFormatAppleIMA4   
kAudioFormatiLBC 
kAudioFormatULaw 
kAudioFormatLinearPCM 
For more info you can refer to this post of SO.

关于iPhone音频的那些事的更多相关文章

  1. WebRTC 系列之音频会话管理

    WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的 API.W3C 和 IETF 在2021年1月26日共同宣布 WebRTC 1. ...

  2. IOS 音频开发文件大小计算

    音频基础知识 音频文件计算大小 音频转码 标签(空格分隔): 调查 IOS音频 https://developer.apple.com/library/ios/documentation/MusicA ...

  3. iOS 音频开发

      音频基础知识 组成 音频文件的组成:文件格式(或者音频容器) + 数据格式(或者音频编码). 文件格式(或音频容器)是用于形容文件本身的格式. 我们可以通过多种不同的方法为真正的音频数据编码.例如 ...

  4. [工具推荐]_iOS音频批量转换

    通常为了便于市场推广和获得更高的下载量,产品安装包的体积是越小越好.那么问题来了,要如何才能做到使安装包的体积最小化呢.根据产品的组成成分,最终可以大概分为,代码,图片,视频,音频等这几部分,今天我们 ...

  5. html5手机常见问题与工具分享

    mobileTech A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 ...

  6. mobileTech

    A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 工具类网站 HTML ...

  7. (任寒韬)WebApp群主 - MobileTech 资料

    web app : http://www.lightapp.cn/brand/index/4101 https://github.com/jtyjty99999/mobileTech/blob/mas ...

  8. mobilehack -转

    # mobileHack##工具类网站 [HTML5 与 CSS3 技术应用评估](http://html5please.com/ "html5与css3技术应用评估") [各种奇 ...

  9. 笔记- iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案

    这几个月一直在做iphone手机音视频的东西,由于个人比较懒,所以一直没整理,现在闲的蛋疼,并且以后项目要搁置了,在这里记录一下我做的iphone手机推流的东西. 项目都是个人的调研与实验,可能很多不 ...

随机推荐

  1. Oracle---->Join

    最近使用ODI,其中有一个JOIN组件涉及到常见的几种JOIN类型,因此整理了下交叉连接和自然连接的区别. 一.概述 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来 ...

  2. Oracle Data Integrator 12c-模型(Model)和 数据存储(DataStore)

    一.概念 Model模型: 描述关系型数据的模型. 是一组存放在特定的技术(如Oracle)的数据存储的集合.例如当技术为Oracle时,对应于数据库的Scheme DataStore: 数据存储 一 ...

  3. MUI(拍照+系统相册)图片上传剪切预览

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. scala 几个函数小例子

    后续补充 /** * Created by dengy on 2017/12/18. */ object grammarPractise { def main(args: Array[String]) ...

  5. Ubuntu18.04下的 Android Studio 3.1.2

    Android Studio安装 参考官网上的安装说明 # 安装依赖 :i386 lib32z1 libbz2-1.0:i386 安装openjdk (Update 2018-08-21: 这次重装U ...

  6. kubectl top查看k8s pod的cpu , memory使用率情况

    To see the pods that use the most cpu and memory you can use the kubectl top command but it doesn’t ...

  7. spring 自动装配 default-autowire=&quot;byName/byType&quot;

    <PRE class=html name="code">spring 自动装配 default-autowire="byName/byType"   ...

  8. df看到的文件系统容量跟parted看到的分区容量差别较大的解决方法

    下午同事在自己的开发机上遇到题目说到的问题,它看到挂在到/dev/sda磁盘分区5上的ext4文件系统的容量显著小于该分区的大小 df看到的文件系统容量: #df -h /dev/sda5 Files ...

  9. java hashcode的Delphi实现

    程序使用java做后台服务,数据处理时使用了java的hashcode,Delphi程序也需要生成这个hashcode,为了一致,所以要在Delphi下实现和Java一样的算法. 下面即Delphi版 ...

  10. 神文章2:文本矩阵简述 V1.0 -vivo神人

    评论: 牛逼的业余书籍爱好者读书思路,指导思想. 2013/9/22         文本矩阵简述 V1.0http://www.douban.com/note/170688812/ 文/vivo   ...