【问题标题】: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 应用中播放声音片段的最简单方法是什么?

【问题讨论】:

    标签: iphone audio avfoundation nssound


    【解决方案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】:

    这是我所知道的最简单的方法:

    1. 将您的声音文件转换为 caf(使用 afconvert 命令行工具)并添加到您的项目中。

      caf 代表核心音频格式(我认为...)

    2. 在 Apple 的示例代码中查找 SoundEffect.h 和 .m。我相信 Metronome 和 BubbleLevel 都有。

    3. 复制到您的项目中
    4. 编写如下代码:

      SoundEffect *SimpleSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"soundfile" ofType:@"caf"]];
      [SimpleSound play];
      [SimpleSound release];
      

    研究 SoundEffect.m 以了解简单的声音处理。

    【讨论】:

    • 刚刚实现了这个,效果很好!只需使用 Audacity 转换 wav --> wav 即可使 afconvert 正常工作,没有其他问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多