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

Mp3 encoder - новая версия
Сообщения
manyrus

Представляю вам класс для работы с mp3. Данный класс преобразует mp3 файл в новый, изменяя битрейт и idv3-тэги.
Требования: (lame или ffmpeg), php5.3+.
Как работать:

require 'encoder.php';

//импортируем пакеты
use \encoder\encoder\Encoder;
use \encoder\encoder\ffmpeg\SimpleFFmpegEncoder;
use \encoder\encoder\lame\SimpleLameEncoder;
use \encoder\ID3\v1\simple\SimpleID3v1Copy;
use \encoder\ID3\v2\simple\SimpleID3v2Copy;
use \encoder\exception\FileNotFoundException;
use \encoder\exception\EmptyAttributeException;
use \encoder\exception\FileIsNotReadableException;
use \encoder\exception\FileIsNotWritableException;
//

try {
    $t = new Encoder(new SimpleLameEncoder()) //выбираем енкодер, new SimpleLameEncoder() - lame|SimpleFfmpegEncoder() - ffmpeg
    $t->setFile('/home/manyrus/tr283.mp3') /выбираем файл, который будем перекодировать.
    $t->setBitrate(320) /устанавливаем битрейт для будущего файла
    $t->setID3v1Copy(new SimpleID3v1Copy()) /устанавливаем класс, для работы с тегами версии 1, обязательно
    $t->setID3v2Copy(new SimpleID3v2Copy()) /устанавливаем класс, для работы с тегами версии 2, обязательно
    $t->setOutputFile('/home/manyrus/tr2833.mp3') /выбираем файл, куда будет сохранять перекодированный файл
    $t->exec() /выполняем
} catch (FileNotFoundException $e) {//Дальше идут исключения, это исключение означает, что файл, который надо перекодировать, не существует или возникли ошибки при перекодировании(не хватает прав)
    die($e->getMessage());
} catch (EmptyAttributeException $e) {//вы что-то не установили (битрейт, файл на выходе, и т.п.)
    die($e->getMessage()."\n");
} catch(FileIsNotReadableException $e) {//файл, который надо перекодировать, нельзя прочитать(прав не хватает)
    die($e->getMessage()."\n");
} catch(FileIsNotWritableException $e) {//нельзя создать/записать перекодированный файл(прав не хватает)
    die($e->getMessage()."\n");
}
Класс копирует все теги из оригинального файла, но могут быть проблемы с id3v2.4


__________
посл.ред. 28 Май 2011, 20:58; всего 6 раз(а) 22 Май 2011, 16:50
LooK

manyrus, Молодчик, я как раз нуждался в подобном классе. Спс

22 Май 2011, 17:00
Default_mo

ну битрейт он же все равно будет изменять используя стандартный exec?

23 Май 2011, 13:23
manyrus

Хех, обнаружил у себя ошибки. Сегодня/завтра исправлю. В данный момент не рекомендуется использовать его.
добавлено спустя 32 секунды:
Default_mo, да  Это просто оболчка. Но после перекодировки lame не копирует тэги  .

23 Май 2011, 14:46
Dj FLieZ

удачи)))

23 Май 2011, 15:59
manyrus

Нашёл я нормальный редактор тегов v3.2.*, буду по тихоньку портировать, т.к. фичи не устраивают. В будущей версии будет редактор тего версии 1 и 2

23 Май 2011, 16:32
Default_mo

manyrus, getidv3? )

23 Май 2011, 21:18
manyrus

Default_mo, слишком большой. Не понравился мне.
добавлено спустя 21 часов 1 минуту:
Вообщем, вроде додумался как организовать копировальщик тегов. Сегодня попытаюсь выложить, может даже с поддержкой ffmpeg. Только не будет добавки в теги префиксы, т.к. скрипт будет очень много весить(сколько в v2 фреймов  )
добавлено спустя 17 минут:
Есть, сработала моя теория  Скоро будет класс...
добавлено спустя 2 часа:
Завтра утром выложу класс, т.к. нужно ещё время для того, чтобы добавить поддержку тегов первой версии + обдумать архитектуру.
добавлено спустя 22 часов 45 минут:
Обновил версию, читайте первый пост.

25 Май 2011, 19:55
Belyj

Спасибо, надо будет попробовать.
Как с нагрузкой на сервер? Я так понял должна быть досупна exec()?

25 Май 2011, 20:29
manyrus

Belyj, должна быть доступна exec(). На нагрузку не смотрел, но копирование тегов сильно не грузит серв, а кодирование зависит от сервера.

25 Май 2011, 20:42
Ответить на тему