Phone OS 音频分类:
?
??????System Sound API - short sounds
??????AVAudioPlayer class - ObjC, simple API
????(2)Lower level, takes more effort but much more control
??????Audio Toolbox - recording and playback, streaming, full control
??????Audio Units - processing audio
??????OpenAL
Sound effects音响效果:
????Button Clicks
?????Alert Sounds
?????Short Sounds Accompanying User Actions
iPhone OS 主要提供以下了几种播放音频的方法:
????System Sound Services
??????AVAudioPlayer 类
????Audio Queue Services
??????OpenAL
????1. System Sound Services
????????System Sound Services 是最底层也是最简单的声音播放服务,调用 AudioServicesPlaySystemSound 这个方法就可以播放一些简单的音频文件,使用此方法只适合播放一些很小的提示或者警告音,因为它有很多限制:
????■ 声音长度要小于 5 秒(一说小于30秒)
??????■ In linear PCM 或者 IMA4 (IMA/ADPCM) 格式的
????■ 打包成 .caf, .aif, 或者 .wav 的文件
????■ 不能控制播放的进度
????■ 调用方法后立即播放声音
????■ 没有循环播放和立体声控制
????另外,它还可以调用系统的震动功能,方法也很简单。具体的代码可以参考官方的示例SysSound,但是官方的示例只有一些简单的用法,从文档中我们发现可以通过 AudioServicesAddSystemSoundCompletion 方法为音频播放添加 CallBack 函数,有了 CallBack 函数我们可以解决不少问题,比如可以克服 System Sound Services 本身不支持循环播放的问题。以下代码可以实现一个在程序中循环播放的背景音乐:
?????AVAudioPlayer 是 AVFoundation.framework 中定义的一个类,所以使用要先在工程中引入 AVFoundation.framework。我们可以把 AVAudioPlayer 看作是一个高级的播放器,它支持广泛的音频格式,主要是以下这些格式:
????■ AAC
??????■ AMR(AdaptiveMulti-Rate, aformatforspeech)
??????■ ALAC(AppleLossless)
??????■ iLBC(internetLowBitrateCodec, anotherformatforspeech)
??????■ IMA4(IMA/ADPCM)
??????■ linearPCM(uncompressed)
??????■ ?-lawanda-law
??????■ MP3(MPEG-1audiolayer3
??????AVAudioPlayer 可以播放任意长度的音频文件、支持循环播放、可以同步播放多个音频文件、控制播放进度以及从音频文件的任意一点开始播放等,更高级的功能可以参考 AVAudioPlayer 的文档。要使用 AVAudioPlayer 的对象播放文件,你只需为其指定一个音频文件并设定一个实现了 AVAudioPlayerDelegate 协议的 delegate 对象。这里举一个简单的例子,和上一个例子一样,实现一直循环播放的背景音乐:
??3. Audio Queue Services
???????如果以上两种音频播放的解决方案都无法满足你的需求,那么我想你肯定需要使用 Audio Queue Services。使用 Audio Queue Services 对音频进行播放,你可以完全实现对声音的控制。例如,你可以在声音数据从文件读到内存缓冲区后对声音进行一定处理再进行播放,从而实现对音频的快速/慢速播放的功能。因为 Audio Queue Services 相对复杂很多,Apple 官方已经把它整理为一本书了,具体可以参考 Audio Queue Services Programming Guide 和 SpeakHere 的程序示例。
??4. OpenAL
???????OpenAL 是一套跨平台的开源的音频处理接口,与图形处理的 OpenGL 类似,它为音频播放提供了一套更加优化的方案。它最适合开发游戏的音效,用法也与其他平台下相同。iPhone 支持 OpenAL 1.1,具体的文档可以参考 OpenAL 的网站?http://openal.org?和 oalTouch 的程序示例
详细解决方案
【引述】iPhone 应用开发:音频播放
热度:107 发布时间:2016-04-25 06:33:44.0
?(1)High level, easy to use2. AVAudioPlayer 类可 以看到,只要将 AVAudioPlayer 的 numberOfLoops 属性设为负数,音频文件就会一直循环播放直到调用 stop 方法。AVAudioPlayer 同样支持 Callback,这是 AVAudioPlayerDelegate 的一个可选 delegate 方法:另外,你可以随时控制 AVAudioPlayer 对象的播放、暂停以及停止,通过判断对象的状态,分别调用 play、pause 和 stop 方法即可:虽 然 AVAudioPlayer 可以播放很多格式,但是我们在实际开发过程中还是最好使用一些没有压缩的格式,比如 WAVE 文件,这样可以减少系统处理单元的资源占用,以便更好的完成程序的其他功能。另外,在使用 AVAudioPlayer 连续播放 mp3 这类经过压缩的音频文件时,在连接处可能出现一定的间隔时间。
相关解决方案
- iphone 模拟器,该如何处理
- c#c++,android,ios(iphone),php,java视屏课程 散分
- 有哪位高手用过JPlayer ,进来一下,IPHONE 等设备播放有关问题
- 单个人去做手机开发选什么平台好?android,iphone?解决办法
- iphone app拖进iTunes生成ipa包出现embedded.mobileprovision异常
- 对于手机android iphone ipad 在线播放视频,服务器需要哪些要求呢?该怎么解决
- >>> PayPal mobile for Android / iPhone 开发包 开放啦!
- OPhone Vs iphone, 作为开发者的我们将何去和从?
- HTML,CSS,Javascript in iPhone (转从 koubei F2E 善朋)
- iphone + html5是个美模式
- 共享两个日前手机项目的HTML5的widget,星星评级以及标签选项卡,样式美观,iphone/android可用
- ipad 和 iphone 上的有关问题
- iPhone 筹建PHP版Push服务器 实例操作
- iphone/ipod网页开发课程及规则
- iphone UIWebView 的运用
- iPhone运用:JSF2 Tag Reference,offline view by iPhone
- iphone 获取UIWebView内Html步骤
- iphone Web App 领航设计探讨
- iPhone Safari Web开发心得
- iPhone Android Web开发(要略)
- JS 判断浏览器客户端门类(ipad,iphone,android)
- iphone ipad android手机访问wcf service出现中文乱码(!)
- iPhone SE销量惨淡?见见这些数据就知道了
- 一九七零年// iPhone “变砖”后可继续正常使用的解决方案
- iPhone 6S 有苹果不愿意讨论的有关问题
- iphone 浏览器自动解析数字为号码解决方法
- 怎么禁止 iPhone Safari video标签视频自动全屏
- iPhone 六的自适应布局
- 腾挪端实现 iphone android 小图标 文字排版
- iPhone:动态获取UILabel的高度跟宽度