打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iOS音频开发功能
声音的用处 ·声效
■ 点击按钮?■ 警告声?■ 用户动作伴随的短声
· 任意长度的声音(音乐,播客,讲话内容) · 来自网络服务的音频流?· 录制的声音
这会有多难?
· 在一个多功能的移动设备上播放声音可能令人惊讶 的复杂
■ 可能同时有多个来源
■ 无数可能的输出
■ 变幻的事件,可能超出用户的控制 ■ 给看上去类似的动作不同的优先级
· 操作系统管理声音系统?■ 再一次,你只需简单的搭它的车


CoreAudio
· 高层级,容易使用?■ System Sound API - 短的声音
■ AVAudioPlayer class - ObjC,简单API
· 低层级,花费更多努力,但是有更多控制
    AudioToolbox-录制和播放,流处理,完全的控制
    Audio Units - 处理声音
    OpenAL - 3D定位的声音?· 使用哪个取决于你要做什么?■ 许多情况下满意于系统声音和AVAudioPlayer

    播放短音?· "短"指少于30秒
    · 非常简单的API,但是有限制 ■ 不能重复
    ■ 没有音量控制 ■ 立刻播放?■ 有限的格式
    ■ 线性化的PCM或IMA4 ■ .caf,.aif或.wav文件


播放短音
· 两步的过程?■ 注册这个声音,返回一个"声音ID“?■ 播放声音?■ 当声音播放结束时可选择是否运行回调函数
NSURL *fileURL = ... // 一个文件的地址 SystemSoundID myID;
// 先注册这个声音?AudioServicesCreateSystemSoundID ((CFURLRef)fileURL, &myID);
// 现在可以播放这个声音 AudioServicesPlaySystemSound (myID);

播放短音 ·清理
■ 当你完成时清除声音ID?■ 否则你会得到一个内存警告
SystemSoundID myID;
// 清除前面注册的声音 AudioServicesDisposeSystemSoundID (myID);
体会你的声音?· 系统的声音API允许促发手机的振动
· 使用这个特定的系统声音ID kSystemSoundID_Vibrate ■ 在iPod touch上不做任何事情
- (void)vibrate { // 促发手机的振动
    AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
}

转换声音?· 转换声音的命令行工具
/usr/bin/afconvert
· 支持各种输入和输出格式 · 细节请查看man的页面
· 可以容易的转换声音为系统声音格式?/usr/bin/afconvert -f aiff -d BEI16 input.mp3 output.aif

播放长音?· iPhone OS 2.1之前的版本里,你必须使用低层级的
CoreAudio APIs
■ 可能会很复杂,很麻烦?· iPhone OS 2.2引入了ObjC类来处理简单的音频播放
■ AVAudioPlayer?· 如果你要在期末项目里使用声音,更新到2.2版


AVAudioPlayer
· 播放长音(超过30秒)
· 本地存储的文件或内存里的(或来自网络流)
· 能够循环,跳动,播放,暂停
· 提供音量信息
· 同时播放多个声音
· Cocoa-风格的 API?■ 从文件地址或数据初始化
■ 允许代理

AVAudioPlayer
· 从文件地址或数据生成 AVAudioPlayer *player;
NSString *path = [[NSBundle mainBundle] pathForResource...];
NSURL *url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url]; · 简单的开始/停止方法
if (!player.playing) {
    [player play];
} else {
    [player pause];
}
AVAudioPlayerDelegate
· 告知什么时候播放停止
· 告知音频解码错误
· 提供处理中断的接口 ■ Oh,这些讨厌的中断
Audio Sessions
· 操作系统需要知道你在对声音做什么?■ 开始玩游戏或收听播客,然后锁定设置...什么会发生?
■ 如果你玩的是一个射击游戏并用发声/静音开关来静音... 什么会发生?
· 提供了一种方式让你表达你的音频目的 ■ Categories被定义用来弄清
■ 环境声?■ 媒体播放?■ 录制?■ 播放和录制


默认Sessions
· 应用程序获得默认session时会?■ 当播放你的声音时(比如iPod音频)其他声音被静音 ■ 使用发声/静音开关?■ 当用户锁定设备时静音
· 对许多应用程序这不错,但是不一定适合你的应用程序 ■ 如果这样,你需要使用Audio Session APIs


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
IOS音频播放概述
流媒体开发(一)音频播放
后台播放音乐
电脑没有声音怎么办?6个方法 立即解决!
【为什么audioPlayerDidFinishPlaying不能被触发】
iOS 播放音频的几种方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服