最近在工作中,出现音频转码程序总是重复转码的问题,分析原因后,发现在音频适配程序中会判断目标音频文件时长和源音频文件时长是否一致,如果不一致,会判定为转码失败,下次访问该音频时,会再次转码。但是今天发现音频获取慢,登上服务器,发现好多ffmpeg进程,但是转码文件都指向了同一个。后来就分析转码程序,对比了一下源文件和目标文件的时长,发现有1到2秒的误差。原因找到了,那么在判断时长时就不能做精确比对,而需要做模糊比对,可是php的约等于只是对小数起作用,整数的话还是得自己写函数,函数如下
function duration_approximately($num1,$num2,$allowance){
$max = max($num1,$num2);
$min = min($num1,$num2);
if(($max - $min) <= $allowance){
return TRUE;
}else{
return FALSE;
}
}