Подтвердить что ты не робот

Простой способ воспроизведения звукового файла (.aif)

Я делаю приложение для Mac OS X с помощью Xcode, и я хочу, чтобы он воспроизводил звуковой сигнал, когда что-то случается.

Каков самый простой код для воспроизведения звука в Objective-C/Cocoa? Обратите внимание, что мой звуковой файл - .aif.

Кроме того, где я помещаю звуковой файл в свой проект?

Спасибо.

4b9b3361

Ответ 1

Для воспроизведения звука на 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.

ИЛИ

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

Если вы хотите использовать второй фрагмент, вам нужно будет убедиться, что расширение звукового файла aiff, а не только aif, так как +soundNamed: ищет очень конкретные расширения файлов; Я не думаю, что aif находится в этом списке.

Использование CoreAudio более сложное, поэтому, если вы просто хотите играть в него и обходиться с очень простыми настройками, просто используйте NSSound

Ответ 2

Базовое воспроизведение звука довольно просто.

Вы можете использовать класс NSSound для загрузки файла несколькими способами, например, по имени:

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

Это нужно сохранить, если вы хотите сохранить его.

в этом случае класс будет искать определенные каталоги, включая ваш пакет приложений, для звукового файла с таким именем. Важно отметить, что файл должен иметь расширение .aiff (с двумя f), чтобы найти этот метод. *

Вероятно, вы сохранили бы звуковой файл в папке "Ресурсы" вашего проекта; что там, где обычно хранятся файлы "media".

Тогда вы можете играть очень просто, возможно, используя кнопку:

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

Также возможно сделать некоторые основные средства управления транспортом: приостановка, остановка, проверка завершения звука и т.д. Подробнее см. В Руководстве по программированию звука.


* Конечно, можно использовать и другие форматы.

Ответ 3

Например, добавьте фреймворк AudioToolbox, добавьте звуковой файл в ваш ресурс/проект, а затем добавьте ниже к вашему .h:

#import <AudioToolbox/AudioToolbox.h>

И затем: (после @interface {blah} в вашем .h)

- (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];
}

Ответ 4

Вы можете скопировать и добавить ваши .AIF файлы в проект в Xcode следующим образом:

  • Командный щелчок по папке Классы (изнутри xCode)
  • Выберите "Добавить" > "Существующие файлы"
  • Перейдите в каталог, содержащий ваш .aif, и выберите его (их). Нажмите "Добавить" . (необязательно: установите флажок "Копировать элементы" и нажмите "Добавить" .)

Смотрите примеры Apple и отличную информацию: здесь и здесь.