getid3:从远程服务器下载完整的 mp3 数据

getid3: download the full mp3 data from remote server

我正在使用 getid3 从远程 URL 获取文件大小和持续时间。 getid3 不适用于远程 URLs 所以 work-around 是将 mp3 下载到一个临时位置,读取数据然后删除它。

代码:

<?php $filename = tempnam('/tmp','getid3');
if (file_put_contents($filename,file_get_contents('http://feeds.soundcloud.com/stream/336401044-scott-johnson-27-tms-1314-pm.mp3', false, null, 0, 32768))) {
if (require_once('id3/getid3.php')) {
$getID3 = new getID3;
$ThisFileInfo = $getID3->analyze($filename);
echo '<pre>'.print_r($ThisFileInfo, true).'</pre>';
}
unlink($filename);
};?>

我遇到的问题是它只下载 mp3 文件的前 32768kb,并且没有显示正确的文件大小(显示为最大 32768)或文件的正确持续时间。如果我增加最大大小,代码将崩溃。

有没有办法下载完整的 mp3 或者找到一种方法来获得合适的 header 大小而不下载完整文件?

ID3v1 标签位于文件末尾,而不是开头。因此,在下载文件末尾的一大块(使用 cURL 完成范围请求)或下载整个文件之前,您将无法阅读它们。

如果您需要 ID3v2,这些将位于文件的开头。