2011-07-13 5 views
2

iPhone SDKを使用して1秒あたりのオーディオファイルの振幅をdBで検出したいと考えています。私は、毎秒のサウンドファイルのdBの大きさに応じてオブジェクトの口のアニメーションにこの機能が必要です。これどうやってするの ?どのようなオーディオフレームワークが可能ですか? 例へのリンクはありますか?1秒あたりのオーディオファイルの振幅を検出しますか?

答えて

4

AVAudioPlayer *avPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedTmpFile error:&error]; 
    avPlayer.delegate = self; 

    avPlayer.meteringEnabled = YES; 
    [avPlayer prepareToPlay]; 
    [avPlayer play]; 


NSTimer *levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES]; 

このメソッドは、peakPowerForChannelとaveragePowerForChannelを返します。

- (void)levelTimerCallback:(NSTimer *)timer { 

    [avPlayer updateMeters]; 
    NSLog(@"Peak left: %f Avg right: %f", [avPlayer peakPowerForChannel:0],[avPlayer averagePowerForChannel:0]); 


} 
1

が良いようだ、しかし残念に任意のiPhoneプログラミングを知らない:私はdeciblesを取得するためAVAudioPlayerのpeakPowerForChannelとaveragePowerForChannel方法を使用している

この問題の上に解決策を見つけた http://www.politepix.com/2010/06/18/decibel-metering-from-an-iphone-audio-unit/

+0

私はこのリンクを見ていましたが、コードスニペットを理解できません – darshan

+0

Xcodeにコードをプルすることをお勧めします。理解するまでこれを勉強することをおすすめします。 – adam

+0

リモートIOのrendercallback関数で記録されたファイルを呼び出す方法を理解していません。 – darshan

関連する問題