Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 播放声音文件(.aif)的简单方法_Objective C_Cocoa_Macos_Audio - Fatal编程技术网

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

Objective c 播放声音文件(.aif)的简单方法,objective-c,cocoa,macos,audio,Objective C,Cocoa,Macos,Audio,我正在使用Xcode为MacOSX制作一个应用程序,我希望它在发生什么事情时发出警报声 在Objective-C/Cocoa中播放声音的最简单代码是什么?请注意,我的声音文件是.aif 另外,我应该将声音文件放在我的项目中的什么位置 谢谢。要在Mac上播放音频,您可以将其用于基本活动,也可以使用更强大的框架来执行更复杂的任务 如果要使用NSSound实现此目标,您的代码将如下所示: NSString *resourcePath = [[NSBundle mainBundle] pathForR

我正在使用Xcode为MacOSX制作一个应用程序,我希望它在发生什么事情时发出警报声

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

另外,我应该将声音文件放在我的项目中的什么位置


谢谢。

要在Mac上播放音频,您可以将其用于基本活动,也可以使用更强大的框架来执行更复杂的任务


如果要使用
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.

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


使用
CoreAudio
更为复杂,因此,如果您只想播放它,并使用非常简单的设置,只需使用
NSSound

基本的声音播放非常简单

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

NSSound * myAwesomeSound = [NSSound soundNamed:@"AwesomeSound"];
如果你想保留它,就需要保留它

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

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

然后,您可以非常简单地播放它,可能需要按下按钮:

- (IBAction)playTheSound:(id)sender {
    NSSound * myAwesomeSound = [NSSound soundNamed:@"AwesomeSound"];
    [myAwesomeSound play];
}
还可以进行一些基本的传输控制:暂停、停止、检查声音是否已结束,等等。详情请参阅



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

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

#import <AudioToolbox/AudioToolbox.h>
将以下内容添加到.m中:(将“Ping”和“wav”更改为相应的文件名和类型)


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

  • 命令单击Classes文件夹(从xCode中)
  • 选择添加>现有文件
  • 导航到包含.aif的目录并选择它(它们)。单击添加。 (可选:选中“复制项目”复选框并单击“添加”。)

  • 请参阅苹果的示例和精彩信息:&。

    谢谢,你能给我一个如何在代码中使用NSSound的示例吗?谢谢,它起作用了,再问一个问题:我的声音是例如1分钟,我释放了它,它是否继续播放?Andy,声明一个声音一旦被释放就会停止播放:“解除分配后,声音对象停止播放声音(根据需要),以便释放相应的音频资源。”因此,如果创建声音,开始播放,然后在播放结束前释放,声音将停止。
    #import <AudioToolbox/AudioToolbox.h>
    
    - (IBAction) playSound;
    
    - (IBAction) playSound
    {
        SystemSoundID soundID;
        NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"Ping" ofType:@"wav"];
        AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
        AudioServicesPlaySystemSound(soundID); 
        [soundFile release];
    }