Вы не зашли.
Главная » PHP » getID3 получение полной информации об mp3 с удаленного сервера
#1. TLENS Off (14)
Moderator
2016.04.16 19:07
Пытаюсь выкачать часть файла и вытащить с mp3 обложку если она есть. Но никак не могу определить сколько данных мне нужно выкачать с удаленного файла. Так как файлы есть с разным размером тегов. бывает и по 200кб попадаются.
Придумал следующий костыль не знаю насколько он будет правильным но вроде норм работает.
Код:
span style="color: #0000BB"><?phpinclude_once '../start.php';require_once('../include/getid3/getid3.php'); function getMp3Info ( $url ){ if($url){ $t = microtime(true); $tmpname = tempnam('/tmp6','getid3'); $tmp = fopen($tmpname, 'wb'); if (!$tmp) return -1; $source = fopen($url, 'rb'); if (!$source) { fclose($tmp); unlink($tmpname); return -2; } $startRead = 32*1024; $lastbites = $startRead; while($lastbites > 0 && !feof($tmp) && $frame = fread($source, $lastbites)) { fwrite($tmp, $frame); $lastbites -= strlen($frame); } $getID3 = new getID3; $getID3->analyze($tmpname); if (@$getID3->info['id3v2']['tag_offset_end'] > 0 && $getID3->info['id3v2']['tag_offset_end'] > $startRead) { $lastbites = intval($getID3->info['id3v2']['tag_offset_start']) + $getID3->info['id3v2']['tag_offset_end'] - $startRead; while($lastbites > 0 && !feof($tmp) && $frame = fread($source, $lastbites)) { fwrite($tmp, $frame); $lastbites -= strlen($frame); } fwrite($tmp, $frame); } $getID3 = new getID3; $getID3->analyze($tmpname); fclose($tmp); fclose($source); unlink($tmpname); echo microtime(true) - $t; return $getID3->info; } }
Интересно есть ли альтернативы. Все в нете перерыл везде непонятно откуда берут то 32 кб то 45.
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.011 s