关于iPhone音频的那些事
音频文件(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音频的那些事的更多相关文章
- WebRTC 系列之音频会话管理
WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的 API.W3C 和 IETF 在2021年1月26日共同宣布 WebRTC 1. ...
- IOS 音频开发文件大小计算
音频基础知识 音频文件计算大小 音频转码 标签(空格分隔): 调查 IOS音频 https://developer.apple.com/library/ios/documentation/MusicA ...
- iOS 音频开发
音频基础知识 组成 音频文件的组成:文件格式(或者音频容器) + 数据格式(或者音频编码). 文件格式(或音频容器)是用于形容文件本身的格式. 我们可以通过多种不同的方法为真正的音频数据编码.例如 ...
- [工具推荐]_iOS音频批量转换
通常为了便于市场推广和获得更高的下载量,产品安装包的体积是越小越好.那么问题来了,要如何才能做到使安装包的体积最小化呢.根据产品的组成成分,最终可以大概分为,代码,图片,视频,音频等这几部分,今天我们 ...
- html5手机常见问题与工具分享
mobileTech A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 ...
- mobileTech
A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 工具类网站 HTML ...
- (任寒韬)WebApp群主 - MobileTech 资料
web app : http://www.lightapp.cn/brand/index/4101 https://github.com/jtyjty99999/mobileTech/blob/mas ...
- mobilehack -转
# mobileHack##工具类网站 [HTML5 与 CSS3 技术应用评估](http://html5please.com/ "html5与css3技术应用评估") [各种奇 ...
- 笔记- iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案
这几个月一直在做iphone手机音视频的东西,由于个人比较懒,所以一直没整理,现在闲的蛋疼,并且以后项目要搁置了,在这里记录一下我做的iphone手机推流的东西. 项目都是个人的调研与实验,可能很多不 ...
随机推荐
- 【Linux】生成任意大小的文件
有时候,我们需要生成指定大小的随机文件,比如在学习过程中使用的测试文件. 命令: Linux:/qinys # dd if=/dev/zero of=tmp.data bs=500k count=1 ...
- 使用urllib2实现图片文件下载
# -*- coding: utf-8 -*- #python 27 #xiaodeng #使用urllib2实现图片文件下载 #来源:my2010Sam import urllib2 import ...
- IBM应该请我去做Domino产品设计架构师
作者: 亓锋 2012年11月19日16:56 来源: 速途专栏 ...
- foxmail怎么设置个性签名
foxmail是我们日常使用的邮件客户端之一,相信很多的朋友都在使用.那么,我们在发邮件的时候,很多朋友都会使用一个个性签名,那么对于foxmail的邮件签名怎么来设置呢?今天笔者就来给大家分享一下, ...
- Inno Setup入门(七)——提供安装语言选项
Inno Setup安装目录下有一个Languages的文件夹,该文件夹提供了可供使用的语言,通过在脚本中加入[languages]段,可以实现该项功能,实现代码如下: [setup] ;全局设置,本 ...
- 在Java中使用Kafka
Producer部分 Producer在实例化后, 对外提供send方法, 用于将数据送到指定的topic和partition; 以及在退出时需要的destroy方法. 接口 KafkaProduce ...
- Centos6下编译LEDE/OpenWrt
准备工作 1. 安装依赖软件 这是官方文档提供的依赖列表 yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncu ...
- postmessage and sendmessage
从msdn上看二者的解释: postmessage : Places (posts) a message in the message queue associated with the thread ...
- 进阶之路(基础篇) - 019 Serial串口函数说明
本文总结了Arduino常用串口操作函数,函数说明部分来源于Arduino 官网串口使用指南,示例与实验部分为自编.本文是对Arduino串口操作函数的较全面总结,可作为工具贴查找使用. 函数:if( ...
- HDU 1023 Train Problem II (大数卡特兰数)
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...