在iphone中编辑avaudioplayer的averagePowerForChannel

时间:2013-03-14 06:44:43

标签: iphone ios avaudioplayer avaudiosession

我正在使用AVaudioplayer播放.mp3文件: -

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

在书面文字中,我获得了该音频播放器的浮动电量。 有没有办法改变这个音频播放器的峰值功率,以便声音变为某些funnysound或其他东西。 通过使用音频或其他东西是可能的。 我是通过使用DIRAC完成的。 但是因为我无法获得powervalue.AS它总是返回静态功率值。

提前致谢。

1 个答案:

答案 0 :(得分:0)

平均功率和峰值功率水平不可写;它们是样本数据的计算特征。

player.volume = x其中x大于1.0将在扬声器出现之前放大声级。如果你将它设置为一个像20或100这样愚蠢的高数字,它听起来会很有趣!

如果你想对样本做更多有趣的事情,我认为你将不得不使用像RemoteIO或AudioQueue这样的低级API。