AviSynth является фрейм - программа для Microsoft Windows , разработанная Бен Rudiak-Gould, Эдвин ван Eggelen, Клаус сообщение, Ричард Берг, Ян Brabham и другие. [2] Это бесплатное программное обеспечение под лицензией GNU GPL .
Разработчики) | Разработчики AviSynth, форумчане Doom9 |
---|---|
Стабильный выпуск | 3.7.0 (AviSynth +) [1] (11 января 2021 г . ) [±] |
Предварительный выпуск | 2.6.1 Альфа (17 мая 2016 г . [±] | )
Репозиторий | |
Написано в | C ++ |
Операционная система | Окна |
Тип | Цифровой видеокадровый сервер |
Лицензия | GNU GPL |
Веб-сайт | www |
Редактор сценариев видео
AviSynth действует как нелинейный видеоредактор, полностью управляемый сценариями (без графического интерфейса пользователя ). [3] Он имитирует видеофайл в формате AVI (или аудиофайл WAV ), который видит приложение VFW по потоку, которое обычно представляет собой медиаплеер , программное обеспечение для редактирования видео или кодировщик . [4]
AviSynth построен на фильтрах , которые очень похожи на фильтры DirectShow , но с другим двоичным интерфейсом . Возможности фильтров включают кадрирование , деинтерлейсинг , обратный телесин , работу с неподвижными изображениями , выполнение базовой цветокоррекции , уменьшение видеошумов и многое другое. AviSynth также выполняет традиционные задачи редактирования видео, такие как вырезание, обрезка и изменение последовательности сегментов.
Например, рассмотрим сценарий «myAvi.avs» (простой текстовый файл, сохраненный с расширением «avs»).
AviSource («myAvi.avi») Обрезать (0, 0, 320, 240) Размытие (0,1)
Этот файл сценария можно открыть в большинстве медиаплееров (например, в проигрывателе Windows Media ). Программа будет воспроизводить видеофайл myAvi.avi, обрезанный до верхнего левого угла 320 пикселей на 240 пикселей и немного размытый. Операции выполняются в последовательном порядке, поэтому сначала выполняется обрезка, а затем размытие.
Технически AviSynth создает граф фильтра (как Microsoft GraphEdit, но с дополнительными возможностями) [5], управляемый сценариями, написанными на языке сценариев AviSynth . Его функциональность может быть расширена за счет использования сторонних фильтров, известных как плагины . Список внешних подключаемых модулей поддерживается в AviSynth Filter Collection .
AviSynth - это фрейм-сервер: вызывающая программа запрашивает аудио / видео кадры, а скрипт их обслуживает . Вызывающая программа может вызывать кадры в любом порядке, позволяя ей останавливаться, переходить вперед или назад и т. Д., Как и в случае с физическим файлом.
Язык сценариев AviSynth
Язык сценариев является потоком данных языка: [5] парадигма программирования , которая описывает ориентированный граф данных , протекающих между операциями. В нем отсутствует большинство управляющих структур процедурного программирования [6], но он содержит множество функций, знакомых программистам, включая переменные , различные типы данных , условные выражения и сложные выражения .
Язык работает в основном с аудио / видео клипами как с встроенным типом данных. Клип представляет собой сложную структуру со многими атрибутами, такими как ширина, высота и продолжительность. [7] В языке также есть несколько других более стандартных типов данных: int , float , bool и string . [8] Их можно использовать для выполнения вычислений, принятия решений и записи текста, такого как субтитры, к видео.
Сценарий имеет единственное возвращаемое значение , которое представляет собой аудио и видео, «видимые» программой, запускающей сценарий. Обычно это последняя строка сценария, но оператор возврата может быть вставлен в любой момент.
"Привет мир"
Этот пример - программа "Hello World" .
BlankClip () Подзаголовок («Привет, мир!»)
Если указанный выше текст введен в текстовый файл с расширением .avs, его можно открыть в проигрывателе Windows Media или любой другой программе из списка ниже , а также просмотреть видео со словами «Hello, world!». будет отображаться.
Функция BlankClip создает новое видео. Скобки в конце слова являются необязательными, поскольку аргументы не передаются, но в данном случае они даны, чтобы указать, что это функция, а не переменная.
В Функция субтитров рисует слова «Hello, world!» поверх ранее созданного пустого видео.
Хотя обе функции принимают гораздо больше аргументов (например, управление размером и длиной пустого видео, а также позиционированием, шрифтом и цветом субтитров), в этом примере они не учитываются; функции используют встроенные аргументы по умолчанию.
Avisynth использует синтаксический сахар, который значительно упрощает написание простых скриптов: неявная переменная, называемая Последний . Без неявных переменных приведенный выше сценарий должен быть написан следующим образом:
Последний = BlankClip () Last = Last.Subtitle ("Привет, мир!") вернуться Последний
или вот так:
A = пустой клип () B = A.Subtitle («Привет, мир!») вернуть B
Явные переменные клипа обычно используются только для функций, включающих более одного клипа:
A = пустой клип () B = A.Subtitle («Привет, мир!») return Dissolve (A, B, 30) # 30-кадровое переходное затухание
Обработка видео
В этом примере берется реальное видео, применяется простая обработка и возвращается в выходной файл.
AviSource ("C: \ Example.avi") ReduceBy2 () GreyScale ()
В Функция AviSource используется для загрузки видео AVI из реального места. Чтобы открыть другие типы мультимедиа, Вместо этого можно использовать функцию DirectShowSource . ReduceBy2 делит вертикальный и горизонтальный размер видео пополам, и GreyScale удаляет всю цветовую информацию.
Фильтры AviSynth работают во многих цветовых пространствах RGB и YUV, обеспечивая все виды ввода и вывода видео. [9] Некоторые функции работают только с определенными цветовыми пространствами , требующими преобразования - например, большинство видео распределяются в цветовом пространстве YUV , но большая часть цветокоррекции выполняется в одном из пространств RGB . Скрипт коррекции цвета может выглядеть так:
DirectShowSource ("movie.mp4") # Цветовое пространство YV12 КонвертироватьToRGB32 RGBAdjust (1.0, 0.95, 1.0) # уменьшить Зеленый канал ConvertToYV12
Определяемые пользователем
Язык сценариев AviSynth позволяет пользователям определять свои собственные функции.
Это пример функции, которая позволяет переходить от одного клипа к другому, не повреждая линии чересстрочной развертки.
clip1 = AVISource ("video1.avi") clip2 = AVISource ("video2.avi") # вызвать пользовательскую функцию, которая определена ниже: interlaced_dissolve (клип1, клип2, 30) # ... скрипт возвращает результат вызывающей программе # определяемая пользователем функция: # раствориться от clip1 до clip2 более 30 кадров function interlaced_dissolve (clip clip1, clip clip2, int iter) { clip1 = clip1.SeparateFields evn1 = clip1.SelectEven odd1 = clip1.SelectOdd clip2 = clip2.SeparateFields evn2 = clip2.SelectEven odd2 = clip2.SelectOdd evn = растворить (evn1, evn2, iter) odd = растворить (odd1, odd2, iter) Чередование (evn, нечетное) .Weave.DoubleWeave.SelectOdd # ... функция возвращает результат в основной скрипт }
AviSynth 3.0 и AviSynth +
AviSynth 3.0 был полностью переписан AviSynth 2.x и направлен на преодоление ограничений AviSynth 2.x. Добавление улучшений, таких как модель абстрактного цветового пространства , в которой новые цветовые пространства (в том числе два с 45-битной глубиной) могут поддерживаться через механизм подключаемых модулей, улучшенное управление кешем для повышения производительности и использование Ruby, а не местного языка в текущих версиях. [10]
AviSynth 3.0 должен был быть доступен для других операционных систем, кроме Windows , вместо этого полагаясь на GStreamer , расширяя поддержку таких платформ, как Linux , Mac OS X и BSD . Развитие приостановлено с августа 2007 года. [10] [11]
Самая последняя и современная версия AviSynth на сегодняшний день - это AviSynth + , первоначально являвшаяся форком официального AviSynth 2.xx, но с тех пор AviSynth + получил широкое признание и стал популярной реализацией. Он переписал большую часть исходного кода AviSynth и представил долгожданные функции, такие как поддержка 64-бит , многопоточность , глубокие цветовые пространства , поддержка последних компиляторов, новые конструкции сценариев (новые конструкции потока управления, такие как циклы) и повышенная производительность. во многих областях. [12] В то же время он сохранил 100% совместимость с серией AviSynth 2.5 / 2.6, как для фильтров, так и для хост-приложений. На момент написания (2020-12) он также активно поддерживается.
AviSynth для операционных систем, отличных от Windows
AviSynth 2.xx может использоваться в операционных системах, отличных от Windows, с использованием Wine . Для работы со скриптами VirtualDub / VirtualDubMod можно использовать как в Windows. Для взаимодействия между AviSynth под Wine и, например, FFmpeg, работающим на хосте Linux, можно использовать Avs2YUV . Avs2YUV - это программа командной строки Windows, которая запускается под Wine и отображает вывод сценария AviSynth в стандартный вывод, который затем передается по конвейеру в FFmpeg. Avs2YUV также поддерживает запись в именованный канал . [13]
Существует порт AviSynth для Linux под названием AvxSynth. [14]
AviSynth-совместимые программы
Название программы | Лицензия | Комментарии | Домашняя страница |
---|---|---|---|
Adobe Premiere Pro | Собственный, коммерческий | Версии 6.0 и новее (до CS4 включительно) имеют доступный плагин импорта AviSynth. | Плагин импорта Premiere AviSynth |
Графический интерфейс Avanti | Проприетарное, бесплатное ПО | Avanti GUI - это бесплатный интерфейс для FFmpeg с возможностью вставки AviSynth в качестве препроцессора. | Графический интерфейс Avanti |
AvsPmod | GPL | AvsPmod - это редактор сценариев AviSynth со встроенным проигрывателем, подсветкой синтаксиса и автозаполнением кода. | AvsPmod |
Кодировщик Cinema Craft | Проприетарный | Cinema Craft Encoder - это коммерческий кодировщик MPEG-2, поддерживающий вход AviSynth. | Cinema Craft |
FFmpeg | LGPL2.1 +, GPL 2+ | FFmpeg, скомпилированный для Windows, может получать входные данные AviSynth | инструкции |
GOM плеер | Проприетарное, бесплатное ПО, с рекламой | может воспроизводить файлы .avs | |
Классический медиаплеер | GPL | Media Player Classic может загружать и воспроизводить скрипты AviSynth. Требуется 32-битная версия. | Классический медиаплеер |
Кодировщик выражений Microsoft | Собственная, условно-бесплатная | Microsoft Expression Encoder может импортировать и перекодировать файлы .avs. | |
MPlayer | GPL | MPlayer может воспроизводить файлы .avs | |
Мультимедийный пакет Nero | Собственный, коммерческий | Nero Showtime может воспроизводить файлы AVS | |
СУПЕР | Проприетарное, бесплатное ПО, с рекламой | SUPER (Simplified Universal Player, Encoder and Renderer) - это бесплатное ПО от eRightSoft, которое может кодировать большинство распространенных видеоформатов и имеет полную поддержку AviSynth. | СУПЕР |
TMPGEnc | Условно-бесплатное / бесплатное ПО | TMPGEnc - это бесплатный кодировщик MPEG-1 и MPEG-2. TMPGEnc Plus и TMPGEnc Express - это коммерческие версии TMPGEnc, которые включают расширенные функциональные возможности, а также снятие 30-дневного ограничения на кодирование MPEG-2, присутствующего в TMPGEnc. | Pegasys Inc. |
Конвертер видео Total] | Проприетарное, пробное ПО | Total Video Converter имеет доступный плагин импорта AviSynth. | Total Video Converter |
VirtualDub | GPL | VirtualDub - широко используемый универсальный конвертер видео. | VirtualDub |
VirtualDubMod | GPL | VirtualDubMod содержит несколько специфичных для AviSynth функций, таких как явная поддержка сценариев AviSynth, редактор сценариев AviSynth и многое другое. Однако он не обновлялся с 2006 года и содержит много ошибок. [15] | VirtualDubMod |
Проигрыватель Windows Media | Проприетарный компонент Windows / бесплатное ПО | Проигрыватель Windows Media может загружать и воспроизводить сценарии AviSynth, поэтому это хороший выбор для простого воспроизведения и тестирования. Для его работы могут потребоваться некоторые настройки реестра. | Windows Media Home |
Кроме того, в настоящее время создано несколько программ, которые принимают только сценарии AviSynth в качестве входных данных, тем самым упрощая сами программы, но предоставляя пользователям все возможности AviSynth для ввода.
Существует также несколько приложений пакетного кодирования, которые связывают AviSynth с аудио- и видеокодерами и мультиплексорами из командной строки, чтобы обеспечить универсальное модульное настраиваемое приложение для кодирования видео. MeGUI - пример такого рода приложений.
Хотя сценарии AviSynth предназначены для легкого открытия в простых программах редактирования текста, существует несколько редакторов, специально предназначенных для редактирования сценариев AviSynth, таких как AvsPMod .
Смотрите также
- Список программ для редактирования видео
Рекомендации
- ^ "AviSynth +" . GitHub . 2021-01-11 . Источник 2021-01-11 .
- ^ «Авторские права Avisynth» . AviSynth Mediawiki . Команда AviSynth . Проверено 11 сентября 2015 года .
- ^ «Главная страница - Avisynth» . AviSynth Mediawiki . Команда AviSynth . Проверено 10 апреля 2013 года .
- ^ «Подробнее об AviSynth - Avisynth» . AviSynth Wiki . Команда AviSynth . Проверено 10 апреля 2013 года .
- ^ а б «Модель выполнения сценария: График фильтров» . AviSynth Wiki . Команда AviSynth . Проверено 25 октября 2019 года .
- ^ «Синтаксис AviSynth: управляющие структуры» . AviSynth Wiki . Команда Avisynth . Проверено 21 сентября 2014 года .
- ^ «Свойства клипа» . AviSynth Wiki . Команда Avisynth . Проверено 27 октября 2019 года .
- ^ «Переменные скрипта» . AviSynth Wiki . Команда Avisynth . Проверено 14 сентября 2017 года .
- ^ «Конвертировать - Avisynth» . AviSynth Wiki . Команда AviSynth . Проверено 27 октября 2019 года .
- ^ а б "Avisynth 3 - мертвый проект?" . Форум Doom9 . Проверено 17 июня 2009 .
- ^ «AviSynth v3» . AviSynth Mediawiki . Проверено 22 сентября 2019 .
- ^ «AviSynth +» . AviSynth Mediawiki . Проверено 22 сентября 2019 .
- ^ «Авс2ЮВ» . Akuvian.org . Проверено 9 января 2011 .
- ^ "avxsynth / avxsynth: Linux-порт Avisynth" . GitHub . Проверено 16 сентября 2017 .
- ^ «SourceForge.net: VirtualDubMod: Ошибки» . Проверено 3 декабря 2009 .
Внешние ссылки
- Домашняя страница AviSynth: (английский) (японский)
- Коллекция фильтров AviSynth
- Форумы Doom9 по AviSynth
- Домашняя страница разработки AviSynth 3.0