Скрипты для avisynth на python.

AVISynth - это скриптовый язык, который с помощью подключаемых плагинов способен решать разнообразные задачи нелинейного редактирования.

AVISynth необычен тем, что он не создаёт выходных файлов. Вместо этого, скрипты AVISynth, имеющие расширение AVS, напрямую открываются в приложениях, читающих AVI файлы. Когда открывается скрипт AVS, AVISynth запускается в фоновом режиме, формирует видео и аудио данные согласно скрипту и "скармливает" их приложению по мере надобности.

AVISynth является самым известным языком программирования видеофайлов. Он используется в таких известных программных пакетах, как Auto Gordian Knot (AutoGK), XviD4PSP, SmoothVideo Project (SVP) .

С помощью скриптов AVISynth возможно:

  • сшивать несколько однотипных файлов в один;
  • Применяя BilinearResize и BicubicResize, масштабировать кадры видео с высоким качеством;
  • выполнять "3:2 pulldown";
  • преобразовывать чересстрочное видео в прогрессивное;
  • подавить шум на видео;
  • рассчитывать промежуточные кадры, повышая плавность видео;
  • и многое другое, реализуемое в частности подключением плагинов, которых сотни.

Установка AVISynth

Хотя идет разработка версий 2.6 и кроссплатформенной 3.0, на данный момент последней стабильной последние годы является версия 2.58. Скачать её можно .

Одним из достоинств старости последнего стабильного AVISynth является то, что его можно установить по принципу "Далее-далее-финиш", не опасаясь установки различных панелей и "защитников". Однако в выборе компонентов обязательно нужно убедиться, что будет установлена русская документация: она очень полезна для понимания действия AVISynth.

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

Обычно работа с AviSynth строится таким образом: cначала Вы создаете простой текстовый документ со специальными командами, называемый скриптом (т.е. сценарием, программой на языке Avisynth), и сохраняете файл. Эти команды соотносят один или несколько видеофайлов с фильтрами, которыми Вы хотите их обработать. Затем Вы запускаете видеоприложение, например Light Alloy, и открываете в нем этот файл скрипта (скрипт-файл). Тогда и начинает работать AviSynth. Он открывает видеофайлы, на которые ссылаются фильтры в скрипте, выполняет фильтрование и передает результат видеоприложению. Приложение при этом и не подозревает, что имеет дело с AviSynth-ом, работающем в фоновом режиме. Оно считает, что работает напрямую с обычными видеофайлами, находящимися у Вас на жестком диске.

Для написания скриптов пользуйтесь документацией к AVISynth. Хоть она и обширна, но написана доступным языком. Подключение сторонних плагинов и их использование описывается в инструкциях к самим плагинам на сайтах их разработчиков.

AviSynth и Light Alloy

Помимо основного режима работы со скриптами, Light Alloy позволяет использовать ранее созданные AVISynth скрипты как шаблоны, что позволяет использовать один скрипт для множества файлов.

Активация этого режима и выбор шаблона загрузки производятся в Настройках \ AVISynth (в расширенном режиме).

Для добавления своих шаблонов, скопируйте свой AVISynth скрипт в папку "Light Alloy\Plugins\AviSynth". В скрипте для файла-источника вместо имени файла укажите " {SOURCE} "

21 января 2009 в 14:11

Знакомство с 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("путь_к_файлу")

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

Сохраните файл с расширением 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 это делается настолько легко, что даже немного обидно.

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

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

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



Этими командами мы создали три переменных типа видео, соединили в один длинный кусок и вернули его для воспроизведения. Если попытаться запустить скрипт сейчас, то появится сообщение об ошибке, потому что параметры у файлов разные. Для начала приведём их к одинаковому разрешению (я буду приводить к 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 я оставил от каждого файла сотню кадров. Просто так. :)

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

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

Отдельное спасибо пользователю

Интерфейс программы: английский

Платформа:XP / 7 / Vista

Производитель: Ben Rudiak-Gold

Сайт: avisynth.org

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

Основные возможности программы AviSynth

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

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

Начиная работать с программой, вы создаете скрипт с расширением.AVS, а затем открываете сохраненный документ, к примеру, в программе VirtualDub, которая прекрасно справляется с редактированием видео. Иеперь в работу в фоновом режиме включается именно AviSynth. Причем, фильтры данной утилиты работают таким образом, что программа, во-первых, не знает, что передача видео осуществляется через AviSynth, а, во-вторых, предполагает, что открываемый видео файл имеет стандартный формат.AVI. В этом и состоит вся прелесть этой утилиты. Ведь с ее помощью можно открывать совершенно различные файлы, которые будут восприниматься программами, как стандартное видео.

При использовании этой утилиты совершенно спокойно можно объединять несколько видео файлов в один, менять или обрабатывать звуковые дорожки. Весьма важной особенностью является возможность редактирования файлов видео с размером, больше 2 ГБ. Тем более, программа позволяет работать с любым типом видео, включая.MPEG или.MOV (QuickTime), в том цветовом формате, который наиболее подходит для входного или выходного видео, без лишних преобразований. Да и скорость преобразования видео довольно высока. При этом вы получаете полный доступ к любому кадру и полю (половине кадра в чересстрочном видео), с возможностью их разделения, прореживания, комбинирования, фильтрации, объединения, изменения частоты и т. д.

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