在 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 应用程序中播放声音片段。我已经看到关于 NSSoundAVFoundation 的信息作为在 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 应用程序中播放声音剪辑的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:在通话期间在应用程序中调整播放音量

快速连续播放剪辑时的点击声音

如何在 Windows Phone 7 上播放在线声音剪辑?

在 Windows Phone 8 中播放声音片段

在 Java 应用程序中加载和播放声音的最简单方法是啥?

在delphi中从数组数据中播放声音的最简单方法是啥