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

And*_*ndy 12 audio macos cocoa objective-c

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

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

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

谢谢.

Ita*_*ber 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.
Run Code Online (Sandbox Code Playgroud)

要么

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).
Run Code Online (Sandbox Code Playgroud)

如果您要使用第二个代码段,则必须确保声音文件的扩展名是aiff,而不仅仅是aif,因为+soundNamed:查找非常特定的文件扩展名; 我不认为aif是在那个名单上.

使用CoreAudio更复杂,所以如果你只是想玩它并且用非常简单的设置弄乱,只需使用即可NSSound


Jos*_*ell 10

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

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

NSSound * myAwesomeSound = [NSSound soundNamed:@"AwesomeSound"];
Run Code Online (Sandbox Code Playgroud)

如果你想保留它,这将需要保留.

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

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

然后你可以非常简单地玩,也许使用按钮按下:

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

也可以进行一些基本的传输控制:暂停,停止,检查声音是否已完成,等等.有关详细信息,请参阅声音编程主题指南.


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