Jun. 17th, 2010
Давно хотел простой способ попиксельно работать с видео, теперь вот, когда очередной раз понадобилось, наконец организовал себе таковой. Сохраняю в текстовом редакторе скрипт, переоткрываю файл в VirtualDub и сразу вижу результат. Для этого потребовалось написать один маленький плагин для AviSynth, который берет в качестве параметра имя файла с исходником на Leo, при загрузке вызывает мой компилятор, тот выдает байткод, который плагин исполняет с помощью LeoVM при обработке каждого кадра. Ависинтовский скрипт выглядит так:
LoadPlugin("leovid.dll")
AviSource("source.avi").ConvertToRGB32().RunLeo("fire.leo")
Его-то я и открываю в VirtualDub'e.
В качестве теста вспомнил детство, когда мы во времена DOS'a и VGA мониторов дергали прерывание 10h для перехода в режим 13h (320x200, 256 цветов) и рисовали там всякие штуки, например, огонь. Помнится, на первом курсе мы соревновались у кого короче получится реализация - рисующая огонь программа занимала около сотни байт. Сейчас модифицировал его алгоритм, чтобы картинка исходного видео задавала вероятности и интенсивности появления источников огня, получился довольно симпатичный эффект:
( Видео )
В оригинале видео более зернистое, ютюб его размазал. Исходник эффекта.
LoadPlugin("leovid.dll")
AviSource("source.avi").ConvertToRGB32().RunLeo("fire.leo")
Его-то я и открываю в VirtualDub'e.
В качестве теста вспомнил детство, когда мы во времена DOS'a и VGA мониторов дергали прерывание 10h для перехода в режим 13h (320x200, 256 цветов) и рисовали там всякие штуки, например, огонь. Помнится, на первом курсе мы соревновались у кого короче получится реализация - рисующая огонь программа занимала около сотни байт. Сейчас модифицировал его алгоритм, чтобы картинка исходного видео задавала вероятности и интенсивности появления источников огня, получился довольно симпатичный эффект:
( Видео )
В оригинале видео более зернистое, ютюб его размазал. Исходник эффекта.