S
 
SegmentedAVISource / SegmentedDirectShowSource
SegmentedAVISource("base-filename"[,...])
SegmentedDirectShowSource("base-filename"[,...][,fps])

Метод SegmentedAVISource автоматически загрузит до 100 AVI файлов (используя AVISource) и склеит их вместе (используя UnalignedSplice). Если d:\filename.ext используется в качестве аргумента, то будут загружены файлы d:\filename.00.ext, d:\filename.01.ext и т.д. до d:\filename.99.ext. Несуществующие файлы этой последовательности буду опущены.

 

SegmentedDirectShowSource работает аналогично.


SelectEven / SelectOdd
SelectEven(clip)
SelectOdd(clip)

SelectEven делает выходной видео-поток используя только кадры входного видео-потока с чётными номерами. SelectOdd - его нечётное дополнение.

 

Так как кадры нумеруются с нуля, SelectEven фактически выбирает первый, третий, пятый, ... кадры по человеческому соглашению счёта.


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

SeparateFields
SeparateFields(clip)

NTSC и PAL видеосигналы это последовательности полей, но все известные карты захвата видео захватывают два поля сразу и "interlace" - чередуют (или "weave" - сплетают) их в кадры. Так кадр 0 в захваченном файле содержит поля 0 и 1; кадр 1 содержит поля 2 и 3; и т.д. SeparateFields берёт основанный на кадрах клип и разделяет каждый кадр на составляющие его поля, формируя новый клип с удвоенной частотой и числом кадров. Это полезно, если вы хотите использовать Trim и тому подобные фильтры с точностью до одного поля.

 

SeparateFields использует информацию о порядке полей клипа источника для решения которое из каждой пары полей выводится первым. Если порядок неверен, используйте ComplementParity перед SeparateFields. Если результат все равно неверен, возможно стоит использовать также и AssumeFrameBased

 

Фильтр ничего не делает, если клип уже основан на полях.


Blur / Sharpen
Blur(clip,amount)
Sharpen(clip,amount)

Фильтр использует простую 3x3 размывающую или обостряющую матрицу весов пикселов. Наибольший допустимый аргумент для Blur около 1.58, который соответствует равномерному размытию 3x3 пикселя. Значение 1.0 даёт вам веса пикселов (1/4, 1/2, 1/4). Если вам требуется Гауссовское размытие большего радиуса, примените несколько копий Blur(1.0) последовательно.

 

Отрицательные значения для Blur на самом деле повышают резкость изображения, и фактически Sharpen просто псевдоним для Blur(- n). Наименьшее допустимое значение для Blur - -1.0, и наибольшее для Sharpen - 1.0


ShowFiveVersions
ShowFiveVersions(clip1,clip2,clip3,clip4,clip5)

ShowFiveVersions берёт пять видео-потоков и соединяет их в зигзагообразном порядке слева на право. Единственное применение для этого - помочь найти структуру NTSC "3:2 pulldown". Этого можно добиться используя такой код:

# Наблюдать все пять структур 3:2 pulldown сразу

DoubleWeave()
# Встаете фильтр изменения размера если надо (см. ниже)
a = Pulldown(0,2).Subtitle("0,2")
b = Pulldown(1,3).Subtitle("1,3")
c = Pulldown(2,4).Subtitle("2,4")
d = Pulldown(0,3).Subtitle("0,3")
e = Pulldown(1,4).Subtitle("1,4")
ShowFiveVersions(a,b,c,d,e)
 

Этот код показывает пять структур "3:2 pulldown" с добавленным текстом идентифицирующим каждую из них. Затем просматривая конечный фильм можно выбрать структуру не содержащую смешанных кадров. (При обычном "3:2 pulldown" должно быть две одинаково хороших. Посмотрите на диаграмму в описании для фильтра Pulldown и поймёте почему.) Если ни одна из пяти не подходит, то вы имеете дело с одной из более извращённых форм "3:2 pulldown" и вам может понадобиться использовать PeculiarBlend.

 

Кстати, если вы планируете захватывать в высоком разрешении и затем масштабировать к нужному размеру, как рекомендовалось, вы возможно должны поместить ReduceBy2 или BilinearResize или что-нибудь сразу после команды DoubleWeave в вышерасположенном коде, до DoubleWeave это сработает неверно, а если отложите на будущее, ShowFiveVersions сформирует по-настоящему большой кадр.


ShowFrameNumber
ShowFrameNumber(clip)

ShowFrameNumber отрисовывает текст на каждом кадре показывающий каким AVISynth считает его номер. Фильтр иногда полезен при написании скриптов. Если вы примените дополнительные фильтры после ShowFrameNumber, будут рассматривать текст в кадре просто как часть картинки, так что номер может быть искажён к тому времени, как вы его увидите.


ShowSMPTE
ShowSMPTE(clip,fps)

Фильтр ShowSMPTE аналогичен ShowFrameNumber, но показывает код времени SMPTE (часы:минуты:ссекунды:кадр). Аргумент fps необходим и должен быть 24, 25, 30 или 29.97.


SpatialSoften / TemporalSoften
SpatialSoften(clip,radius,luma_threshold,chroma_threshold)
TemporalSoften(clip,radius,luma_threshold,chroma_threshold)

Фильтры SpatialSoften и TemporalSoften удаляют шум из видео-клипа выборочно смешивая пиксели. Это фильтры могут творить чудеса, и весьма рекомендуется попытаться использовать их. Но они также могут стереть мелкие детали если пороги слишком высоки, поэтому не перестарайтесь. И они очень медленны, особенно с большими значениями радиуса, поэтому не включайте их до тех пор, пока всё остальное не будет готово.

 

SpatialSoften заменяет каждый пиксель в кадре средним всех соседних выборок отличающихся от центральной выборки не более чем на указанное пороговое значение. "Соседний" значит пиксель не далее чем на +/- radius в направлениях X и Y. Пороги используются как luma_threshold для Y (яркостной составляющей) выборок, и chroma_threshold для U и V (цветовой составляющей) выборок.

 

TemporalSoften аналогичен, исключая то, что он просматривает один и тот же пиксель в соседних кадрах. Используются все кадры не далее чем на +/- radius отстоящие от центрального. Этот фильтр не выглядит столь же эффективным, как SpatialSoften.

 

Рекомендуется "поиграть" с параметрами для этих фильтров, чтобы получить представление о том, что они делают - к примеру попробуйте установить одному из трёх параметров очень высокое значение, оставляя другие с низким, и смотрите что выйдет. Помните, что установка любого из параметров в 0.0 станет причиной очень медленного ничего-ни-делания.

 

В AVISynth, SpatialSoften и TemporalSoften работают только в пространстве цвета YUY2. Можно использовать ConvertToYUY2 фильтр если исходный видео-клип не в YUY2 формате.


StackHorizontal / StackVertical
StackHorizontal(clip1,clip2[,...])
StackVertical(clip1,clip2[,...])

StackHorizontal берёт два видео-клипа и показывает их вместе слева-на-право. Высоты изображений и их цветовые форматы должны совпадать. Остальная информация (звуковая дорожка, частота кадров и т.д.) в основном берётся из первого клипа. StackVertical делает тоже самое, но сверху-вниз. Например:

 

Примеры

# Сравнение кадров с и без подавления шума
StackVertical(last, last.SpatialSoften(2,3,6))

# Располагает клипы переменных a, b, c, d квадратом:
# a b
# c d
StackVertical(StackHorizontal(a,b),StackHorizontal(c,d))

Subtitle
Subtitle(clip,"text",x,y,first-frame,last-frame,"font-name",point-size[,text-color[,halo-color]])
Subtitle(clip,"text")

Фильтр Subtitle добавляет строку сглаженного текста в последовательность кадров. Если вы желаете более одно субтитра, или субтитр содержащий более одной строки, вы должны сцепить вместе несколько фильтров Subtitle. Этот фильтр очевидно неприменим для чего-то большего, чем случайное использование.

 

Цвет текста и ореола должны быть заданы как шестнадцатеричное RGB значение, как в HTML, не считая того, что начинается оно с $ вместо #. (# Используется для комментирования).

 

Альтернативная, краткая форма полезна когда вас не беспокоит, как выглядят субтитры до тех пор, пока вы их видите. К примеру, когда вы используете фильтр StackVertical, который покажет несколько вариантов кадра сразу, и желаете пометить их, чтобы помнить что есть что.

 

AVISynth использует фильтр внутри для метода Version и для вывода сообщений об ошибках. Ещё механизм субтитров используется в ShowFrameNumber.


Subtract
Subtract(clip1,clip2)

Subtract формирует выходной клип в котором каждый пиксель устанавливается в соответствии с разницей между соответствующими пикселями в clip1 и clip2. Более точно, он устанавливается (50% gray) + (clip1 pixel) - (clip2 pixel). Вы можете использовать Levels после, если желаете повысить контраст. К примеру:

# Сделать разницу между clip1 и clip2 явно очевидной Subtract(clip1,clip2).Levels(127,1,129,0,255)
 

Если хотите в деталях увидеть разнице между смежными кадрами, можете использовать код:

Subtract(clip.Trim(1,0),clip)

SwapFields
SwapFields(clip)

Фильтр SwapFields меняет местами строку 0 со строкой 1, строку 2 со строкой 3 и т.д., что эффективно меняет местами два поля в чересстрочном кадре. Тоже самое делает SeparateFields.ComplementParity.Weave (и именно так фильтр реализован).


R
[R]
команды компактно
[команды компактно]
команды развёрнуто
[команды развёрнуто]
T
[T]