Изменить среднийPowerForChannel avaudioplayer в iphone

Я проигрываю файл .mp3 с помощью AVaudioplayer: -

 NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Speech"ofType:@"mp3"]];    
    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];    
    if (error)
    {
        NSLog(@"Error in audioPlayer: %@",
              [error localizedDescription]);
    } else {
        audioPlayer.delegate = self;
        audioPlayer.numberOfLoops=-1;
        [audioPlayer prepareToPlay];
        [audioPlayer play];
    }
    audioPlayer.meteringEnabled = YES;
    audioPlayer.volume=0;
    NSTimer *playerTimer = nil;
    if (!playerTimer)
    {
        playerTimer = [NSTimer scheduledTimerWithTimeInterval:0.001
                                                       target:self selector:@selector(monitorAudioPlayer)
                                                     userInfo:nil
                                                      repeats:YES];
    }

    [audioPlayer updateMeters];

-(void)monitorAudioPlayer{


    [audioPlayer updateMeters];

    for (int i=0; i<audioPlayer.numberOfChannels; i++)
    {        
        float power = [ audioPlayer averagePowerForChannel: i ];
        float peak = [ audioPlayer peakPowerForChannel: i ];
}
}

И в письменной форме я получаю число с плавающей точкой для этого аудиоплеера. Есть ли способ изменить пиковую мощность этого аудиоплеера, чтобы звук изменился на какой-то забавный или что-то другое. Можно с помощью аудиосессии или чего-то еще. Я сделал это с помощью DIRAC. Но в этом случае я не могу получить значение мощности, поскольку он всегда возвращает статическое значение мощности.

Заранее спасибо.


person ios developer    schedule 14.03.2013    source источник


Ответы (1)


Запрещается запись среднего и пикового уровней мощности; они являются расчетными характеристиками выборочных данных.

player.volume = x, где x больше 1.0, усилит уровень звука до того, как он выйдет из динамиков. Если вы установите его на глупо высокое число, например 20 или 100, это будет звучать довольно забавно!

Если вы хотите сделать еще что-нибудь забавное с образцами, я думаю, вам придется использовать низкоуровневый API, такой как RemoteIO или AudioQueue.

person AlexChaffee    schedule 24.04.2013