Xwab
Форумыnavigate_nextСкрипты

Класс для работы с мп3
Сообщения
XeOn

Представлю вашему вниманию свой класс для работы с mp3 файлами.
Класс для работы с мп3 файлами. Автор SkyFire aka XeOn.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Запрещено продавать класс, выдавать за свой, изменять код класса,
использовать части кода класса. Уважайте чужой труд!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Возможности:
- Чтение / запись тегов в utf-8
- Конвертирование из мп3 в wav, aac, m4a, wma
- Изменение битрейта мп3 файлов
- Нарезка
- Чтение / запись обложки альбома
-----------------------------
В скрипте задействована библиотека getID3 для работы с тегами.
-----------------------------
Пути к файлу и к обложке альбома указывайте от корня сервера но без слеша в начале.
Например файл находится по адресу http://site.ru/dir/file.mp3 тогда путь будет таким: dir/file.mp3 .
Использовать класс легко. Ниже несколько примеров:
<?
//Подключаем класс (допустим что класс лежит в директории с пхп файлом где этот класс используется.

require 'MP3Tool.class.php';
//Создадим объект класса

$mp3 = new MP3Tool();

$file = 'dir/file.mp3'; //Путь к оригинальному мп3 файлу
$outFile = 'dir/new.wav'; //Путь к новому файлу
$bit = '128'; //Битрейт нового файла
$time = array(0, 20); //Время для нарезки в секундах 1 - от, 2 - до
$cover = 'img/cover.jpg'; //Путь к изображению обложки (Допустимый формат jpg или jpeg)
$tags = array(
              'album' => 'Альбом', //альбом
              'artist' => 'David Guetta', //исполнитель
              'title' => 'Test', //название трека
              'genre' => 'house', //жанр
              'comment' => 'nice track', //комментарий
              'year' => '2006' //год
             );
//Получаем информацию о файле (Теги и  обложку если есть)
//Выведет такие теги как album, artist, title, genre, year, comment и если есть обложка то и обложку в виде строки
//А также bitrate, sample_rate, filesize, duration, channels
//Что-бы обложка стала картинкой просто сохраните ее в файл file_put_contents('cover.jpg', $info['cover']);

$info = $mp3 -> GetMp3Info($file);

//Записываем теги и обложку
//Если нужно записать только теги то третий аргумент не указываем

$mp3 -> Write($file, $tags, $cover); //Записываем теги и обложку альбома

//Конвертируем в wav с битрейтом 128 и обрезаем с 0 до 20 секунды.
//Если обрезать не нужно то просто не указывайте четвертый аргумент

$mp3 -> Convert($file, $bit, $outFile, $time);

?>

Вот вроде-бы и все)))
------------------------------
Для работы конвертирования необходим ffmpeg.
Пишите замечания и пожелания.
добавлено спустя 4 минуты:
Кабэ мой первый класс))
----------------------------
В предидущем файле есть одна ошибка при записи тегов неверно определялся путь к файлу. Вот версия с исправлением + добавил копирование тегов при конвертировании (но не тестировал).

12 Июн 2012, 2:25
=VVV85=

А в скрипт нельзя его внедрить поиска музыки? А то у меня он без конвертации

12 Июн 2012, 19:37
Febian

=VVV85=, с этим классом вообще ничего нельзя делать, судя по первому посту. Им можно лишь любоваться..

12 Июн 2012, 20:20
Wins

Зачем вылаживать если его нельзя использовать?

12 Июн 2012, 20:25
Akdmeh

"Запрещено продавать класс, выдавать за свой, изменять код класса,
использовать части кода класса." - то есть, я не могу его использовать как часть своего платного скрипта?
Смысл тогда от скрипта? Полюбоваться?
И как это я не могу скопировать часть кода. Уверен, что вы и сами смотрели другой код и переписывали его.

А так вообще полезный класс, спасибо, но политику лицензии я бы пересмотрел, сделал бы, к примеру, необходимость оставлять копирайт, но иметь право изменять и поставлять в комплекте платного скрипта.

Этот вопрос довольно актуальный для большинства, считаю.

12 Июн 2012, 20:28
jasis

XeOn, конвертирование работает без всяких system() exec() ?
и что значит обложка, типо можна вытягивать картинку-обложку из музыкального файла?

12 Июн 2012, 20:51
XeOn

Akdmeh пишет:
""Запрещено продавать класс, выдавать за свой, изменять код класса,
использовать части кода класса." - то есть, я не могу его использовать как часть своего платного скрипта?
Смысл тогда от скрипта? Полюбоваться?
И как это я не могу скопировать часть кода. Уверен, что вы и сами смотрели другой код и переписывали его.

А так вообще полезный класс, спасибо, но политику лицензии я бы пересмотрел, сделал бы, к примеру, необходимость оставлять копирайт, но иметь право изменять и поставлять в комплекте платного скрипта.

Этот вопрос довольно актуальный для большинства, считаю."

Нет, в платном скрипте использовать можно. Нельзя сам класс продавать.
И насчет того что нельзя использовать части класса: нельзя например взять функцию из класса и использовать как свою. Просто неправильно сформулировал.
добавлено спустя 58 секунд:
jasis пишет:
"XeOn, конвертирование работает без всяких system() exec() ?
и что значит обложка, типо можна вытягивать картинку-обложку из музыкального файла?"

Без exec и system ты конвертирование не сделаешь.
Да, можно вытягивать обложку и записывать.


__________
посл.ред. 12 Июн 2012, 23:24; всего 1 раз 12 Июн 2012, 23:23
Default_mo

вообще я там не увидел ничего нового.
просто более компактный вывод для getid3. Так скажем, вариант "для ленивых".
добавлено спустя 39 секунд:
я думаю тему лучше назвать "класс для работы с getid3"

12 Июн 2012, 23:24
XeOn

Default_mo, Не только теги ведь. Еще нарезка, конвертирование, изминение битрейта.
Я изначально для ссебя его писал.
добавлено спустя 45 секунд:
Default_mo, getID3 не умеет конвертировать и резать.
добавлено спустя 58 секунд:
Wins, Использовать можно, нельзя на части разбирать.
добавлено спустя 50 секунд:
=VVV85=, Почему нельзя, можно конечно. Он для этого и писался.
добавлено спустя 2 минуты:
Вобщем использовать или нет решать вам, я просто выложил свои наработки, которые писал для себя когда делал скрипт муз. сайта, но потом забросил. А класс что-бы не валялся решил выложить.

12 Июн 2012, 23:30
jasis

XeOn, тю) тогда ничего хорошего нет! конвертирование делается одной строкой через exec

12 Июн 2012, 23:33
Ответить на тему