Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 12 ноября 2013 г.

Как наложить на видео слайды с помощью AviSynth

Сегодня выступал в НАУ с докладом для студентов. Был приятно удивлен встрече с Антоном. Антон так же готовил свой доклад для студентов. Его доклад полезен будет не только для студентов НАУ, а вообще. Потому я его снял на камеру и сегодня же вечерком аккуратненько смонтировал.

Монтировал необычным для себя путем. Способ мне понравился, а потому опишу его туточки. Видео, уверен, Антон выложит на youtube (будет чуть позже). А пока главный ответ на вопрос - как наложить на видяшку, серию слайдов из презентации, причем чтобы те переключались вовремя. Очень просто.

# грузим в переменную v два подряд идущих видеофайла DSC_0877.MOV и DSC_0878.MOV (они склеятся) 
v = DirectShowSource("DSC_0877.MOV")+DirectShowSource("DSC_0878.MOV") 

# ресайзим видео до размера слайдов, сразу после добавляем сверху от 
# видео бордер такой же высоты как и видео. 
# Там пока все черненько будет - мы расположим там слайды
# результат запишем в ту же переменную v 
v = v.LanczosResize(960,540).AddBorders(0, 540, 0, 0, $000000)

# загрузим первый слайд в переменную slide1 сделав из него видеоряд с частотой 23.976 (та же что и у видео) и длинной 1389 кадров
i=ImageSource("Slide1.png", fps=23.976, end=1389)

# так же для второго слайда
i = i + ImageSource("Slide2.png", fps=23.976, end=8181)

i = i + ImageSource("Slide3.png", fps=23.976, end=5863)

i = i + ImageSource("Slide4.png", fps=23.976, end=9130)

i = i + ImageSource("Slide5.png", fps=23.976, end=7726)

i = i + ImageSource("Slide6.png", fps=23.976, end=4545)

i = i + ImageSource("Slide7.png", fps=23.976, end=673)

# и в конце концов смерджим два потока
Overlay(v, i, mode="blend", opacity=1)

Вау?! И что это за заклинание такое? Это скрипт AviSynth. Не так давно я показывал, как с ее помощью открыть любой файл в VirtualDub. На самом деле тула намного более мощная.

Вот как выглядела папочка с исходниками


 А так выглядел avs скрипт загруженный в VirtualDub (и Антон :) )


Дальше дело техники - выставить аудио/видео кодек и сохранить как avi. Положение кадров я определял задра просматривая видеоролик в поисках характерных кликов Антоном своего презентора. Лучше, конечно, снимать как-то так, чтобы был виден хоть краюшек проектора. 


Кстати, можно было с легкостью сделать как-то так (это фича фильтра Overlay)



Еще раз повторюсь AviSynth очень мощная тулза, позволяющая кстати автоматизировать много чё. Этот вопрос более чем реализовал Стас Фомин в своем SeminarAssembler. Кстати там это все делается уже, я в целях изучения просто еще одно колесо изобрел.  

Успехов!

Спасибо Антону, Стасу, НАУ, AviSynth, VirtualDub, Nikon, Google, HP и всем тем ребятам, с помощью которых этот пост случился.

1 комментарий: