Использование системы Sound для воспроизведения звуков - PullRequest
1 голос
/ 19 июля 2009

Вот код:

-(void)stop
{
    NSLog(@"Disposing Sounds");
    AudioServicesDisposeSystemSoundID (soundID);
    //AudioServicesRemoveSystemSoundCompletion (soundID);
}

static void completionCallback (SystemSoundID  mySSID, void* myself) {
    NSLog(@"completion Callback");
}
- (void) playall: (id) sender {

    [self stop];

    AudioServicesAddSystemSoundCompletion (soundID,NULL,NULL,
     completionCallback,
     (void*) self);


    OSStatus err = kAudioServicesNoError;
    NSString *aiffPath = [[NSBundle mainBundle] pathForResource:@"slide1" ofType:@"m4a"];
    NSURL *aiffURL = [NSURL fileURLWithPath:aiffPath];
    err = AudioServicesCreateSystemSoundID((CFURLRef) aiffURL, &soundID);
    AudioServicesPlaySystemSound (soundID);
    NSLog(@"Done Playing");
}

Выход:

Disposing Sounds
Done Playing

На самом деле звук не воспроизводится вообще, и обратный вызов завершения также не вызывается. Есть идеи, что здесь может быть не так? Я хочу остановить любой предыдущий звук перед воспроизведением текущего.

Ответы [ 3 ]

1 голос
/ 06 июня 2010

AFAIK, поддерживаются только файлы .caf, .aif или .wav:

Для воспроизведения собственных звуков добавьте звук файл в ваш пакет приложений; звуковой файл должен соответствовать следующие требования:

  • Должны быть файлы .caf, .aif или .wav.
  • Аудиоданные в файле должны быть в формате PCM или IMA / ADPCM (IMA4).
  • Продолжительность аудио файла должна быть не более 30 секунд.

Инструкции по кодированию аудио и видео

0 голосов
/ 04 июля 2012

Для этого вы можете использовать платформу AudioToolBox:

CFBundleRef mainbundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainbundle, CFSTR("tap"), CFSTR("aif"), NULL);
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
AudioServicesPlaySystemSound(1100);
0 голосов
/ 19 июля 2009

Что содержит ошибка? Из этого вы должны быть в состоянии вывести проблему.

...