Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Mp3 файлы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: обрезание
ucob
Отправлено: 27 Ноября, 2011 - 19:25:59
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Можно ли на php обрезать файлы mp3 по определенным секундам, если да, то интересно ка, если нет, то на чем сделать можно.


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
z1o
Отправлено: 04 Декабря, 2011 - 10:34:09
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




ucob пишет:
Можно ли на php обрезать файлы mp3 по определенным секундам, если да, то интересно ка, если нет, то на чем сделать можно.


Можно, есть у меня класс для работы с mp3.

Шас поищу и выложу.
(Добавление)
Вот:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4.  
  5. class MP3_Crop {
  6.  
  7.     /**
  8.     * mp3/mpeg file name
  9.     * @var boolean
  10.     */
  11.     var $file = false;      
  12.  
  13.     /**
  14.     * version of bitrate
  15.     * @var integer
  16.     */        
  17.     var $bitrate = 0;
  18.     var $layer;
  19.    
  20.     /**
  21.     * Bytes in file
  22.     * @var integer
  23.     */
  24.  
  25.     var $filesize = -1;
  26.     /**
  27.     * Byte at which the first mpeg header was found
  28.     * @var integer
  29.     */                            
  30.    
  31.     var $frameoffset = -1;
  32.     /**
  33.     * length of mp3 format hh:ss
  34.     * @var string
  35.     */
  36.  
  37.     /**
  38.     * length of mp3 in seconds
  39.     * @var string
  40.     */                            
  41.     var $length = false;
  42.  
  43.  
  44.     /*
  45.      * creates a new id3 object
  46.      * and loads a tag from a file.
  47.      *
  48.      */
  49.     function MP3_Crop()
  50.     {
  51.     }
  52.  
  53.     /**
  54.     * reads the given file and parse it
  55.     *
  56.     * @param    string  $file the name of the file to parse
  57.     * @return   mixed   PEAR_Error on error
  58.     * @access   public
  59.     */
  60.     function read($file)
  61.     {
  62.         $this->file = $file;
  63.  
  64.         return $this->_readframe();
  65.     }
  66.  
  67.  
  68.     /**
  69.      * update the id3v1 tags on the file.
  70.      * Note: If/when ID3v2 is implemented this method will probably get another
  71.      *       parameters.
  72.      *    
  73.      * @param boolean $v1   if true update/create an id3v1 tag on the file. (defaults to true)
  74.      *
  75.      * @access public
  76.      */
  77.     function write($cropFile, $length = 20)
  78.     {
  79.         $size = ($length * $this->bitrate * 1000) / 8;
  80.        
  81.         $f = fopen($this->file, 'rb');
  82.         if (!$f)
  83.         {
  84.             return false;
  85.         }
  86.  
  87.         $content = fread($f, $size);
  88.         fclose($f);
  89.  
  90.         $f = fopen($cropFile, 'wb');
  91.         if (!$f)
  92.         {
  93.             return false;
  94.         }
  95.        
  96.         fwrite($f, $content);
  97.         fclose($f);
  98.  
  99.         return true;
  100.     }
  101.  
  102.  
  103.     /**
  104.     * reads a frame from the file
  105.     *
  106.     * @return mixed PEAR_Error when fails
  107.     * @access private
  108.     */
  109.     function _readframe()
  110.     {
  111.         $file = $this->file;
  112.  
  113.         if (! ($f = fopen($file, 'rb')) )
  114.         {
  115.             return false;
  116.         }
  117.  
  118.         $this->filesize = filesize($file);
  119.  
  120.         do
  121.         {
  122.             while (fread($f,1) != Chr(255))
  123.             {
  124.                 // Find the first frame
  125.                 if (feof($f))
  126.                 {
  127.                     return false;
  128.                 }
  129.             }
  130.             fseek($f, ftell($f) - 1); // back up one byte
  131.  
  132.             $frameoffset = ftell($f);
  133.  
  134.             $r = fread($f, 4);
  135.             // Binary to Hex to a binary sting. ugly but best I can think of.
  136.             $bits = unpack('H*bits', $r);
  137.             $bits =  base_convert($bits['bits'],16,2);
  138.        
  139.         } while (!$bits[8] and !$bits[9] and !$bits[10]); // 1st 8 bits true from the while
  140.  
  141.         $this->frameoffset = $frameoffset;
  142.  
  143.         fclose($f);
  144.  
  145.         if ($bits[11] == 0) {
  146.             $bitrates = array(
  147.                 '1' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0),
  148.                 '2' => array(0,  8, 16, 24, 32, 40, 48,  56,  64,  80,  96, 112, 128, 144, 160, 0),
  149.                 '3' => array(0,  8, 16, 24, 32, 40, 48,  56,  64,  80,  96, 112, 128, 144, 160, 0),
  150.                      );
  151.         } else if ($bits[12] == 0) {
  152.             $bitrates = array(
  153.                 '1' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0),
  154.                 '2' => array(0,  8, 16, 24, 32, 40, 48,  56,  64,  80,  96, 112, 128, 144, 160, 0),
  155.                 '3' => array(0,  8, 16, 24, 32, 40, 48,  56,  64,  80,  96, 112, 128, 144, 160, 0),
  156.                      );
  157.         } else {
  158.             $bitrates = array(
  159.                 '1' => array(0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 0),
  160.                 '2' => array(0, 32, 48, 56,  64,  80,  96, 112, 128, 160, 192, 224, 256, 320, 384, 0),
  161.                 '3' => array(0, 32, 40, 48,  56,  64,  80,  96, 112, 128, 160, 192, 224, 256, 320, 0),
  162.                      );
  163.         }
  164.  
  165.         $layer = array(
  166.             array(0,3),
  167.             array(2,1),
  168.                   );
  169.         $this->layer = $layer[$bits[13]][$bits[14]];
  170.  
  171.         $bitrate = 0;
  172.         if ($bits[16] == 1) $bitrate += 8;
  173.         if ($bits[17] == 1) $bitrate += 4;
  174.         if ($bits[18] == 1) $bitrate += 2;
  175.         if ($bits[19] == 1) $bitrate += 1;
  176.         $this->bitrate = $bitrates[$this->layer][$bitrate];
  177.  
  178.         if ($this->bitrate == 0)
  179.         {
  180.             $this->length = -1;
  181.             return false;
  182.         }
  183.  
  184.         $s = ((8 * filesize($this->file)) / 1000) / $this->bitrate;
  185.         $this->length = (int)$s;
  186.  
  187.         return true;
  188.     }
  189. };
  190.  
  191. ?>
  192.  
  193.  

(Отредактировано автором: 04 Декабря, 2011 - 10:35:08)

 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Декабря, 2011 - 12:20:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)





ucob пишет:
обрезание
Евреи бегали по деревне и пугали всех своими обрезами...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB