• Главная
  • » PHP
  • » getID3 получение полной информации об mp3 с удаленного сервера

#1 2016.04.16 19:30

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

getID3 получение полной информации об mp3 с удаленного сервера

Пытаюсь выкачать часть файла и вытащить с mp3 обложку если она есть. Но никак не могу определить сколько данных мне нужно выкачать с удаленного файла. Так как файлы есть с разным размером тегов. бывает и по 200кб попадаются.
Придумал следующий костыль не знаю насколько он будет правильным но вроде норм работает.

Код:

1
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.

Неактивен

  • Главная
  • » PHP
  • » getID3 получение полной информации об mp3 с удаленного сервера

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.007 s