Comments 27
Больше подробностей. Расскажите про параметры FFmpeg, расскажите про подводные камни, про то, как это всё в связке работает. Субъективно, в статье очень много восторга, или попросту «воды».
+4
Рассказал в статье о проблемах с Gearman, какие проблемы бывают при работе с Amazon. Каюсь про ffmpeg рассказал не очень много. Выложу, апдейт как можно скорее.
+1
Спрошу здесь может кто ответит :) Выставляя например параметром -ab 128k на некоторых файлах получаю другой битрейт, например: 119k или 132k (исходные файлы 160k). Битрейт видео тоже скачет. А какие еще подводные камни бывали у вас?
0
А что за аудио кодек?
0
-acodec libvo_aacenc -ar 44100 -ab 128k
Zeranoe FFmpeg Build (git-ceb0dd9)
libavutil 51. 34.100 / 51. 34.100
libavcodec 53. 54.100 / 53. 54.100
libavformat 53. 29.100 / 53. 29.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 58.100 / 2. 58.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 51. 2.100 / 51. 2.100
Zeranoe FFmpeg Build (git-ceb0dd9)
libavutil 51. 34.100 / 51. 34.100
libavcodec 53. 54.100 / 53. 54.100
libavformat 53. 29.100 / 53. 29.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 58.100 / 2. 58.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 51. 2.100 / 51. 2.100
0
Попробуйте libfaac. Я использую его.
0
libfaac конвертирует в VBR, libvo_aacenc конвертирует в CBR. В результате использования libfaac 2 файла 3 файла перестали проигрываться. При использовании libvo_aacenc только 1 файл пустой — не проигрывается, но и не падает с ошибками.
0
А как происходит «установка» задач для воркера gearman? Я думаю статья бы выгладила более законченной если бы вы привели пример. За статью спасибо.
+1
Стандартный код из мануала к герману:
$client= new GearmanClient();
$client->addServer($this->gearman['host'], $this->gearman['port']);
foreach($this->filesToConvert as $key => $fileId) {
$result = $client->addTaskBackground("convert", $fileId, null, $key);
}
if(!@$client->runTasks()) {
throw new Zend_Exception("Something went wrong with Gearman");
}
+1
А регистрация воркера как происходит? Я так понимаю через addFunction где callback метод action экземпляра класса конкретного воркера. Как сами воркеры пускаете? Как их мониторите?
0
Собрал dispatcher.php в нем инициализирую аутолодер, БД настройки, далее отлавливаю аргументы входящие:
Далее в шеле:
логи падают в nohup.out в той же папке где dispatcher.php
try {
//$argv[1] - тип воркера.
if ($argc == 2) {
$workerName = "App_Model_Worker_" . $argv[1];
$Worker = new $workerName();
$Worker->work();
}
} catch(Exception $e) {
echo $e->getMessage();
}
Далее в шеле:
nohup /usr/bin/php dispatcher.php Converter &
логи падают в nohup.out в той же папке где dispatcher.php
0
А где регистрация callback?
0
Упс… вырезал слишком много кода из воркеров :(
Смотрите описание конструктора в воркерах, должно быть так:
Смотрите описание конструктора в воркерах, должно быть так:
class App_Model_Worker_Converter extends App_Model_Worker_Abstract
{
public function __construct($gearman)
{
parent::__construct($gearman);
$this->addFunction("convert", array($this, "action"));
//Тут еще немного кода
}
public function action($job)
{
$fileId = $job->workload();
$file = $this->_modelFileResponse->getPrepareToConvertFile($fileId);
//Собственно здесь конвертируем.
}
}
0
Да, я вот тоже не понял, как в Gearman мониторить воркеры.
$client= new GearmanClient();
$client->addServer
это все понятно.
Но ведь для мониторинга нужно демона пустить, а как — я не понял…
$client= new GearmanClient();
$client->addServer
это все понятно.
Но ведь для мониторинга нужно демона пустить, а как — я не понял…
0
После установки демона, просто запустите: gearmand
German состоит из трех частей: сервер, клиент и воркер. Сервер запускается в шеле gearmand, клиент уже описан выше (как я добавляю задачу), запуск воркера я тоже уже выше описал.
German состоит из трех частей: сервер, клиент и воркер. Сервер запускается в шеле gearmand, клиент уже описан выше (как я добавляю задачу), запуск воркера я тоже уже выше описал.
0
Все равно никак въехать не могу(
А документация у них на сайте куцая и непонятная.
Воркер — собственно вызываемая функция
Сервер — демон, который мониторит события
Клиент… что такое клиент?
Как им вообще пользоваться и как запустить демон, чтоб он мониторил?
Понимаю, что вопросы возможно глупые и не очень в тему, но очень хочется понять, ибо щтука нужная…
А документация у них на сайте куцая и непонятная.
Воркер — собственно вызываемая функция
Сервер — демон, который мониторит события
Клиент… что такое клиент?
Как им вообще пользоваться и как запустить демон, чтоб он мониторил?
Понимаю, что вопросы возможно глупые и не очень в тему, но очень хочется понять, ибо щтука нужная…
0
Клиент это тот, кто хочет чтобы была выполнена работа, он отправляет запрос на сервер, с указанием типа работы например converter и необходимой информацией о работе, в свою очередь на сервере регистрируются воркеры с указанием какой тип работы они делают. Т.е. клиент подает задачу на сервер с типом convert, сервер опрашивает воркеры, находит свободный, который может выполнить задачу convert, если воркер занет, он ждет пока этот воркер освободится, и тогда уже этот воркер начинает работу.
0
Клиент управляет задачами/очередью задач. Создает задачи, назначает приоритеты, получает статусы задач.
0
Для мониторинга воркеров испоьзуейте GearmanManager github.com/brianlmoon/GearmanManager
+2
Использовал такую схему. ИМХО, не слишком подходит для задач конвертирования, так как нет возможности управления очередью на воркере. К примеру, когда заняты все процессоры конвертацией и приходит новая задача, ее нельзя отложить до освобождения одного из процессоров. Если конвертор один — можно решить втроенным в скрипт буфером, но если серверов несколько, все становится весьма печально.
0
Можно развернуть облако. Когда не хватает процессорных ресурсов, подтягивать новый инстенц, и на нем разворачивать воркеров, которые зарегистрируются на сервере.
0
Можно. Но сколько будет потрачено времени ради всего-лишь конвертации видео? Возможно для ресурсов, у которых упор именно на видео, это будет хорошим решением, но мне пришлось вернуться к крону.
0
Что вы имеете в виду под «процессоры конвертация»? Воркеры?
0
Sign up to leave a comment.
Articles
Change theme settings
Zendframework + ffmpeg + gearman + amazon = Видео encoder сервис