Методы для монтажа |
|
Trim
Trim(clip,first-frame,last-frame)
|
Trim вырезает часть видео-клипа включающую только кадры
с first-frame до last-frame. Звук также вырезается и остаётся
синхронизированным. Передача 0 для last-frame означает "конец клипа". К примеру:
|
Trim(100,0) # удалить первые 100 кадров
|
|
|
AlignedSplice / UnalignedSplice
AlignedSplice(clip1,clip2[,...])
UnalignedSplice(clip1,clip2[,...])
|
AlignedSplice и UnalignedSplice соединяют два или
более видео-клипов непрерывно. Различие между фильтрами лежит в том, как они
обращаются со звуковыми дорожками. UnalignedSplice просто
соединяет их без внимания к синхронизации с видео. AlignedSplice
обрезает первую звуковую дорожку или вставляет тишину, смотря что требуется для
гарантии сохранения синхронизации с видео второй звуковой дорожки.
|
|
Вы должны использовать UnalignedSplice когда объединяемые
фонограммы были исходно непрерывны - к примеру, когда вы объединяете файлы
захваченные в AVI_IO. Небольшие ошибки отсчётов времени могут
вести к щелчкам в звуке если вы примните AlignedSplice в такой
ситуации.
|
|
Скриптовый язык AVISynth предоставляет + и
++ как синонимы для UnalignedSplice и
AlignedSplice соответственно
|
|
Пример 1: |
# Объединить сегментированный файл захвата для формирования цельного клипа
UnalignedSplice(AVISource("capture1.avi"), AVISource("capture2.avi"), AVISource("capture3.avi"))
# или: AVISource("capture1.avi") + AVISource("capture2.avi") + AVISource("capture3.avi")
|
|
Пример 2: |
# Извлечь три сцены из клипа и объединить их вместе в новом порядке
AVISource("video.avi")
edited_video = Trim(2000,2500) ++ Trim(3000,3500) ++ Trim(1000,1500)
|
|
|
Dissolve
Dissolve(clip1,clip2[,...],overlap)
|
Dissolve похож на AlignedSplice исключая то, что
клипы объединяются с перекрытием. Последние overlap кадров первого
видео-потока смешиваются последовательно с первыми overlap кадрами второго
видео-потока так, что потоки постепенно перетекают один в другой. Аудио-потоки
смешиваются также.
|
|
Термин "dissolve (растворение)" временами используется для различных
эффектов в которых переход скорее поточечный, чем градиентный. Фильтр этого не
делает.
|
|
|
Reverse
Reverse(clip)
|
Фильтр делает клип играющий в обратном направлении. Это применимо для
наблюдения идущих задом наперед людей, во время
прослушивания скрытых
сатанинских посланий.
|
|
|
FadeOut / FadeOut2
FadeOut(clip,number-of-frames)
FadeOut2(clip,number-of-frames)
|
FadeOut и FadeOut2 делают видео-поток линейно
затухающим в чёрный. Звуковая дорожка (если есть) также линейно заглушается в
тишину. Эффект затухания действует только последние number-of-frames
кадров видео. Последний кадр видео становиться практически-но-ещё-не-совсем
чёрным. Дополнительно совершенно чёрный кадр добавляется в конец, увеличивая
таким образом общее число кадров на один.
|
|
FadeOut2 работает также, не считая добавления двух чёрных
кадров вместо одного. Единственная цель этого - обойти ошибку в Window
Media Player. Все проверенные версии WMP не
воспроизводят последний кадр MPEG файла - вместо этого они
останавливаются на предпоследнем кадре когда
воспроизведение завершается. Это
оставляет показанным на экране неприглядный практически-но-ещё-не-совсем чёрный
кадр по завершении фильма, если вы используете FadeOut .
FadeOut2 избегает эту проблему.
|
|
FadeOut(n,clip) просто псевдоним для
Dissolve(clip,Blackness(n+1,clip),n) (или n+2 вместо n+1 для
FadeOut ). Нет подобного фильтра FadeIn , но можно
получить тот-же эффект обращением аргументов Dissolve :
Dissolve(Blackness(n+1,clip),clip,n) .
|
|
|
SelectEven / SelectOdd
SelectEven(clip)
SelectOdd(clip)
|
SelectEven делает выходной видео-поток используя только кадры
входного видео-потока с чётными номерами. SelectOdd - его
нечётное дополнение.
|
|
Так как кадры нумеруются с нуля, SelectEven фактически выбирает
первый, третий, пятый, ... кадры по человеческому соглашению счёта.
|
|
|
Pulldown
Pulldown(clip,a,b)
|
Фильтр Pulldown просто выбирает два из каждых пяти кадров
видеоисточника. Частота кадров уменьшается к
двум третьим своего исходного значения. К примеру, Pulldown 0, 2 выберет кадры 0,2,5,7,10,12
и т.д.
|
|
Разработан для использования после DoubleWeave , и его цель -
восстановление исходной частоты кадров фильма который был
конвертирован в
видео с применением процесса "3:2 pulldown".
|
|
Причина, по которой необходимо в начале использовать DoubleWeave
в том, что карты захвата соединяют поля неверным образом. В терминах полей,
последовательность 3:2 pulldown просто "A A B B B C C D D D ...", где
символы с "A" по "D" представляют исходные кадры фильма. Но карты захвата
соединяют поля в кадры без соблюдения структуры "3:2 pulldown", и в результате
получается вот что:
|
A B C D D (30fps)
A B B C D
|
В такой структуре кадр "C" никогда сам не возникает. После
DoubleWeave каждая пара полей приобретает её собственный
кадр, так что видео поток начинается так:
|
A A B B C C D D D (60fps)
A B B B B C C D D
* * * *
|
|
Теперь каждый кадр фильма имеет как минимум один свой кадр видео. В этом
месте фильтр Pulldown с аргументами 0, 3 выберет кадры
отмеченные "*" и вы получите
|
A B C D (24fps)
A B C D
|
|
... то, что вам действительно нужно.
|
|
Очень сложно объяснить, но восстановление после "3:2 pulldown" это
просто вопрос вставки шаблонного кода. Посмотрите приме для
ShowFiveVersions .
|
|
Pulldown(a,b) внутренне реализован как
SelectEvery(5,a,b).AssumeFrameBased .
|
|
|
Interleave
Interleave(clip,clip[,...])
|
Interleave чередует кадры из нескольких клипов по принципу
кадр-за-кадром, так, к примеру, если вы дадите три аргумента, первые три
кадры видеовыхода будут первыми кадрами трёх клипов источников, следующие три -
вторыми кадрами видеоисточников и т.д..
|
|
|
SelectEvery
SelectEvery(clip,step-size[,offset1[,offset2[,...]]])
|
SelectEvery это обобщение таких фильтров, как
SelectEven и Pulldown . Проще всего
описать фильтр на примере:
|
SelectEvery(clip,2,0) # идентично SelectEven(clip)
SelectEvery(clip,2,1) # идентично SelectOdd(clip)
SelectEvery(clip,10,3,6,7) # выбрать кадры 3,6,7,13,16,17,23,26,27... из клипа источника
SelectEvery(clip,9) # выбрать кадры 0,9,18,27,... (второй аргумент предполагается равным 0)
|
|
Или вот так
|
# Взять прогрессивный клип 24FPS и применить "3:2 pulldown"
# получая на выходе чересстрочный клип 30FPS
AssumeFrameBased
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
|
|
|
|