【发布时间】:2011-07-13 06:07:46
【问题描述】:
我想使用 iPhone SDK 检测音频文件每秒的振幅(以 dB 为单位)。根据每秒声音文件的 dB 幅度,我需要此功能用于对象的嘴部动画。我怎样才能做到这一点 ?可以使用哪个音频框架? 您有任何示例的链接吗?
【问题讨论】:
标签: iphone ios ios4 audio iphone-sdk-3.0
我想使用 iPhone SDK 检测音频文件每秒的振幅(以 dB 为单位)。根据每秒声音文件的 dB 幅度,我需要此功能用于对象的嘴部动画。我怎样才能做到这一点 ?可以使用哪个音频框架? 您有任何示例的链接吗?
【问题讨论】:
标签: iphone ios ios4 audio iphone-sdk-3.0
我已经找到了解决这个问题的方法
我使用了 AVAudioPlayer 的 peakPowerForChannel 和 averagePowerForChannel 方法来获取分频
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]);
}
【讨论】:
看起来不错,虽然很抱歉,但不知道任何 iPhone 编程: http://www.politepix.com/2010/06/18/decibel-metering-from-an-iphone-audio-unit/
【讨论】: