播放声音文件的简单方法(.aif)

时间:2011-05-16 20:09:27

标签: objective-c cocoa macos audio

我正在使用Xcode为Mac OS X制作应用程序,我希望它能在发生某些事情时播放警报声。

在Objective-C / Cocoa中播放声音最简单的代码是什么?请注意,我的声音文件是.aif

另外,我在哪里将声音文件放在我的项目中?

谢谢。

4 个答案:

答案 0 :(得分:26)

要在Mac上播放音频,您可以使用NSSound进行基本活动,也可以使用功能更强大的CoreAudio框架来处理更复杂的任务。


如果您使用NSSound来实现此目标,您的代码将如下所示:

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"replace-with-file-name" ofType:@"aif"];
NSSound *sound = [[NSSound alloc] initWithContentsOfFile:resourcePath byReference:YES];
// Do something with sound, like [sound play] and release.

OR

NSSound *sound = [NSSound soundNamed:@"replace-with-file-name-without-the-extension"];
// Do something with sound, like [sound play], but don't release (it's autoreleased).

如果您要使用第二个代码段,则必须确保声音文件的扩展名为aiff,而不仅仅是aif,因为+soundNamed:会查找非常具体的文件扩展名;我认为aif不在该列表中。

使用CoreAudio会更复杂,所以如果您只是想玩它并使用非常简单的设置搞乱,只需使用NSSound

答案 1 :(得分:10)

声音的基本播放非常简单。

您可以使用NSSound类以几种不同的方式加载文件,例如,按名称加载:

NSSound * myAwesomeSound = [NSSound soundNamed:@"AwesomeSound"];

如果你想保留它,就需要保留。

在这种情况下,类将搜索某些特定目录,包括您的应用程序包,以查找具有该名称的声音文件。一个重要的注意事项是文件必须具有.aiff(带有两个 f)的扩展名才能通过此方法找到。*

您可能会将声音文件存储在项目的Resources文件夹中;这就是“媒体”文件通常被保存的地方。

然后你可以非常简单地演奏它,也许是按下按钮:

- (IBAction)playTheSound:(id)sender {
    NSSound * myAwesomeSound = [NSSound soundNamed:@"AwesomeSound"];
    [myAwesomeSound play];
}

也可以进行一些基本的传输控制:暂停,停止,检查声音是否已完成,等等。有关详细信息,请参阅Sound Programming Topics Guide


*当然也可以使用其他格式。

答案 2 :(得分:1)

例如,添加AudioToolbox框架,将声音文件添加到资源/项目,然后将以下内容添加到.h:

#import <AudioToolbox/AudioToolbox.h>

然后:(在.h中的@interface {blah}之后)

- (IBAction) playSound;

将以下内容添加到.m :(将'Ping'和'wav'更改为相应的文件名和类型)

- (IBAction) playSound
{
    SystemSoundID soundID;
    NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"Ping" ofType:@"wav"];
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
    AudioServicesPlaySystemSound(soundID); 
    [soundFile release];
}

答案 3 :(得分:0)

您可以将您的.aif文件复制并添加到Xcode中的项目中,如下所示:

  1. 按住Command键并单击Classes文件夹(从xCode中)
  2. 选择添加&gt;现有文件
  3. 导航到包含.aif的目录并选择它(它们)。单击添加。 (可选:选中“复制项目”复选框,然后单击“添加”。)
  4. 参见Apple的例子&amp;好消息:here&amp; here