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

#1 2016.04.16 19:30

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

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
include_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 && !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'] > && $getID3->info['id3v2']['tag_offset_end'] > $startRead) {
            $lastbites intval($getID3->info['id3v2']['tag_offset_start']) + $getID3->info['id3v2']['tag_offset_end'] - $startRead;
            while($lastbites && !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.1
0.007 s