я использую getid3
чтобы получить размер файла и время от удаленного URL. getid3
не работает с удаленными URL-адресами, поэтому обходной путь заключается в том, чтобы загрузить 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);
};?>
Моя проблема заключается в том, что он загружает только первые 32768 КБ файла mp3 и не показывает правильный размер файла (отображается как максимальный 32768) или правильную длительность файла. Если я увеличу максимальный размер, код вылетит.
Есть ли способ скачать полный mp3 или найти нужный размер заголовка без загрузки полного файла?
Теги ID3v1 находятся в конце файла, а не в начале. Следовательно, вы не сможете прочитать их, пока не загрузите часть конца файла (с запросами диапазона, выполненными с помощью cURL) или не загрузите весь файл.
Если вы хотите ID3v2, они будут в начале файла.
Других решений пока нет …