我正在编写音频放大器,以便在音轨上应用包络。音频来自包含原始 44100 KHz 16 位立体声样本的文件。我编写了如下代码。为了简化示例,放大系数是恒定的,但在实际项目中是变化的。
<?php
$arrRawSamples = unpack('s*', fread($resAudio, 4096));
$fltAmpFactor = 0.8;
foreach (array_keys($arrSamples) as $intKey) {
$arrRawSamples[$intKey] = $arrRawSamples[$intKey] * $fltAmpFactor;
}
$strAmpSamples = call_user_func_array('pack', array_merge(array('s*'), $arrRawSamples));
php>
这很好用,我可以在应用乘法因子后播放音频,但循环消耗大量 CPU(大约 2% 的 CPU 仅在没有放大循环的情况下解包/打包,25% 的循环使用)。您能否告诉我您是否知道 CPU 消耗较少的解决方案?