Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mp3 инфо через php
 
 автор: skor   (05.10.2006 в 21:31)   письмо автору
 
 

здравствуйте.

тут нашел кусок кода который по идее должен выводить инфу о mp3 файле ...
раньше с этим дела не имел поэтому плохо предстовляю как это происходит..
вот код:


<?php
function formattime($time) {

        
$hours floor(($time/60)/60);
        
$minutes floor(($time 60)-($hours*60));
        
$seconds floor($time - (($minutes 60)+(($hours*60)*60)));
        if (
$seconds<10) {$seconds="0".$seconds;}
        if (
$minutes<10) {$minutes="0".$minutes;}
        if (
$hours!=0) {
                if (
$hours<10) {
                       
$hours="0".$hours;
                }
                return 
$hours.':'.$minutes.':'.$seconds.conv;
        }
        else {
                return 
$minutes.':'.$seconds;
        }
}
function 
bitrate1($mysting)
{
        
$mysting=str_replace(0x10,32,$mysting);
        
$mysting=str_replace(0x20,40,$mysting);
        
$mysting=str_replace(0x30,48,$mysting);
        
$mysting=str_replace(0x40,56,$mysting);
        
$mysting=str_replace(0x50,64,$mysting);
        
$mysting=str_replace(0x60,80,$mysting);
        
$mysting=str_replace(0x70,96,$mysting);
        
$mysting=str_replace(0x80,112,$mysting);
        
$mysting=str_replace(0x90,128,$mysting);
        
$mysting=str_replace(0xA0,160,$mysting);
        
$mysting=str_replace(0xB0,192,$mysting);
        
$mysting=str_replace(0xC0,224,$mysting);
        
$mysting=str_replace(0xD0,256,$mysting);
        
$mysting=str_replace(0xE0,320,$mysting);
        return 
$mysting;
}
function 
bitrate2($mysting)
{
        
$mysting=str_replace(0x10,8,$mysting);
        
$mysting=str_replace(0x20,16,$mysting);
        
$mysting=str_replace(0x30,24,$mysting);
        
$mysting=str_replace(0x40,32,$mysting);
        
$mysting=str_replace(0x50,40,$mysting);
        
$mysting=str_replace(0x60,48,$mysting);
        
$mysting=str_replace(0x70,56,$mysting);
        
$mysting=str_replace(0x80,64,$mysting);
        
$mysting=str_replace(0x90,80,$mysting);
        
$mysting=str_replace(0xA0,96,$mysting);
        
$mysting=str_replace(0xB0,112,$mysting);
        
$mysting=str_replace(0xC0,128,$mysting);
        
$mysting=str_replace(0xD0,144,$mysting);
        
$mysting=str_replace(0xE0,160,$mysting);
        return 
$mysting;
}
function 
freq1($mysting)
{
        
$mysting=str_replace(0x00,44.1,$mysting);
        
$mysting=str_replace(0x04,48,$mysting);
        
$mysting=str_replace(0x08,32,$mysting);

        return 
$mysting;
}
function 
freq2($mysting)
{
        
$mysting=str_replace(0x00,22.05,$mysting);
        
$mysting=str_replace(0x04,24,$mysting);
        
$mysting=str_replace(0x08,16,$mysting);

        return 
$mysting;
}
function 
misc($mysting)
{
        
$mysting=str_replace(0x00,'Стерео',$mysting);
        
$mysting=str_replace(0x40,'Стерео',$mysting);
        
$mysting=str_replace(0x60,'Двухканальный',$mysting);
        
$mysting=str_replace(0x80,'Моно',$mysting);
        return 
$mysting;
}
function 
getinfo($filename) {
                
$done=false;
                
$file=fopen("$filename","r");
                
$point=0;
                while ((!
feof($file)) and (!$done)){
                        
fseek($file$point);
                        
$data=fread($file,2);
                        
$data=unpack ("Cint/Cint2",$data);
                        if ((
$data[int] == 0xFF) and ($data[int2] < 0xFF) and ($data[int2]>=0xF0)) {
                                
$done=true;
                                
$id3=$point;
                        }
                
$point++;
                }
        
$filesize=filesize($filename);
        
$filesize=$filesize $id3;
        
fseek($file$id3);
        
$bindata fread($file4);
        
fclose($file);
        if(! (
$bindata unpack('nint/C2'$bindata)) ) return false;
        if ((
$bindata[int] & 0xFFF0) != 0xFFF0) return false;
        if ((
$bindata[int] & 0x08) == 0x08) {
                
$info[bitrate] = bitrate1($bindata[1] & 0xF0);
                
$info[frequency] = freq1($bindata[1] & 0x0C);
                
$info[stereo] = misc($bindata[2] & 0xC0);
                
$info[time] = ($filesize / (bitrate1($bindata[1] & 0xF0) * 1000 8));
        }

        if ((
$bindata[int] & 0x08) == 0x00) {
                
$info[bitrate] = bitrate2($bindata[1] & 0xF0);
                
$info[frequency] = freq2($bindata[1] & 0x0C);
                
$info[stereo] = misc($bindata[2] & 0xC0);
                
$info[time] = $filesize / (bitrate2($bindata[1] & 0xF0) * 1000 8);
        }

        return 
$info;
        }
?>


как его применить?
и нужна ли какая нибудь дополнительная библеотека?

P,S, по возможности прошу не посылать на другие ресурсы т.к. я через мобилу в инете , трафик на вес золота ;))

   
 
 автор: valenok   (05.10.2006 в 21:39)   письмо автору
20.7 Кб
 
   для: skor   (05.10.2006 в 21:31)
 

Класс id3.class.php

   
 
 автор: skor   (05.10.2006 в 21:44)   письмо автору
 
   для: valenok   (05.10.2006 в 21:39)
 

мне это ничего не прояснило... гг ))

   
 
 автор: skor   (06.10.2006 в 14:32)   письмо автору
 
   для: valenok   (05.10.2006 в 21:39)
 

не мог бы поподробней обьяснить как это заставить работать?

   
 
 автор: slonik   (06.10.2006 в 15:38)   письмо автору
 
   для: skor   (06.10.2006 в 14:32)
 

Во-первых, тебе прикрепили файл, где про id.class.php
А во вторых, очень функциональная штука - getid3... можно выполнить, всё что пожелается. Я его сейчас режу и правлю под себя... Слишком там всё наворочено, но результаты радуют.

   
 
 автор: skor   (06.10.2006 в 20:06)   письмо автору
 
   для: slonik   (06.10.2006 в 15:38)
 

Мне не нужно слишком навороченный...
Мне Всево лишь нужно определить битрейт и моно или стерео...

   
 
 автор: slonik   (06.10.2006 в 23:48)   письмо автору
 
   для: skor   (06.10.2006 в 20:06)
 

Ну есть такая штука, как PEAR (http://pear.php.net/) и вот в нём есть, наверно самая лучшая библионтека, по вытаскиванию инфы из файлов. Большинство скриптом используют именно эту библиотеку - http://pear.php.net/package/MP3_ID
Но я выбрал Getid3, т.к. нужно более продвинутые возможности, в том числе - сканирование дирректории и занесения всех данных в базу данных mysql...а потом уже использовать эту инфу по сайту.

   
 
 автор: skor   (07.10.2006 в 00:44)   письмо автору
 
   для: slonik   (06.10.2006 в 23:48)
 

во спасибо ))
PEAR использовал, как раз то что надо ))
ВСЕМ СПАСИБО ЗА ПОМОЩЬ!!

   
 
 автор: Киналь   (05.10.2006 в 22:02)   письмо автору
 
   для: skor   (05.10.2006 в 21:31)
 

Вроде ничего дополнительно не нужно. Просто копируете этот код себе, и вызываете потом в нужном месте функцию getinfo(), передав ей в качестве параметра путь (не url) к mp3-файлу, а она вам вернет массив с битрейтом, частотой, стерео/моно и времени звучания. Вроде так.

   
 
 автор: skor   (05.10.2006 в 22:06)   письмо автору
 
   для: Киналь   (05.10.2006 в 22:02)
 

щас попробуемс.. спасиб ;)

   
 
 автор: skor   (06.10.2006 в 13:53)   письмо автору
 
   для: Киналь   (05.10.2006 в 22:02)
 

выдает огромный массив ошибок (((

   
 
 автор: Киналь   (06.10.2006 в 14:39)   письмо автору
 
   для: skor   (06.10.2006 в 13:53)
 

Какого типа ошибки? Приведите несколько для примера.

   
 
 автор: skor   (06.10.2006 в 14:54)   письмо автору
 
   для: Киналь   (06.10.2006 в 14:39)
 


Notice: Use of undefined constant bitrate - assumed 'bitrate' in z:\home\12.ru\www\untitled-6.php on line 102

Notice: Use of undefined constant frequency - assumed 'frequency' in z:\home\12.ru\www\untitled-6.php on line 103

Notice: Use of undefined constant stereo - assumed 'stereo' in z:\home\12.ru\www\untitled-6.php on line 104

Notice: Use of undefined constant time - assumed 'time' in z:\home\12.ru\www\untitled-6.php on line 105

Notice: Use of undefined constant int - assumed 'int' in z:\home\12.ru\www\untitled-6.php on line 108

   
 
 автор: Киналь   (06.10.2006 в 14:58)   письмо автору
 
   для: skor   (06.10.2006 в 14:54)
 

Так это просто синтаксические - ключи массива написаны без кавычек. То есть нужно сиправить

$ifo[time]

на

$ifo['time']

и так далее.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования