在 PHP 中将 XML RSS Feed 音频长度从字节转换为 Minutes/Seconds

Convert XML RSS Feed Audio Length from Bytes to Minutes/Seconds in PHP

我正在抓取一个 RSS Feed,其中包含音频文件的 <enclosure> 元素。根据the spec,长度以字节为单位给出。

 <enclosure url="https://www.w3schools.com/media/audio-file.m4a" length="67960845" type="audio/x-m4a" />

我需要将这个长度转换成实际可测量的时间(即小时、分钟、秒)。这需要知道我碰巧拥有的比特率(我相信)! RSS 提要来自 Anchor 和 according to Anchor,他们以 44.1 kHz、128 kbit/s CBR 对立体声音频进行采样。

我知道提供的示例 length="67960845" 转换为 71 分钟。我试图对其进行逆向工程,但我真的找不到一个好的公式来可靠地转换它,例如:

<?php 
    $length = 67960845;
    $seconds = $length / ????; 
?>

此请求在 PHP 中,但可以适用于抓取 RSS 提要的任何语言。

如果将长度转换为位,则可以将其除以比特率,然后得到秒数:

(67960845*8)/128/1000/60 = 70.792546875

所以...

$length = 67960845;
$bitrate_kbps = 128;
$seconds = ceil(($length * 8) / $bitrate_kbps / 1000 / 60);

这对你有用吗?