在 iPhone 应用程序中播放声音剪辑的最简单方法是啥?
Posted
技术标签:
【中文标题】在 iPhone 应用程序中播放声音剪辑的最简单方法是啥?【英文标题】:What's the SIMPLEST way to play a sound clip in an iPhone app?在 iPhone 应用程序中播放声音剪辑的最简单方法是什么? 【发布时间】:2009-05-22 04:20:28 【问题描述】:我希望能够在 iPhone OS 应用程序中播放声音片段。我已经看到关于 NSSound 和 AVFoundation 的信息作为在 iPhone OS 设备上播放声音剪辑的方法,但我仍然不清楚这个主题并且可以使用一些帮助。无需在实际代码中一步一步地为我说明,但如果有人能给我一个关于我应该开始移动的大致方向(即我应该关注哪些类)的提示,我会填写我自己在空白处。那么,在 iPhone 应用中播放声音片段的最简单方法是什么?
【问题讨论】:
【参考方案1】:Apple 有一篇关于此主题的文章,请参阅:this link
AVAudioPlayer 是播放任意长度声音的最简单方法,无论是否循环播放,但它需要 iPhone OS 2.2 或更高版本。一个简单的例子:
NSString *soundFilePath =
[[NSBundle mainBundle] pathForResource: @"sound"
ofType: @"wav"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
AVAudioPlayer *newPlayer =
[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
error: nil];
[fileURL release];
[newPlayer play];
[newPlayer release];
它几乎可以播放任何文件格式(aiff、wav、mp3、aac) 请记住,您一次只能播放一个 mp3/aac 文件。
【讨论】:
不确定 ios 2.2 及更低版本,但完全可以使用多个 AVAudioPlayer 实例一次播放多个 mp3。 在尝试播放后立即释放播放器可能会导致问题。【参考方案2】:这是我所知道的最简单的方法:
将您的声音文件转换为 caf(使用 afconvert 命令行工具)并添加到您的项目中。
caf 代表核心音频格式(我认为...)
在 Apple 的示例代码中查找 SoundEffect.h 和 .m。我相信 Metronome 和 BubbleLevel 都有。
复制到您的项目中编写如下代码:
SoundEffect *SimpleSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"soundfile" ofType:@"caf"]];
[SimpleSound play];
[SimpleSound release];
研究 SoundEffect.m 以了解简单的声音处理。
【讨论】:
刚刚实现了这个,效果很好!只需使用 Audacity 转换 wav --> wav 即可使 afconvert 正常工作,没有其他问题。以上是关于在 iPhone 应用程序中播放声音剪辑的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章