Pull to refresh

Comments 31

Я помню как-то писал похожий демон, только папки не сканировал, после загрузки файла пхп через сокеты передавал параметры демону и он конвентировал видео…

А можно вообще поизврощаться, запустить конвертацию из пхп…
echo 'Файл загружен.';
flush();
exec('mencoder ...');
Хорошая статья для будущих начинаний. Добавил в букмарки!
я как-то тоже писал только на пхп. замучился с параметрами для менкодера для достижения меньшего размера и лучшего качества аж жуть…
проверять директорию каждые 10 секунд — неправильно.
почитайте о famd.
Тоже занимаюсь «онлайн» конвертацией видео, но только не в flv, а в quicktime(h264) с помощью ffmpeg.
Был написан небольшой скриптик на php и повешен в крон. Раз в 10 минут он «смотрит в базу» и если там есть новый файл — конвертирует его. Чтобы избежать одновременного запуска нескольких копий этого скриптика сделал проверку:
        exec("ps aux | grep ffmpeg",$pslist);
        //echo '<pre>';print_r($pslist);
        for($i=0; $i < count($pslist); $i++)
        {
            $pslist[$i] = ereg_replace(" +"," ",$pslist[$i]);
            $item = explode(" ",$pslist[$i]);
            if(stristr($item[10],"ffmpeg")) { echo "ffmpeg running...".$item[10]; exit; }
        }

* This source code was highlighted with Source Code Highlighter.


Параметры для ffmpeg можно посмотреть здесь: habrahabr.ru/blogs/mplayer/39224/ (#UPD3)
Превью берется с 3 секунды.
Спасибо за идею!
При вызове этой команды бывает что она себя «индуцирует», тоесть ффмпеги не запущены а есть строка
apache 74746 0.0 0.0 1520 724 ?? RL 2:27AM 0:00.00 grep ffmpeg
поэтому чтобы обнаружить такую строку
блин, отправилось раньше
строка такая
user 74080 95.1 0.6 32732 21788 ?? R 2:09AM 0:20.81 /usr/bin/ffmpeg
я делаю так
foreach ($pslist as $r) {
$v=preg_split('|\s+|',$r);
//print_r($v);
if ($v[10]=='/usr/bin/ffmpeg') die();
}
выбирал между fmpeg и mencoder. Судо по ресечу, ffmpeg намного меньше форматов поддерживает
ну и проекту mplayer все таки больше доверия
Поддерживаю. mencoder не только средство кодирования, но еще и средство распаковки\запаковки контейнеров, наложения фильтров и т.д. Да и нассчет доверия… 28к+ ревизий в svn это вам не наколенный курсач студента :)
и еще, расскажу такую поучительную историю. Однажды возникла задача обработки каких-то директорий, и что-то там с ними деланья. Подробностей не помню, но суть была в напряженной работе с файловой системой. После работы, попивая пиво с нашим одмином, я рассказал ему суть задачи. Ну обсудили алгоритм, вобщем обычный треп двух IT-шников. И тут он мне говорит: «Рома, я тебя своими руками придушу, если ты это все реализуешь на php». Я и не думал это делать на php, но спросил, «почему?» Он ответил: «Каждому языку свое применение»
И я с ним согласен.
> «Каждому языку свое применение»
Согласен, но то, что ты описывал — это в рамках пхп.
что именно? конвертация видео или работа с файловой системой?
Спасибо.

И с новым годом, черт побери!
Лучше будет, если заюзать inotify.

С Новым годом!
а что помешало сделать полноценный демон с секциями start stop restart… короче по всем правилам?
todo)))
честно говоря как то не задумался, но спасибо за замечание!
уточню только что то о чем вы говорите не демон а управляющий скрипт
ну да, а из него уже можно делать отслеживание pid, прибивать nohup/screen, вобщем все тоже самое что вылезает в гугле на запрос «screen rtorrent as service»
У меня аналогичное, только смотрит через inotify и кодирует через ffmpeg, сразу вопрос на засыпку, накладываю логотип на видео, из-за чего приходится извращаться по принципу…

шаг 1 парсим вывод ffmpeg -i и вычисляем пропорции которые требуются для вписывания в 320x240

шаг 2
ffmpeg -i вход -b 640K -f flv -s размер -ar 22050 -y выход

шаг 3
ffmpeg -i вход -b 384K -f flv -ar 22050 -vhook '/usr/lib/vhook/imlib2.so -x «сдвиг -90px» -y 2 -i 1.png' -y выход

Есть возможность за один проход в отресайзить и наложить логотип в mecoder или чемнить еще?

на самом деле еще не хватает прохода для flvtool2, который сделает мета теги. это полезно, в частности, для произвольного позиционирования при воспроизведении.
Грабли: flvtool2 — подходит только для маленьких видеороликов, т.к. грузит весь файл в память, только затем начинает работать над ним.
Противоядие?
см. коммент ниже ) промахнулся
спасибо. честно, ради того и запостил код что бы указали на слабые места)))
С Новым годом!
Думаю, стоит сделать апдейт топика, ато все еще могут наступить на грабли
спасибо, полезная вещь, только думал о таком, чтобы по фтп постить файлы и видео в блог, а не каждую отдельно.
Я сейчас применил это для жены. У неё плеер тока mpeg4 формат поддерживает. Вот сделал ей 2 папочки. В одну копируешь по сети любой формат, из другой забираешь нужный)))
Следить за папкой — хорошо конечно. Но как во время запуска удостовериться в том, что файл уже можно начинать кодить и что он на данный момент не находится в процессе заливки/копирования?

Я буквально неделю назад писал кодирующего демона на руби и решил этот вопрос для себя следующим образом: видео заливается в одну папку, а сам демон смотрит в другую. Внешняя программа неспешно заливает видео в нужную папку, а потом кладет еще один пустой файлик с таким же именем туда, куда смотрит демон. Появление пустого файла демоном рассматривается как команда начинать.
команда mv выполняется в локальных ФС мгновенно. То есть файл заливается по HTTP в временную директорию, а потом мувится в нужную папку. Ну если что, можно перед кодированием делать sleep 1s
Коллеги, нужен совет! Есть видео, которое кодируется в Final Cut и на выходе мы получаем mov (h.624). ЕСть портал с плеером, способным играть flv (h.264).

Вопрос, насколько гиморно заставить сервер понимать имеющийся контейнер?
Sign up to leave a comment.

Articles