iphone – 试图了解AVAudioPlayer和音频电平测量
发布时间:2020-12-14 19:07:35 所属栏目:百科 来源:网络整理
导读:我正在尝试了解AVAudioPlayer和音频电平计量.我下面的内容是一个播放短音频声音的“AudioPlayer”对象.现在我想输出这个声音的功率(分贝).不知怎的,我不认为我这样做是对的. audioPlayer.meteringEnabled = YES; [audioPlayer play]; int channels = audioPl
我正在尝试了解AVAudioPlayer和音频电平计量.我下面的内容是一个播放短音频声音的“AudioPlayer”对象.现在我想输出这个声音的功率(分贝).不知怎的,我不认为我这样做是对的.
audioPlayer.meteringEnabled = YES; [audioPlayer play]; int channels = audioPlayer.numberOfChannels; [audioPlayer updateMeters]; for (int i=0; i<channels; i++) { //Log the peak and average power NSLog(@"%d %0.2f %0.2f",i,[audioPlayer peakPowerForChannel:0],[audioPlayer averagePowerForChannel:0]); NSLog的输出是 现在根据Apple“0 dB的返回值表示满量程或最大功率; -160 dB的返回值表示最小功率”这是否意味着此声音处于最小功率?我不认为这是真的,因为音频片段是一个相当响亮的声音.我想我在这里遗漏了一些东西,任何澄清都会受到赞赏. 解决方法
您正在更新,然后在声音开始后几乎立即询问仪表的值 – updateMeters可能在您发送游戏后运行几十毫秒.因此,如果剪辑开头有任何沉默,你很可能会得到正确的读数.您应该尝试延迟检查,并且可能还需要在检查值之前在循环内发送updateMeters.
你也从未真正获得频道的电表值> 0,因为无论i在循环中的值是什么,都传递0.我想你打算这样做: for (int currChan = 0; currChan < channels; currChan++) { //Log the peak and average power NSLog(@"%d %0.2f %0.2f",currChan,[audioPlayer peakPowerForChannel:currChan],[audioPlayer averagePowerForChannel:currChan]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |