iOS编程中的音频知识(二):那么多种格式我应该用哪一个?

iPhone支持不少格式,比如AAC,HE-AAC,AMR,IMA4等等,你可以在以下网址看到比较全的格式和简要介绍:

http://www.raywenderlich.com/69365/audio-tutorial-ios-file-data-formats-2014-edition

这看起来是一条长长的单子,但是实际上仅仅少数的格式被推荐使用.要想知道该用哪些格式,你必须首先牢记如下几条:

  • 你可以播放线性PCM,IMA4以及少数其他未压缩或简单压缩的格式更快一些并且可以同时播放没有问题.
  • 对于更高级的压缩方式比如AAC,MP3和ALAC格式,iPhone硬件支持解码数据也很快—–但问题是同一时刻只能处理一个文件.因此如果你在同一时刻播放超过一种以上之一的格式,它们将会被用软件解码,会变慢.

所以为了选择你自己适合的格式,通常应用里有几条规则:

  • 如果空间不是问题,那么将任何东西都编码成linear PCM格式.并不仅仅因为这是最快播放音频的方法,而且你可以同时播放多个声音,且不会产生任何CPU资源的问题
  • 如果空间是一个问题,那么绝大多数情况下你将需要使用AAC编码背景音乐,IMA4编码你的音效数据.
时间: 2024-12-09 08:19:55

iOS编程中的音频知识(二):那么多种格式我应该用哪一个?的相关文章

iOS编程中的音频知识(一):文件格式和数据格式,哦!天哪

要明白实际上每个音频文件都有2各部分组成:它的文件格式(或称之为音频容器),和它的数据格式(或称之为音频编码). 文件格式(audio containers)描述文件自身的格式.实际内部的音频数据可以被编码成多种方式. 举个栗子,一个CAF文件是一个文件格式,它看以容纳被编码成MP3,线性PCM和其他多种音频的数据格式. So让我们深入到没种格式的内部去研究吧 ;]

iOS开发中的单元测试(二) 让断言活泼起来的匹配引擎

上一篇文章简单介绍了OCUnit和GHUnit两款iOS开发中较为常见的单元测试框架,本文进一步介绍单元测试 中的另一利器--匹配引擎(Matcher Engine).匹配引擎可以替代断言方法,配合单元测试引擎使用,测试 用例可以更多样化,更细致. 传统断言提供的方法数量和功能都有限,以导读中提到的两款框架为例 ,即使是断言相对丰富的GHUnit也只是提供了38种断言方法,范围仅涵盖了逻辑比较,异常和出错等少数几方 面,仍然很单一.而使用匹配引擎代替断言,可能性就大大丰富了,除了普通断言支持的规

iOS编程中throttle的那些事

不知道大家对throttle这个单词是否看着眼熟,还是说对这个计算机基础概念有很清晰的了解了.今天就来聊聊和throttle相关的一些技术场景. 定义 我经常有一种感觉,对于英语这门语言的语感,会影响我们对于一些关键技术概念的理解.有时候在学习新技术知识的时候,我会先花一些时间去了解术语英文单词的各种语义,在形成强烈清晰的语感之后,再去深入具体的技术语境.throttle也算是个生僻的单词,至少在口语中毕竟少用到,先来看看词义: a device controlling the flow of

详解iOS开发中UITableview cell 顶部空白的多种设置方法_IOS

我知道没人会主动设置这个东西,但是大家一定都遇到过这个问题,下面总结下可能是哪些情况: 1, self.automaticallyAdjustsScrollViewInsets = NO; 这个应该是最常见而且不容易被发现的原因,起因是iOS7在Conttoller中新增了automaticallyAdjustsScrollViewInsets这个属性,当设置为YES时(默认YES),如果视图里面存在唯一一个UIScrollView或其子类View,那么它会自动设置相应的内边距,这样可以让scr

Remoting编程知识二

编程 Remoting高级知识 一. 如何使用IIS作为激活代理 .NET Remoting和DCOM之间的一个区别是前者不支持自动运行的服务器进程.需要人工启动服务器进程来注册用来远程激活的类和监听请求.而对于DCOM,当远程客户端调用CoCreateInstanceEx或者其他激活API时,会自动运行服务器进程. .NET remoting 提供了两种方法来避免人工启动服务器.第一个是将服务器应用程序当做一个服务来实现.可以编写一个从 System.ServiceProcess.Servic

编程中无法回避的基础知识---事务

编程中无法回避的基础知识---事务                   进行软件开发已经有一段时间了,有些东西虽然一直在用但是并不是很理解为什么去用它,它的机制又是什么,是不是还有其他的用途?就像我们在对数据库进行一系列操作时,我们为了保证数据的一致性往往会用到事务.本文将简单的介绍一下事务的相关知识,和简单用法.            基本概念            定义          事务是将一系列 数据源更新分组或分批的方法,以便在回滚事务时同时提交所有事务或者不提交任何事务[MSDN

编程中无法回避的基础知识---委托和事件

编程中无法回避的基础知识---委托和事件          在C#开发中,有时我们需要实现这样的情况:只要新添加一个对象,就要执行一系列的方法.如果每次挨个调用,这样既浪费时间,又造成代码冗余.这个时候我们就可以使用委托来建立一个方法链条,设置好后,可以让一个对象依次去执行这个链条上的各个方法.这样的结果就是:简化了代码,提高了效率,提高了代码的可维护性.        究竟什么是委托呢?事件有何委托有什么关系呢?          一.定义          委托是一个类,它定义了方法的类型,

iOS中CoreData数据管理系列二——CoreData框架中三个重要的类

iOS中CoreData数据管理系列二--CoreData框架中三个重要的类 一.引言     在上一篇博客中,介绍了iOS中使用CoreData框架设计数据模型的相关步骤.CoreData框架中通过相关的类将数据--数据模型--开发者无缝的衔接起来.NSManagedObjectModel对应数据模型,即上篇博客中我们创建的.xcdatamodeld文件:NSPersistentStoreCoordinator相当于数据库与数据模型之间的桥接器,通过NSPersistentStoreCoord

z ar 二维码-ios开发中zBar怎样直接对手机页面进行扫描识别二维码?

问题描述 ios开发中zBar怎样直接对手机页面进行扫描识别二维码? ios开发中怎样用zBar直接对手机页面进行扫描识别二维码而不通过调用摄像头获取图片扫描的方式? 解决方案 不可能做到,因为调用系统相机必须通过用户的许可获得权限.其实iOS 7.0以后的扫码完全可以胜任你需求的~