Встраивание картинки в видеоряд

Fludimir

Новичок
Встраивание картинки в видеоряд

Недавно увидел вот эту штуку http://hero2012.org/?action=upload (особо за такими вещами не слежу, появилось оно явно гораздо раньше чем недавно) , и захотелось и самому что-то подобное сделать =) Не настолько сложное, с видеорядом гораздо попроще, но тем не менее вопросов и сложностей тут много. Исходные данные точно такие же - есть какой-то подготовленный видеоряд и есть загружаемая пользователем картинка, которую надо аккуратно наложить на такой видеоряд, и сконвертировать ролик. В общем все как и в герое 2012, только видео покороче и с одним небольшим эпизодом где фигурирует картинка, ну и врядли за скачку ролика будет требоваться денежка =)
Определенные идеи как это делать есть - подготовить видео, для каждого кадра где фигурирует фото сохранить координаты и другие параметры для наложения картинки на видеокадр, и чем-то (пока на ум приходят только Mplayer/Mencoder с фильтром bmovl) накладывать свою картинку на видеоряд, предварительно исказив её по определенным параметрам, но это все явно непросто, да и мне на практике подобного делать не приходилось. Так что пока я уверен только в том что такой фотореалистичности как в герое2012 мне подобным образом достичь точно не удастся - там и фото затеняется, и стекло над ним блестит и тп, если бы не видел это своими глазами не поверил бы что так "просто" это возможно все автоматически сделать.
Или может я просто отстал от жизни, и существуют различные утилиты которые хорошо справляются с подобными вещами?
Было бы интересно и просто услышать советы как бы кто попробовал решить такую задачку.
Повторюсь что интересует меня это именно в контексте автоматического веб-сервиса, а не "сделать все руками в премьере"

-~{}~ 25.05.10 21:31:

Что-то никто особо с советами не спешит :)

Упростим задачу - есть картинка , на которой есть "место под фото", скриптом надо наложить фото на эту картинку, и сохранить изображение. О фотореалистичности конечно речь не идет, но нужто прямоугольную картинку более менее аккуратно вписать в её место на общей картине, определенным образом исказив ну и возможно немного затенив. С помощью чего можно это сделать?

Общий процесс выглядит так - разрезаю ролик на кусочки ролик - участок_для_фото - ролик , ту часть где фото - раскладываю покадрово на отдельные изображения, пхп скрипт должен изображения обработать и нарисовать на них фото, после чего создаю видео из отдельных фото, склеиваю видеофрагменты и муксирую вместе со звуком в итоговый видеофайл. Все это без проблем автоматизируется, если кому будет интересно позже напишу чем и как, а самым сложным и интересным остается обработка изображений раскадровки
 

baev

‹°°¬•
Команда форума
Упростим задачу - есть картинка , на которой есть "место под фото", скриптом надо наложить фото на эту картинку, и сохранить изображение.
— и в чём проблема?
Чем задача отличается от банального наложения «водяных знаков» на картинки средствами php, например?
 

Adelf

Administrator
Команда форума
Fludimir
ой да брось, найти на картинке участок определенного размера определенного цвета - интересная задача?

Меня больше интересует как ты собрался раскадрировать, обрабатывать, а потом собирать со звуком, да еще и предоставляя это как сервис :) надеюсь больше одного человека в минуту это использовать не будут :)
 

mity

Новичок
Обратите внимание на ffmpeg-php.
Но лучше это делать не из php, а сторонними программами. Которые будут работать в фоновом режиме, т.к. такая обработка будет занимать значительное время и значительные ресурсы, в том числе и оперативную память.

Определитесь с платформой (Windows/Linux/BSD) на которой вы собираетесь это реализовывать и ищите варианты реализации.

К PHP и WEB Ваша текущая задача имеет очень косвенное отношение.
 

Fludimir

Новичок
baev

http://ipicture.ru/upload/100526/Fg5K2X645s.jpg - "фото пользователя"
http://ipicture.ru/upload/100526/xv7U8OJWK4.jpg - кадр оригинального видео
http://ipicture.ru/upload/100526/JMTxR4465z.jpg - желаемый результат
Первые два есть, нужно получить третье. Как? :) Естественно подразумевается что один раз для каждого кадра необходимо будет вручную найти координаты куда вписывать изображение, как его постобработать, но вот чем это все можно будет сделать?


Adelf
Ну как такую задачу решить средствами пхп я пожалуй даже и не знаю :)

С раскадровкой - как бы ничего сложного. Ну если на текущий момент и под виндой, имеем - полную аудиодорожку, два куска видеопотока и набор картинок, представляющих собой раскадровку сцены где появляется наше фото. Для работы с видео я привык использовать Mplayer/Mencoder , также можно использовать ffmpeg, кому чего ближе. Разрезать видео на кусочки/дорожки/кадры можно как теми же мплеером/менкодером или ффмпег, так и каким либо видеоредактором, ну и естественно все кусочки должны быть закодированы с одинаковыми параметрами.
Код:
// создаем видеоряд из картинок
$command = 'mencoder mf://*.jpg -fps 25 -ovc x264 -vf scale=352:288 -o encoded.264 -of rawvideo 2>&1';
system($command);
//обьединяем
$command = 'copy /b part1.264 + encoded.264 + part2.264 video.264';
system($command);
//муксим с аудиодорожкой
$command = 'mencoder video.264 -audiofile audio.mp3 -oac copy -ovc copy -fps 25 -ofps 25  2>&1';
system($command);
Ничего особо сложного или проблемного, а выполняется это все в течении пары секунд. При необходимости запусткать скрипт можно и в фоне, это уже другой вопрос


mity
Насколько я помню все что умеет ffmpeg-php - вытаскивать отдельные кадры из видео и информацию о файле, и больше ничего.
А к вебу моя задача имеет то отношение, что планируется именно как автоматический веб-сервис для пользователей, ибо очень немногие умеют сами смонтировать себе подобное видео. Платформа - работать будет на сервере под линухом, но пока не вижу никаких причин чтобы не работало под виндой, то что я написал выше будет прекрасно работать везде
 

mity

Новичок
Лучше постараться избегать раскадровки на кучу картинок, а затем склейки в единый файл. Лишняя запись/считывания с диска совершенно не к чему.
В идеале всё должно проходить в памяти:
Разжатие очередного кадра, вставка изображение, сжатие кадра в видео поток.

Но если Вы не предполагаете интенсивную работу этой системы или Вы считаете что пониженная загрузка сервера не окупит затрат на разработку нормальной системы, то тогда вперёд. Подумайте насчёт ram диска.

Видео эффекты я бы делал посредством OpenGL.

А четырёх-граную рамку лучше заставит обводить пользователя, например посредством JS.
 

mity

Новичок
dr-sm, нужно использовать готовые библиотеки, а не изобретать велосипед.
 

Fludimir

Новичок
Ликбез мне вроде и не нужен, делать матричные преобразования вручную уж тем более не буду, ну а за имаджик спасибо, значит буду с ним разбираться, раньше им не пользовался. Я так понимаю ничего более удобного и продвинутого, с возможностью работать из командной строки под линух нет?
 

Fludimir

Новичок
Не знал что GIMP умеет так же работать из командной строки :) Ладно, имаджик пока как-то ближе, буду разбираться с ним. Никто не посоветует как его лучше использовать - просто запуском из командной строки в пхп скрипте, или чем-то из того что представлено для пхп на офсате - два расширения и класс-обертка? Не хочется взять что-то наобум, разбираться и после обнаружить какие нибудь неприятные ограничения
 

baev

‹°°¬•
Команда форума
Fludimir, что Вы своими смайликами сказать хотите?
 

Fludimir

Новичок
Хм.. на смайлике нарисована улыбка, представьте что при разговоре с вами сказав эту фразу я улыбнулся, и все :) Просто привык так писать, сарказма смайлик не означал :)
 

dimagolov

Новичок
Fludimir, тогда непонятно чего вы еще хотите, когда Вам уже дали инструмент, который Вы искали и разжевали все про него продробно:
Я так понимаю ничего более удобного и продвинутого, с возможностью работать из командной строки под линух нет?
 

baev

‹°°¬•
Команда форума
С ним тоже можно работать исключительно из консоли?
— нет. Не «исключительно из консоли». И не «тоже».

Но для использования функционала и GIMP'а и GAP'а достаточно консоли.


представьте что при разговоре с вами сказав эту фразу я улыбнулся, и все
Ну, моя реакция была бы однозначной: «[самоцензурировано. тут были мат и оскорбления]».
Но, поскольку мы в виртуальной реальности, где все — «белые и пушистые», считайте, что я просто поинтересовался: «Всегда ли, когда Вы понимаете, что говорите глупости, у Вас скулы судорогой сводит и углы губ приподнимаются»?
 

Fludimir

Новичок
dimagolov
Я просто переспросил не посоветует ли кто-то еще чего, и разговор зашел о GAP и смайликах :)

А вообще мой конкретный вопрос висит выше, конкретно к тем кто использовал сей инструмент:
Ладно, имаджик пока как-то ближе, буду разбираться с ним. Никто не посоветует как его лучше использовать - просто запуском из командной строки в пхп скрипте, или чем-то из того что представлено для пхп на офсате - два расширения и класс-обертка? Не хочется взять что-то наобум, разбираться и после обнаружить какие нибудь неприятные ограничения
-~{}~ 26.05.10 22:01:

baev
— нет. Не «исключительно из консоли». И не «тоже».

Но для использования функционала и GIMP'а и GAP'а достаточно консоли.
Я задал вопрос по поводу консольной утилиты для работы с графикой, вы назвали GIMP. Я удивился. Погуглил, увидел примеры использования гимпа из консоли, удивился и впечатлился еще более, просто не подозревал что у него есть подобная функциональность. После вы назвали еще и GAP, судя по всему подразумевая что его тоже можно использовать из консоли - опять мой черед удивляться. Приятно удивляться, и не более. Ну а если вы мою реакцию считаете глупой - простите уж. [здесь должен был быть смайлик с улыбкой]
 
Сверху