音频文件(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. Mybatis-Dao层开发之Mapper接口

    Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法. Mapper接口开发 ...

  2. gnu screen的用法

    在使用ssh或者telnet登录远程主机后执行一些耗时的命令, 如果此时ssh或者telnet中断, 那么远程主机上正在执行的程序或者说命令也会被迫终止. screen能够很好地解决这个问题, scr ...

  3. 转:extern "C"的用法解析

    1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言, C++保留了一部分过程式 ...

  4. 第一个go的web程序;调用七牛云存储的音频api问题解决;条件搜寻文件中的内容,字符串拼接+在上一行

    package main import ( "html/template" "io" "io/ioutil" "log" ...

  5. Map的深浅拷贝的探究

    1. 复制map示例 首先看一个例子,当我使用不同方法将一个源map拷贝到另一个map后,改变源map,复制后的map理应不受影响 import java.math.BigDecimal; impor ...

  6. 蛋疼的经历--wireshark不能启动的问题

    事情是这样子的,最近新入职,安装了wireshark,,,在急需要其观察数据包结构,,,,写代码时,,,,卡了,,,我的天!!! 刚开始是提示说,找不到动态链接库api-ms-win-crt-runt ...

  7. 树莓派进阶之路 (035) - 基于linux的zsh安装脚本

    基于linux的zsh安装脚本: Ubuntu版本: #!/bin/sh cd #安装zsh sudo apt-get install zsh #查看zsh cat /etc/shells #更改zs ...

  8. 树莓派进阶之路 (032) -字符问题(2) - 用c语言怎样得到一个汉字的GB2312编码(转)

    C/C++支持的是ASCII,不过汉字编码中,GB2312与ASCII是兼容的,所以可以在C中获得汉字的GB2312编码 GB2312是两个字节的,第一字节是高八位,第二字节是低八位,比如下面的程序: ...

  9. POJ 1862 Stripies (哈夫曼树)

    Stripies Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10263   Accepted: 4971 Descrip ...

  10. HSSFWorkbook 与 XSSFWorkbook

    刚开始使用new HSSFWorkbook(new FileInputStream(excelFile))来读取Workbook,对Excel2003以前(包括2003)的版本没有问题,但读取Exce ...