iOS平台音频开发

在 iPhone 应用或者是游戏的开发过程中,对声音的支持是必不可少的。在我做过的几个应用中,每个都涉及到音效,所以在这里做个简单的归纳,很多都是引用自《iPhone Application Programming Guide》(需要有 Apple ID 才能打开链接),加了一些实际使用的经验。

iPhone OS 主要提供System Sound Services播放音频

System Sound Services 是最底层也是最简单的声音播放服务,调用AudioServicesPlaySystemSound这个方法就可以播放一些简单的音频文件,使用此方法只适合播放一些很小的提示或者警告音,因为它有很多限制:

■ 声音长度要小于 30 秒

■ In linear PCM 或者 IMA4 (IMA/ADPCM) 格式的

■ 打包成 .caf, .aif, 或者 .wav 的文件

■ 不能控制播放的进度

■ 调用方法后立即播放声音

■ 没有循环播放和立体声控制

另外,它还可以调用系统的震动功能,方法也很简单。具体的代码可以参考官方的示例 SysSound,但是官方的示例只有一些简单的用法,从文档中我们发现可以通过AudioServicesAddSystemSoundCompletion 方法为音频播放添加 CallBack 函数,有了 CallBack 函数我们可以解决不少问题,比如可以克服 System Sound Services 本身不支持循环播放的问题。以下代码可以实现一个在程序中循环播放的背景音乐:

view plaincopy to clipboardprint?

static void completionCallback (SystemSoundID  mySSID) {

// Play again after sound play completion

AudioServicesPlaySystemSound(mySSID);

}

- (void) playSound {

// Get the main bundle for the app

CFBundleRef mainBundle;

SystemSoundID soundFileObject;

mainBundle = CFBundleGetMainBundle ();

// Get the URL to the sound file to play

CFURLRef soundFileURLRef  = CFBundleCopyResourceURL (

mainBundle,

CFSTR ("background"),

CFSTR ("wav"),

NULL

);

// Create a system sound object representing the sound file

AudioServicesCreateSystemSoundID (

soundFileURLRef,

&soundFileObject

);

// Add sound completion callback

AudioServicesAddSystemSoundCompletion (soundFileObject, NULL, NULL,

completionCallback,

(void*) self);

// Play the audio

AudioServicesPlaySystemSound(soundFileObject);

}

static void completionCallback (SystemSoundID  mySSID) {

// Play again after sound play completion

AudioServicesPlaySystemSound(mySSID);

}

- (void) playSound {

// Get the main bundle for the app

CFBundleRef mainBundle;

SystemSoundID soundFileObject;

mainBundle = CFBundleGetMainBundle ();

// Get the URL to the sound file to play

CFURLRef soundFileURLRef  = CFBundleCopyResourceURL (

mainBundle,

CFSTR ("background"),

CFSTR ("wav"),

NULL

);

// Create a system sound object representing the sound file

AudioServicesCreateSystemSoundID (

soundFileURLRef,

&soundFileObject

);

// Add sound completion callback

AudioServicesAddSystemSoundCompletion (soundFileObject, NULL, NULL,

completionCallback,

(void*) self);

// Play the audio

AudioServicesPlaySystemSound(soundFileObject);

}

时间: 2024-07-31 09:54:56

iOS平台音频开发的相关文章

iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架

CocoaPods是一款集合了上千个第三方开源库的开发工具,能够大幅度的提升团队项目的开发效率,降低时间成本. 那么就看一下CocoaPods这个工具在项目中的使用体现吧. 我们马上用ASIHTTPRequest第三方开源框架,说明如何在我们的项目中使用CocoaPods工具快速集成第三方开源框架. 首先,创建一个iOS平台下的空应用程序工程EmptySample. 然后,在终端中进入新建的工程目录,如图所示 结果如图所示. 在新建的工程根目录下,使用vi命令新建Podfile文件.(注意,不用

iOS平台上的音视频即时通讯应用开发

现在IOS很是火热,一大堆开发人员在捣鼓IOS平台的开发,相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台 支持iOS平台设备上的音频即时通讯应用开发 提供Objective-C语言API接口,开放示例源代码 集成H.264.AAC.AMR等编解码技术 封装音视频的采集.编解码.传输.显示和播放等模块 支持Android.Web.PC等设备和iOS之间的互联互通 想要在IOS平台下实现音视频通信,最快捷

iOS平台如何实现跨平台通讯

苹果手机带动了IOS的火热,一大堆开发人员在捣鼓IOS平台的开发,相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台.现在介绍两种方法使用IOS与其他平台的音视频通话. 首先就是使用一个跨平台的音视频通讯平台即可,这是作为非专业技术人员也可以做到的,下面就先介绍第一种:只需三个条件: 1.手机有网络连接: 2.有AnyChat for iOS SDK: 3.对方PC或手机有以上条件. AnyChat音视频

(转载)为什么iOS平台更容易吸引开发者?

1.iOS开发比Android开更容易赚钱 1.1 Appstore上的应用和游戏比Android play store质量高 现在Android Market变更为Android play store,App Store大概已经超过60万应用了,Android play store大约30万,App store的应用和游戏都是通过严格审核的,大多是收费的应用游戏.Android里面的色情.壁纸和铃音等垃圾应用数量也是很庞大,如果去除这些,Android Market的应用数量和质量会更缩水.当

iOS平台上音频编码成aac

小程之前介绍解码aac时,曾经使用了fadd,并且有提到,如果想编码成aac格式,可以使用facc.fdk-aac等,但使用fdk-aac等编码方式,都是软编码,在cpu的消耗上会明显大于硬件编码. 硬编码的优势是可以用硬件芯片集成的功能,高速且低功耗地完成编码任务. 在iOS平台,也提供了硬编码的能力,APP开发时只需要调用相应的SDK接口就可以了. 这个SDK接口就是AudioConverter. 本文介绍iOS平台上,如何调用AudioConverter来完成aac的硬编码. 从名字来看,

多媒体开发(13):iOS上音频编码成aac

如前面我所说,对于音频的解码,一般你都不用考虑硬解,用软解就足够了,这时可以选择faad或FFmpeg等.但是,如果是音频的编码呢?这可不一样,编码比解码明显耗时,为了快跟低功耗(特别对于低端机器),要优先考虑硬编码(不能再使用fdk-aac或faac之类的软编码),硬编码的优势是可以用硬件芯片集成的功能,高速且低功耗地完成编码任务. iOS平台,也提供了硬编码的能力,APP开发时只需要调用相应的SDK接口就能达成目标,这个SDK接口就是AudioConverter. 本文介绍iOS平台上,如何

没有苹果电脑打包iOS平台的 Ionic 2程序——《Ionic 2 实例开发》更新内容

没有苹果电脑打包iOS平台的 Ionic 2程序--<Ionic 2 实例开发>更新内容春节刚过,祝各位新的一年里万事如意,一帆风顺.<Ionic 2 实例开发>在这段时间里更新了如下内容:Ionic 2 中使用管道处理数据Ionic 2 中使用HTTP与远程服务器交互数据Ionic 2 中的样式与主题没有苹果电脑打包iOS平台的 Ionic 2程序欢迎阅读.

iOS 平台开发OpenGL ES程序注意事项

本人最近从Android平台的OpenGL ES开发转到iOS平台的OpenGL ES开发,由于平台不同,所以开发中会有一些区别,再次列出需要注意的几点. 1.首先需要了解iOS主要开发框架,再次仅介绍开发OpenGL ES应用常用的几个: CoreGraphics.framework  ——包含Quartz 2D接口(Core Graphics框架参考) Foundation.framework ——包含Cocoa Foundation层的类和方法(Foundation框架参考) OpenGL

iOS 9音频应用开发基础教程

iOS 9音频应用开发基础教程(大学霸内部资料) 介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现的功能不仅包括音频播放和录音等基本功能,还包括播放列表.歌词功能.流媒体音乐.均衡器.可视化效果.文本朗读等高级功能. 学习建议:学习本教程内容,需要掌握Swift语言基础和iOS开发基础.如果不具备这两方面,建议用户阅读本店的以下教程: Swift语言快速入门 iOS 9应用开发基础教程 试读文档下载