Выкладываем сюда свои библиотеки. Парадигма желательно объектная, но процедурная/функциональная тоже пойдёт.
Вот моя, к примеру:
Представляю вам билиотеку для работы с 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
P.s.: скоро проект будет на гитхабе. Пока тут полежит.
добавлено спустя 4 минуты:
Хотел оформить в отдельном посте, напишите кто-нибудь что-нибудь в этой теме, чтобы разделить
.