Avisynth что это за программа


Знакомство с AviSynth / Хабрахабр

В этой статье будет рассказано о том, что такое AviSynth и его применение в походных условиях, не без помощи VirtualDub, конечно.

AviSynth это нелинейный видео-редактор, контролируемый скриптовым языком или, перефразируя, скриптовый язык для обработки видео. AviSynth выступает в качестве промежуточного звена между приложением и физическим файлом, позволяя «на лету» выполнять различные преобразования. Текстовый файл (AVS скрипт), в котором содержатся различные команды, множество программ может открывать как обычный видео-файл (VirtualDub, Adobe Premiere, Windows Media Player, Media Player Classic, e t.c.). Технически, AviSynth выступает в роли VFW (Video For Windows) кодека для текстового файла. AviSynth поддерживает различные плагины, которых существует громандная куча. (кроме своих ещё и от VirtualDub). Качать здесь.

Что это нам может дать?
  1. Расширение функциональности программ для обработки и воспроизведения видео. Например, добавление поддержки ранее не поддерживаемых видео (и аудио, кстати) форматов. Применение различных эффектов и фильтров;
  2. Автоматизация процесса обработки видео. AviSynth скрипты, при помощи какого-нибудь другого скриптового языка, можно генерировать на лету;
  3. Упрощение и ускорение небольших операций по обработке видео. Вместо ползаний по графическим меню, зачастую, бывает удобнее и быстрее вбить пару-тройку небольших команд в текстовый файл. Помимо этого, в дальнейшем, этот текстовый файл можно использовать для других источников, просто заменив имя исходного файла. Можно создать коллекцию шаблонов на часто выполняемые операции.
Что такое VirtualDub?

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

Пример 1. Пережатие видео для слабых компьютеров.

Практически всё новое видео сейчас выходит в HD, но существует много пользователей, мощности компьютеров которых не позволяют насладиться просмотром. Программным решением данной ситуации будет сжать видео с меньшим разрешением. Для этого существует целый спектр программ, но в большинстве своём, они либо неудобны, перегружены ненужным функционалом, либо удобны, но не поддерживают желаемые форматы файлов, либо стоят денег. При помощи AviSynth и VirtualDub мы научимся обрабатывать любой тип файла, для которого установлен DirectShow кодек (проще говоря, который в состоянии воспроизвести ваш Windows Media Player).

В качестве объекта для экспериментов возьмём Ghost in the Shell, уменьшим его размер и сделаем хардсаб (внедрим субтитры в видеоряд).

Кадр из исходного видео:

Укажем AviSynth, что нам требуется открыть файл при помощи DirectShow фильтра. При помощи этих же фильтров их открывает WMP. Откройте блокнот и напишите:

DirectShowSource("путь_к_файлу")

У меня получилось:

DirectShowSource("e:\Ghost In The Shell Movie 1.mkv")

Сохраните файл с расширением avs и попробуйте открыть в VirtualDub. Хотя он в стандартной поставке не поддерживает mkv – файл откроется. VirtualDub определит содержимое как несжатое видео. Хорошо, закройте VirtualDub, откройте скрипт и допишите следующую строку:

Lanczos4Resize(новая_ширина, новая_высота)

Этой командой AviSynth поменяет размер исходного видео. Существует несколько различных способов изменить размер, одни быстрее, другие медленнее. Вы можете ознакомиться с ними в документации (есть и на русском, кстати).

В итоге у меня получился скрипт:

DirectShowSource("e:\Ghost In The Shell Movie 1.mkv") Lanczos4Resize(800,430)

Сохраните его и откройте в VirtualDub. Вы увидите, что картинка поменяла размер, у меня она стала вот такой:

Осталось сделать хардсаб. Для этого воспользуемся командой:

TextSub(“путь_к_субтитрам”)

В результате у меня получился скрипт:

DirectShowSource("e:\Ghost In The Shell Movie 1.mkv") Lanczos4Resize(800,430) TextSub("e:\Ghost In The Shell Movie 1.SRT")

и вот такая вот картинка:

Всё, можно сжимать, например XviD с небольшим битрейтом и смотреть. Однако, полученный файл не стоит распространять, мы же делали его исключительно для личного просмотра. :)

Пример 2.

Следующая задача, которая встречается довольно часто, склеивание видео файлов, которые имеют разный битрейт, разное разрешение, разные форматы и даже, возможно, разную частоту кадров. При помощи AviSynth это делается настолько легко, что даже немного обидно.

Итак, у нас есть следующие пациенты:

  1. Ghost in the Shell – h364, 1280x688, 23.98fps, MKV

  2. Teenage Mutant Ninja Turtles – XVID, 512x384, 23.98fps, AVI

  3. От Винта — DivX 5, 720x528, 25.00fps, AVI

В реальной жизни такой зоопарк соединять не приходится, но я хочу подчеркнуть возможности AviSynth.

Откроем блокнот и запишем следующее:

video1 = DirectShowSource("D:\Video\Games\От Винта\Ot Vinta. 001.avi") video2 = DirectShowSource("E:\Ghost In The Shell Movie 1.mkv") video3 = DirectShowSource("D:\Video\Teenage Mutant Ninja Turtles\1x01.avi")

return video1 + video2 + video3

Этими командами мы создали три переменных типа видео, соединили в один длинный кусок и вернули его для воспроизведения. Если попытаться запустить скрипт сейчас, то появится сообщение об ошибке, потому что параметры у файлов разные. Для начала приведём их к одинаковому разрешению (я буду приводить к 720x480), чтобы не поломать аспект добавим чёрных полосок (letterbox), приведём fps к 25 и приведём sample rate звука к одной величине (44100).

video1 = DirectShowSource("D:\Video\Games\От Винта\Ot Vinta. 001.avi") video2 = DirectShowSource("E:\Ghost In The Shell Movie 1.mkv") video3 = DirectShowSource("D:\Video\Teenage Mutant Ninja Turtles\1x01.avi")

video1 = video1.Trim(100,200) video1 = video1.Lanczos4Resize(652,480) video1 = video1.AddBorders(34, 0, 34, 0) video1 = video1.ResampleAudio(44100)

video2 = video2.Trim(200,300) video2 = video2.Lanczos4Resize(720, 388) video2 = video2.AddBorders(0, 46, 0, 46) video2 = video2.ConvertFPS(25) video2 = video2.ResampleAudio(44100)

video3 = video3.Trim(400,500) video3 = video3.Lanczos4Resize(640,480) video3 = video3.AddBorders(40, 0, 40, 0) video3 = video3.ConvertFPS(25) video3 = video3.ResampleAudio(44100)

return video1 + video2 + video3

Командой Trim я оставил от каждого файла сотню кадров. Просто так. :)

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

Результаты его исполнения:

Отдельное спасибо пользователю drunk без инвайта которого эта публикация не произошла бы.

habrahabr.ru

Добро пожаловать - Avisynth wiki

Загрузить | AviSynth FAQ | Внутренние фильтры | Внешние фильтры | Doom9 форум | Страница проекта | Обратная связь

Внимание: данная страница и сайт в целом переведены на русский язык далеко не полностью (то есть вообще не переведены). Имеющаяся команда переводчиков сосредоточила имеющиеся силы на переводе офф-лайновой документации, распространяющейся с дистрибутивом AviSynth (смотри сайт www.avisynth.org.ru).

Однако вы можете переводить и дополнять статьи Wiki данного сайта самостоятельно (используя переведенные части офф-лайновой документации для единства стиля и терминов), добавляя к английским именам страниц окончание /ru (или создать страницы с русским именем - можно и то и другое с перенаправлением).

Что такое AviSynth?

AviSynth - это мощное средство для пост-обработки видео. Он предоставляет методы для редактирования и обработки видео файлов. AviSynth работает как фрэймсервер, обеспечивая мгновенное редактирование без необходимости временных файлов.

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

Заинтересовались? На этом сайте вы можете узнать больше об AviSynth, изучить официальное руководство по AviSynth, и просмотреть часто задаваемые вопросы и ответы. Или вы можете перейти прямо на страницу загрузки на SourceForge. AviSynth - свободно распространяемая программа с открытым кодом.

Использование

Что нового в AviSynth - Начните с малого!

Фильтры, внешние плагины, скриптовые функции и утилиты

Синтаксис AviSynth-скрипта

  • Синтаксис - Официальная документация.
  • Руководство по скриптам - Выход за пределы базовых приемов написания скриптов.
    • Полное руководство по грамматике - Полное руководство по использованию AviSynth.
    • Модель выполнения скриптов - The steps behind the scenes from the script to the final video clip output. The filter graph. Scope and lifetime of variables. Evaluation of runtime scripts.
    • Функции пользователя - Как эффективно создавать пользовательские скриптовые функции; как избегать общих ошибок; способы организации ваших функций в коллекции, создание библиотек функций и многое другое.
    • Блоковые конструкции - Технические идиомы для создания блоков AviSynth-скриптов.
    • Массивы - Использование массивов (и соответствующих операторов) для управления наборами данных в один шаг.
    • Выполнение скриптов - Как раскрыть все возможности runtime фильтров и создавать комплексные скрипты, которые реализуют интересные (и эффективные по быстродействию) эффекты и операции.

FAQ, Руководства и дополнительные материалы

  • AviSynth FAQ - Ответы на часто задаваемые вопросы.
  • Пропорции клипов - Введение в соотношение сторон клипов (DAR, PAR, SAR), как правильно изменять размер исходных клипов.
  • Руководства - Советы по конкретным типам конвертирования и общие задачи.
  • Дополнительные советы - Рассказывают о таких вещах как ошибка Chroma Upsampling, преобразование цветов, гибридное видео, компенсация движения и т.д.

Разработка

Wiki

Добро пожаловать на MediaWiki. Не стесняйтесь в наполнении данного сайта! Нам нужна Ваша помощь в наполнении данного Wiki-сайта. Ознакомьтесь с руководством пользователя по редактированию данного сайта.

Авторские права на документацию

Права на документацию AviSynth (c) 2002-2007 принадлежат группе разработчиков AviSynth и других людей, сделавших вклад.

С 5 августа 2007 года информация на данном сайте публикуется под лицензией CreativeCommons Attribution-ShareAlike 3.0 License (сокращенно "CC BY-SA 3.0", см. полные правила лицензирования). Неофициальный перевод на русский: http://ru.wikisource.org/wiki/Creative_Commons_Attribution-ShareAlike_3.0_Unported .

Дополнительная информация о правах доступна здесь.

avisynth.nl

Первоначальная обработка с помощью AviSynth'а

Перед тем как загрузить захваченное видео в Premiere, необходимо немного обработать его. А именно нужно сделать деинтерлейс (первоначально видео захватывается с двумя полями, в результате чего изображение получается в виде гребёнки, с помощью фильтров деинтерлейса мы избавляемся от этой гребёнки), подрезать чёрные поля по краям. Возможно сразу добавить шумодав (подавление различных шумов в видеопотоке). Удобнее всего это сделать либо с помощью AviSynth'а, либо с помощью VirtualDub'а. Причём при обработке через AviSynth процесс будет происходить немного быстрее, зато VirtualDub будет легче настроить (это особенно важно для новичков), да и внешние вильтры в VirtualDub'е использовать намного легче и удобнее. Если Вы - новичок или если что-то не получается при работе с AviSynth'ом, попробуйте обработать видеопоток с помощью VirtualDub'a.Итак, взять AviSynth можно с http://doom9.org, советую сразу качать GordianKnot (AviSynth входит в его состав) так как мы будем им пользоваться в дальнейшем. Вкратце расскажу о нём. AviSynth - это фреймсервер, позволяющий проводить операции над видеопотоком не сохраняя результат в отдельный файл. Все операции будут производиться прямо на лету и результат сразу будет передаваться в ваш редактор или видеоплеер. Алгоритм обработки видео составляется с помощью скрипта. Скрипт AviSynth - это текстовый документ сохранённый с расширением .avs. Для составления скриптов хватит обыкновенного блокнота, но для облегчения составления скрипта мы будем пользоваться GordianKnot'ом, GordianKnot сам составит скрипт, вам останется лишь чуть-чуть подкорректировать его. Перед началом работы над составлением скрипта стоит убедиться что AviSynth установлен в системе корректно. Делается это совсем просто. Открываем блокнот и пишем скрипт. Скрипт получится очень простой и будет состоять всего из одного слова "Version". Печатаем это слово и сохраняем скрипт с расширением *.avs. Далее пытаемся запустить этот файл с помощью любого видеоплеера (например Windows Media Player). Если AviSynth установлен правильно, то вы увидите десятисекундный ролик с данными о версии AviSynth'а. Если же AviSynth в вашей системе не установлен, то вы получите ошибку "формат не поддерживается".После того, как вы окончательно убедились что AviSynth установлен, можно приступать к созданию скрипта:

  1. Запускаем GordianKnot.
  2. В нижнем левом углу интерфейса находим кнопку Open и жмём на неё.
  3. Находим папку с сырьём и выбираем любой файл. Какой именно - без разницы т.к. далее мы сами подправим скрипт так, чтобы все наши кусочки склеивались. Те опции и фильтры что мы настроим для одного файла следовательно будут применены и ко всем остольным.
  4. 4. 4. На этом этапе нам нужна только одна вкладка, вкладка Resolution. Так что сразу после загрузки переходим в неё.В разделе Input Resolution выбираем пункт "other .......", инапротив него должно быть разрешение видеофайла. В разделе Input Pixel Aspect Ratio выставляем "1:1". При таких настройках ваш файл не будет приводиться к различным стандартам (PAL, NTSC), а будет обрабатываться как есть. В разделе Crop (before resize!) мы проводим обрезку ненужных полей и испорченного видео. Делается это просто, сначала выбираете пункт "Pixel", обрезаете как вам нужно, а после обрезки выбираете "Smart Crop All", это нужно для подгонки разрешения. Это нужно чтобы потом можно было корректно закодировать наш фильм, кодировщику нужно, чтобы высота и ширина кадров была кратна 16, иначе он или откажется кодировать или закодирует некорректно. В разделе Output Resolution нужно выставить разрешение, равное входному (т.е. разрешение которое стоит в разделе Input Resolution). Разрешение мы будем менять позже, на последнем шаге при кодирование.
  5. Переходим в окно просмотра.И жмём кнопку "Save & Encode" в левом нижнем углу.
  6. В разделе Resizing выставляем "Selected Output Resolution", потому что нам пока размеры менять не нужно! В разделе Resize Filter нам не важно что будет выбрано, т.к. размеры мы менять пока не будем. В разделе Noise Filter выберете количество шума в вашем видео. Если шума нет, то пускай остаётся "None", ну а дальше по возрастающей… В разделе Field Operations нужно выбрать способ деинтерлейса. Я предпочитаю Bob (fast), но в некоторых случаях лучше пользоваться другими. Поэкспериментируйте, какой больше понравится, тот и используйте. В разделе Subtitles (VobSub) ничего трогать ненужно, т.к. субтитры нам не нужны (я так думаю ;-). В разделе Extras тоже ничего трогать ненужно. Жмём кнопку "Save" и сохраняем наш проект.
  7. Далее, открываем получившийся скрипт (с помощью текстового редактора). У вас должно было получиться примерно так:# # Created with Gordian Knot # # http://gknot.doom9.org # # PLUGINS LoadPlugin("D:\PROGRA~1\GORDIA~1\mpeg2dec3.dll") LoadPlugin("D:\PROGRA~1\GORDIA~1\decomb.dll") #LoadPlugin("D:\PROGRA~1\GORDIA~1\Convolution3d.dll") #LoadPlugin("D:\PROGRA~1\GORDIA~1\FluxSmooth.dll") #LoadPlugin("D:\PROGRA~1\GORDIA~1\TomsMoComp.dll") #LoadPlugin("D:\PROGRA~1\GORDIA~1\VSFilter.dll") #LoadPlugin("D:\PROGRA~1\GORDIA~1\SimpleResize.dll") # # SOURCE avisource("D:\capture\отпуск_2001г_1.00.avi") # # TRIM #trim(startframe,endframe) # # IVTC #Telecide(guide=1).Decimate(5) # or use #IVTC(44,11,95) #GreedyHMA(1,0,4,0,0,0,0,0) # # DEINTERLACING (1) #FieldDeinterlace() #FieldDeinterlace(blend=false) #TomsMoComp(1,5,1) # # CROPPING crop(10,0,756,568) # # DEINTERLACING (2) #SeparateFields().SelectEven() # or maybe Bob().SelectEven() # or maybe #GreedyHMA(1,0,0,0,0,0,0,0) # # # SUBTITLES #VobSub("FileName") # # RESIZING LanczosResize(768,576) # # DENOISING: choose one combination (or none) # 1) little noise #Temporalsoften(2,3,3,mode=2,scenechange=6) #mergechroma(blur(1.3)) #FluxSmooth(5,7) # # 2) medium noise #Temporalsoften(3,5,5,mode=2,scenechange=10) #Convolution3d("moviehq") #FluxSmooth(7,7) # # 3) heavy noise #Temporalsoften(4,8,8,mode=2,scenechange=10) #Convolution3d("movielq") #FluxSmooth(10,15) # # BORDERS #AddBorders(left,top,right,bottom) # # COMPRESSIBILITY CHECK # !!!!Snip Size now has to be 14 for use in GKnot! #SelectRangeEvery(280,14) # # FOOL CCEnc #ResampleAudio(44100) Попробуйте его запустить через плеер, посмотрите что у вас получилось.
  8. Теперь нам нужно кое-что в нём подправить. Для того чтобы обрабатывались сразу все захватываемые файлы нам нужно исправить вот эту часть: # SOURCE avisource("D:\capture\отпуск_2001г_1.00.avi")Метод avisource можно загрузить только один файл, но нам это не подходит. К счастью в AviSynth есть специальный метод для склейки захваченный видеофайлов. Этим методом является SegmentedAVISource. Преобразуем эти строки в:# SOURCE SegmentedAVISource("D:\capture\отпуск_2001г_1.avi")Метод SegmentedAVISource автоматически загружает до 100 AVI файлов (используя AVISource) и склеит их вместе. Если аргументом является d:\kino.avi, то будут загружены файлы d:\ kino.00.avi, d:\ kino.01.avi и т.д. до d:\ kino.99.avi. Несуществующие файлы этой последовательности буду опущены.Можно убрать все строки начинающиеся с символа "#", они скриптом не используются. Оставляйте только нужные вам описания. Сохраняем внесённые изменения.
  9. Вот и всё, можете посмотреть что у вас получилось! В следующем уроке мы будем учиться загружать этот скрипт в Adobe Premiere и будем учиться редактировать его. Удачи!

videomaniak.narod.ru

DeGrainMedian AviSynth

DeGrainMedian AviSynth

-

Avisynth 2.50.8.2(C)2004-2006 . (aka Fizick).http://avisynth.org.ru

DeGrainMedian , .

- .

DeGrainMedian(clip, int "limitY", int "limitUV", int "mode", bool "interlaced")

, (last),

limitY ( 0 255, =4) - ,

limitUV ( 0 255, =6) -

mode ( 0 5, =1) - ( , )

interlaced (true false, =false) -

norow (true false, =false) -

, .

limitY 2-8 ( ).

, limitUV (4-15) .

mode (!).

mode, limit .

, mode=1 2 - , .

mode=5 , "" .

norow=true , VHS .

( ):

:
Avisource("dvd-input.avi") loadplugin("DeGrainMedian.dll") DeGrainMedian(limitY=5,limitUV=5,mode=3)
- :
Avisource("input.avi") loadplugin("DeGrainMedian.dll") DeGrainMedian(limitY=2,limitUV=3,mode=1) DeGrainMedian(limitY=2,limitUV=3,mode=1)
:
Avisource("analog-input.avi") loadplugin("DeGrainMedian.dll") DeGrainMedian(limitY=5,limitUV=7,mode=0)
:
Avisource("analog-input.avi") loadplugin("DeGrainMedian.dll") DeGrainMedian(limitY=5,limitUV=7,mode=1, norow=true)

, .

STMedianFilter (Tom Barry). ( , ) :

"STMedianFilter ( ) / ., , 26 . , ...... , , . ( : ( ) - Fizick)., 3 , <5,8,7>, 5 7, 7.3x3, . , , . 13 () . ( - Fizick) . ( - Fizick) , ." ( Tom Barry).

RemoveGrain Kassandro mode=9 STMedianFilter ( ). ( ). . RemoveGrain Kassandro RemoveDirt, : " , RemoveGrain ." ( Kassandro) , - .

0.2, DeGrainMedian 1-4 ( 5) ( RemoveGrain).

3x3x3.- (newp) (bound1 bound2).mode1-mode4 () ,(oldp).

Mode=0 DeGrainMedian ( mode=9 RemoveGrain) =|bound1 - bound2|, .Mode=1 DeGrainMedian ( mode=8 RemoveGrain) =|oldp - newp|+4* |bound1 - bound2|Mode=2 DeGrainMedian ( mode=8 RemoveGrain) =|oldp - newp|+2* |bound1 - bound2|Mode=3 DeGrainMedian ( mode=7 RemoveGrain) =|oldp - newp|+ |bound1 - bound2|Mode=4 DeGrainMedian ( mode=6 RemoveGrain) =2*|oldp- newp|+ |bound1 - bound2|Mode=5 DeGrainMedian ( mode=5 RemoveGrain) =|oldp - newp|, ( ) .

norow , 12 .

STMedianFilter , .( , , )

( )., .

, (, ) .

DeGrainMedian () .

, Dust Steady. Dust :

"Limit=5. ( )." ( Steady).

, (, ), DeGrainMedian , , .DeGrainMedian , ., ( ) .

.

, , .

6 , ( ) ( ).

, DeGrainMedian STMedianFilter () Dust ( :-)!:-).

.

, ?

  1. ( ? :-) .
  2. , ( ?) .
  3. 1 (, Dust, ?).

, , , .( Vaguedenoiser ..), , ...

, - . .

. limitY=255, DeGrainMedian ( ) , STMedianFilter =255 ( ), , - :-(: - STMedianFilter , 1.0.3.

.

DegrainMedian c .

Avisynth DePan.

YV12 YUY2.
  1. P-III, Athlon, . SSEMMX (Integer SSE).
  2. . , .
  3. ( ) .
  4. 8 (YV12) 4 (YUY2) ( ) .
  5. YUY2 .
  6. .
  7. Avisynth 2.5.5.
  8. .

doom9, ( ): http://forum.doom9.org/showthread.php?s=&threadid=80834

, " " http://forum.ixbt.com/topic.cgi?id=29:9331

MS VC++ Toolkit 2003 MS Platform SDK.

make "makefile" :

nmake

(: nmake.exe cvtres.exe Platform SDK Bin\win64 Bin ).

; \ GNU, "Free Software Foundation" -- 2, ( ) ., , , - (. " GNU")."GNU"; , Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

(: ,, , ).

CreativeCommons BY-SA 3.0 license.

.

:

  • 0.1, 13 2004 - (!).
  • 0.1.1, 18 2004 - YV12 ( 2 )
  • 0.2, 21 2004 - modes=1-4,
  • 0.3, 28 2004 - ,
  • 0.4, 10 2004 -
  • 0.5, 23 2005 - . Turyst04 .
  • 0.6, 2 2005 - YUY2. AVIL .
  • 0.7, 21 2005 - mode=2 YV12 ; .
  • 0.7.0, 27 2005 -
  • 0.8, 9 2005 - 3;- norow ;- mode=1; - 4 5, 3 4, 2 3, 2.
  • 0.8.1 - 28 2006 - mode>0, interlaced=true, norow=false, YV12. squid_80 .
  • 0.8.2 - 7 2006 - 8 . akapuma .

Download DeGrainMedian version 0.8.2

avisynth.nl

Getting started - Avisynth wiki

Basically, AviSynth works like this:

First, you create a simple text document with special commands, called a script. These commands make references to one or more videos and the filters you wish to run on them. Then, you run a video application, such as VirtualDub, and open the script file. This is when AviSynth takes action. It opens the videos you referenced in the script, runs the specified filters, and feeds the output to video application. The application, however, is not aware that AviSynth is working in the background. Instead, the application thinks that it is directly opening a filtered AVI file that resides on your hard drive.

Linear Editing

The simplest thing you can do with AviSynth is the sort of editing you can do in VirtualDub. The scripts for this are easy to write because you don't have to worry about variables and complicated expressions if you don't want.

For testing create a file called test.avs and put the following single line of text in it:

Version()

Now open this file with e.g. Windows Media Player and you should see a ten-second video clip showing AviSynth's version number and a copyright notice.

Version is what's called a "source filter", meaning that it generates a clip instead of modifying one. The first command in an AviSynth script will always be a source filter.

Now add a second line to the script file, so that it reads like this:

Version() ReduceBy2

Reopen the file in Media Player. You should see the copyright notice again, but now half as large as before. ReduceBy2 is a "transformation filter," meaning that it takes the previous clip and modifies it in some way. You can chain together lots of transformation filters, just as in VirtualDub. Let's add another one to make the video fade to black at the end. Add another line to the script file so that it reads:

Version() ReduceBy2 FadeOut(10)

Now reopen the file. The clip should be the same for the first 9 seconds, and then in the last second it should fade smoothly to black. The FadeOut filter takes a numerical argument, which indicates the number of frames to fade.

It takes a long time before the fade starts, so let's trim the beginning of the clip to reduce the wait, and fade out after that. Let's discard the first 120 of them, and keep the frames 120-150:

Version() ReduceBy2 # Chop off the first 120 frames (0 to 119), and keep the frames 120-150 # (AviSynth starts numbering frames from 0) Trim(120,150) FadeOut(10)

In this example we used a comment for the first time. Comments start with the # character and continue to the end of the line, and are ignored completely by AviSynth. The Trim filter takes two arguments, separated by a comma: the first and the last frame to keep from the clip. If you put 0 for the last frame, it's the same as "end of clip," so if you only want to remove the first 120 frames you should use Trim(120,0).

Keeping track of frame numbers this way is a chore. It's much easier to open a partially-completed script in an application like VirtualDub which will display the frame numbers for you. You can also use the ShowFrameNumber filter, which prints each frame's number onto the frame itself.

In practice a much more useful source filter than Version is AviSource, which reads in an AVI file (or one of several other types of files) from disk. If you have an AVI file handy, you can try applying these same filters to your file:

AVISource("d:\capture.avi") # or whatever the actual pathname is ReduceBy2 FadeOut(15) Trim(120,0)

Even a single-line script containing only the AviSource command can be useful for adding support for >2GB AVI files to applications which only support <2GB ones.

Non-Linear Editing

Now we're getting to the fun part. Make an AVS file with the following script in it:

StackVertical(Version, Version)

Now open it. Result: An output video with two identical lines of version information, one on top of the other. Instead of taking numbers or strings as arguments, StackVertical takes video clips as arguments. In this script, the Version filter is being called twice. Each time, it returns a copy of the Version clip. These two clips are then given to StackVertical, which joins them together (without knowing where they came from).

One of the most useful filters of this type is UnalignedSplice, which joins video clips end-to-end. Here's a script which loads three AVI files (such as might be produced by AVI_IO) and concatenates them together.

UnalignedSplice(AVISource("d:\capture.00.avi"), \ AVISource("d:\capture.01.avi"), \ AVISource("d:\capture.02.avi"))

Both StackVertical and UnalignedSplice can take as few as two arguments or as many as sixty. You can use the + operator as a shorthand for UnalignedSplice.

For example, this script does the same thing as the previous example:

AVISource("d:\capture.00.avi") + \ AVISource("d:\capture.01.avi") + \ AVISource("d:\capture.02.avi")

Now let's suppose you're capturing with an application that also saves the video in multiple AVI segments, but puts the audio in a separate WAV file. Can we recombine everything? You bet:

AudioDub(AVISource("d:\capture.00.avi") + \ AVISource("d:\capture.01.avi") + \ AVISource("d:\capture.02.avi"), \ WAVSource("d:\audio.wav"))

avisynth.nl

Avisynth wiki

What is AviSynth?

AviSynth is a powerful tool for video post-production. It provides ways of editing and processing videos. AviSynth works as a frameserver, providing instant editing without the need for temporary files. AviSynth itself does not provide a graphical user interface (GUI), but instead relies on a script system that allows advanced non-linear editing. While this may at first seem tedious and unintuitive, it is remarkably powerful and is a very good way to manage projects in a precise, consistent, and reproducible manner. Because text-based scripts are human readable, projects are inherently self-documenting. The scripting language is simple yet powerful, and complex filters can be created from basic operations to develop a sophisticated palette of useful and unique effects.

AviSynth is free open-source software, and licensed under the GNU General Public License GPLv2.

New to AviSynth – Start Here

Download AviSynth

v.2.6.0 ST, 32-bit at SourceForge v.2.6.0 MT, 32-bit, author SET at forum.doom9.org AviSynth+ : new features, backward compatible. Original project page (avs-plus.net)  New project page (github)  Latest release (github)  Discussion at forum.doom9.org AvxSynth - AviSynth 2.5.8 running on Ubuntu 32/64. Install—and quickly switch between—AviSynth versions:
  • Avisynth 2.5.8, 2.6.0, 2.6.0 MT, 2.6.1 Alpha
  • Avisynth+ 32-bit, 64-bit
Get it here at forum.doom9.org v.2.5.8 MT, 32-bit, author SET, discussion at forum.doom9.org v.2.5.8 MT, 64-bit, author SET, compiled by JoshyD at forum.doom9.org Known Issues in v2.58. Known Issues in v2.60.

Script Syntax

The official reference documentation.

Filters and Utilities

  • Internal filters – Included media filters, organized by category.
  • External filters – Hundreds of separately downloadable filters, organized by category.
  • User pages hosted on this site:
  • Shared functions – Commonly used script functions.
  • Utilities – A list of GUIs, command-line, batch and other AviSynth related utilities.

Scripting reference

Beyond scripting basics

  • Scripting reference overview
    • The full AviSynth grammar – The AviSynth grammar revisited and explained in detail.
    • The script execution model – The steps behind the scenes from the script to the final video clip output. The filter graph. Scope and lifetime of variables. Evaluation of runtime scripts.
    • User functions – How to effectively write and invoke user defined script functions; common pitfalls to avoid; ways to organise your function collection and create libraries of functions, and many more.
    • Block statements – Techniques and coding idioms for creating blocks of AviSynth script statements.
    • Arrays – Using arrays (and array operators) for manipulating collections of data in a single step.
    • Scripting at runtime – How to unravel the power of runtime filters and create complex runtime scripts that can perform interesting (and memory/speed efficient) editing/processing operations and effects.

Advanced topics

Development

About This Website

We need your help to build and improve our site!

Documentation Copyright

AviSynth documentation is Copyright (c) 2002-2017 AviSynth developers and contributors.

The contents of avisynth.org and avisynth.nl are released under the Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0).

avisynth.nl


Смотрите также