аудио файлы не воспроизводятся - PullRequest
0 голосов
/ 17 декабря 2010

Я создаю аудиофайл и играю его. Это не работает на симуляторе и itouch. Я не знаю, чего мне не хватает в кодировании.

Создание аудиофайла:

[audioSession setCategory :AVAudioSessionCategoryRecord error:&err];
                if(err){
                  NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }
        [audioSession setActive:YES error:&err];
        err = nil;
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }

        NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];
        [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];
        [recordSetting setValue:[NSNumber numberWithFloat:16000.0] forKey:AVSampleRateKey]; 
        [recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];

        ///****
        NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
        NSString* documentsDir = [paths objectAtIndex:0];
        recordedTmpFile = [NSURL fileURLWithPath:[documentsDir stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"caf"]]];
        ///****

        NSLog(@"Using File called: %@",recordedTmpFile);

        recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];

        AudioServicesCreateSystemSoundID((CFURLRef)recordedTmpFile, &_pewPewSound);
        [recorder setDelegate:self];
        [recorder prepareToRecord];
        [recorder record];

... и теперь воспроизводим аудиофайл:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

    AVAudioPlayer * audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedTmpFile error:&error];
    [audioPlayer setDelegate:self];
    [audioPlayer prepareToPlay];
    //[audioPlayer play];
    audioPlayer.numberOfLoops = 0;

    if (audioPlayer == nil)
        NSLog([error description]);             
    else 
        [audioPlayer play];
    AudioServicesPlaySystemSound(_pewPewSound);

1 Ответ

0 голосов
/ 17 декабря 2010

обычно есть ограничение на количество секунд, которые могут быть воспроизведены ... это на самом деле размер файла!попробуйте воспроизвести случайный звук "дон" или "бинг", чтобы убедиться, что ваша функция работает правильно.Вы пробовали это?

...