20 ноября 2016      451      0

FFmpeg: добавляем изображение поверх видео

В одном из проектов возникла вроде бы простая задача, которая тем не менее отняла почти половину рабочего дня. Необходимо добавить к видеоролику оверлей — статическую картинку поверх видеоряда. Часто встречающийся пример такого рода — разнообразные призывы кликнуть на что-нибудь под видео в роликах на популярных видеохостингах: «Кликните на ссылке в описании и да будет вам счастье».

Волшебная команда для ffmpeg’а была нагуглена, кажется, с первой попытки:

ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]" outputvideo.flv

Только FFmpeg был, видимо, не рад такому быстрому и дерзкому ходу, и поспешил с ответным выпадом

Unrecognized option 'vf'

После непродолжительного чесания тыковки и осознания того, что команда была скопирована буковка в буковку, наступило горестное понимание того, что гуглить сегодня придется много. Ищем упоминание текста ошибки и находим, что была вроде еще опция -vfilter, однако, и она не срабатывает. Другое найденное решение вызывало большее доверие: обновить ffmpeg до последней версии. Ну надо, так надо. Pаголовк страницы head php.

Имеющийся на сервере ffmpeg числился под номером 0.6.5.1, а на сайте ffmpeg.org уже фигурировали  цифры > 1.0 …

yum install ffmpeg

Юм сказал, что установлена последняя доступная версия. Обновлений нет. Гуглим «ffmpeg centos» и получаем совет добавить в списки репозиториев некий Dag. Добавляем, обновляем список пакетов, жмакаем инсталл — и получаем то же самое. Любые поиски пакета старше, чем 0.6.5 для Centos 5.8 заканчиваются ничем… Остается ставить или static build, или компилять из исходников.

Первый вариант отпал быстро — официальный сайт ffmpeg’a предлагает на выбор два статик билда, один из которых требует ядро 2.6.26, а другой 3 с чем-то, на чем оба и погорели, потому как в наличии только 2.6.18.

Остался последний и самый нелюбимый вариант — собирать самому. Грузим с сайта последний снэпшот и применяя небольшую уличную магию ставим ffmpeg.

yum install faac-devel.x86_64 freetype-devel.x86_64 x264-devel.x86_64
./configure --enable-gpl --enable-nonfree --enable-libx264 --enable-libfaac --enable-libfreetype
make
make install

Как итог имеем ffmpeg версии «N-45350-g62722ae», который молча съедает опцию «-vf» и выполняет ровно то, что нужно.

Все темы на сайте

© 2017 BorPost · Копирование материалов сайта без разрешения запрещено