Сегодня решил написать о том, как добавить свой логотип в видео файл, который кодируется с помощью mencoder. В принципе ничего сложно в этом нет, а иногда уж очень нужно наложить изображение на конвертируемое видео. Мне это нужно было для Видео Хостинга на движке Clipshare, что и было реализовано, способом указанным далее. А затем редактированием файла convert.php (файл движка ClipShare отвечающий за конвертацию видео) — строки 23 и 25, в версии 4.1.5.
Надеюсь моя статья Вам поможет.
Итак, начнём…
Во-первых, убедитесь, что в текущей директории нет файла logo.fifo
1 2 3 |
rm logo.fifo |
Теперь создадим FIFO (именованный канал)
1 2 3 |
mkfifo logo.fifo |
А сейчас создайте файл растровой графики логотипа с альфа-каналом (для прозрачного фона) с помощью любой графической программы, например такой как GIMPG. Сохраните его как logo.png, и преобразуйте в logo.rgba
1 2 3 |
convert logo.png logo.rgba |
Теперь выполните команду для нашего FIFO файла, в которой нужно указать, что наш логотип в ширину 200, в высоту 80, и позиция у него будет 0,25. Естественно Вам нужно заменить ширину и высоту на свою.
1 2 3 |
( echo "RGBA32 200 80 0 25 0 1" ; cat logo.rgba )> logo.fifo & |
или, например, если ваш логотип 170х60, с позицией 5,180
1 2 3 |
( echo "RGBA32 170 60 5 180 0 1" ; cat logo.rgba ) > logo.fifo & |
Ну а теперь нам остаётся лишь перекодировать видео при помощи Менкодера (mencoder)
1 2 3 |
mencoder -oac copy -vf bmovl=0:0:logo.fifo -ovc raw -o video.avi video1.avi |
Таким не хитрым образом файл video1.avi уже будет с вашим логотипом.
Как я и говорил — ничего сложного, стоит только помнить, что наложение логотипа (или в обще любого изображения) на видео — это достаточно трудоёмкая операция, которая занимает время и ресурсы системы.
Спасибо немного помогло, но сейчас столкнулся с проблемой наложния нескольких фильтров, а именнно помымо логотипа хочу еще и провести масштабирование
mencoder video.avi -o vid3.flv -oac mp3lame -ovc lavc -vf scale=360:152,bmovl=0:0:logo.
тут если я правильно понял, сначала производится масштабирование, а потом наложения логотипа, но проблема в том что логотип «рвет», тоесть он совсем не такой как бы я того хотел. Если налаживать логотип перед масштабированием то он естественно тоже масштабируется, что тоже не есть хорошо. может встречались с подобной проблемой?
Ну, как вариант могу Вам предложить сделать это в два шага: сначала масштабирование, а затем наложить логотип…
while using this command on php,i am getting nothing.how to execute this command in php.
(Echo «RGBA32 200 80 0 25 0 1»; cat logo.rgba)> logo.fifo &
It’s for linux terminal. Sorry, i did’t know php
Это вы все сейчас для кого всё это писали? Себя порадовать. Думаю надо пойти на другой ресурс чтобы узнать что тако logo, fifo да ещё всё прочее что касается этого вопроса.
Блин запарили с перепечатками… не работает это к сожалению… во первых вы перепутали -о тут указывается куда выдавать поток, а не откуда брать как вы подумали…
И вот ошибка на выход…
Exiting…
[1] Broken pipe (echo €RGBA32 200 80 0 25 0 1; cat logo.rgba)