获取音频文件 php 的长度

2022-08-31 00:41:08

我如何在php中获取音频文件的长度。

如果在php中做起来太难了,那么任何其他方式都应该可以正常工作。


答案 1

如果您使用的是linux / unix并且安装了ffmpeg,请执行此操作:

$time = exec("ffmpeg -i " . escapeshellarg($path) . " 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
list($hms, $milli) = explode('.', $time);
list($hours, $minutes, $seconds) = explode(':', $hms);
$total_seconds = ($hours * 3600) + ($minutes * 60) + $seconds;

答案 2

对Stephen Fuhry答案的改进:

/**
 * https://stackoverflow.com/a/7135484/470749
 * @param string $path
 * @return int
 */
function getDurationOfWavInMs($path) {
    $time = getDurationOfWav($path);
    list($hms, $milli) = explode('.', $time);
    list($hours, $minutes, $seconds) = explode(':', $hms);
    $totalSeconds = ($hours * 3600) + ($minutes * 60) + $seconds;
    return ($totalSeconds * 1000) + $milli;
}

/**
 * 
 * @param string $path
 * @return string
 */
function getDurationOfWav($path) {
    $cmd = "ffmpeg -i " . escapeshellarg($path) . " 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//";
    return exec($cmd);
}

谢谢 斯蒂芬这对我来说很好(尽管对于数百个文件来说它很慢)。


推荐