Разработчик (и) | Разработчики AviSynth, Doom9 форумчане |
---|---|
Стабильная версия | 3.6.1 (AviSynth +) (19 июня 2020 г.; 3 месяца назад (2020-06-19)) |
Предварительный выпуск | 2.6.1 Alpha (17 мая 2016 г.; 4 года назад (2016- 05-17)) |
Репозиторий | |
Написано на | C ++ |
Операционная система | Windows |
Тип | Цифровое видео frameserver |
Лицензия | GNU GPL |
Веб-сайт | www.avisynth.nl |
AviSynth программа frameserver для Microsoft Windows, разработанная Беном Рудиак-Гулдом, Эдвином ван Эггеленом, Клаусом Постом, Ричардом Бергом, Яном Брэбэмом и другими. Это бесплатное программное обеспечение под лицензией GNU GPL.
AviSynth действует как полностью управляемый с помощью сценария (без GUI ). Он эмулирует видеофайл AVI (или аудиофайл WAV ), видимый нижележащим приложением VFW, которое обычно является медиаплеером, или кодировщик .
AviSynth построен на фильтрах, которые очень похожи на фильтры DirectShow, но с другим двоичным интерфейсом . Возможности фильтра включают обрезку, деинтерлейсинг, обратный телесин, работу со статическими изображениями, выполнение базовой цветокоррекции, уменьшение видеошума и многое другое. AviSynth также выполняет традиционные задачи, такие как вырезание, обрезка и изменение последовательности сегментов.
Например, рассмотрим сценарий «myAvi.avs» (простой текстовый файл, сохраненный с расширением «avs»)
AviSource («myAvi.avi») Crop (0, 0, 320, 240) Blur (0.1)
Этот файл сценария можно открыть в большинстве медиаплееров (например, Windows Media Player ). Программа будет воспроизводить видеофайл "myAvi.avi", обрезанный до верхнего левого угла 320 пикселей на 240 пикселей и немного размытый. Операции выполняются в последовательном порядке, поэтому сначала выполняется обрезка, а затем размытие.
Технически AviSynth создает граф фильтра (например, Microsoft GraphEdit, но с дополнительными возможностями), управляемый сценариями, написанными в Язык сценариев AviSynth. Его функциональность может быть расширена за счет использования сторонних фильтров, известных как плагины. Список внешних плагинов поддерживается в AviSynth Filter Collection.
AviSynth - это фрейм-сервер - вызывающая программа запрашивает аудио / видео кадры, а скрипт обслуживает их. Вызывающая программа может вызывать кадры в любом порядке, позволяя ей останавливаться, переходить вперед или назад и т. Д., Как и в случае с физическим файлом.
Язык сценариев - это язык потока данных : парадигма программирования, которая описывает ориентированный граф данные, передаваемые между операциями. В нем отсутствует большинство управляющих структур процедурного программирования, но он содержит множество функций, знакомых программистам, включая переменные, отдельные типы данных, условные выражения и сложные выражения.
Язык в основном работает с аудио / видеоклипами как с встроенным типом данных. Клип представляет собой сложную структуру со многими атрибутами, такими как ширина, высота и продолжительность. В языке также есть несколько других более стандартных типов данных: int, float, bool и string. Их можно использовать для выполнения вычислений, принятия решений и записи текста, такого как субтитры, в видео.
Скрипт имеет единственное возвращаемое значение, которое представляет собой аудио и видео, «видимые» программой, запускающей скрипт. Обычно это последняя строка сценария, но оператор возврата может быть вставлен в любой момент.
Этот пример представляет собой программу «Hello World».
BlankClip () Subtitle («Hello, world!»)
Если приведенный выше текст вводится в текстовый файл с расширением.avs, его можно открыть в Windows Media Player или любой другой программе в списке под, и видео, содержащее слова "Привет, мир!" будет отображаться.
Функция BlankClip создает новое видео. Скобки в конце слова являются необязательными, поскольку аргументы не передаются, но в данном случае они даны, чтобы указать, что это функция, а не переменная.
Функция Subtitle рисует слова «Hello, world!» поверх ранее созданного пустого видео.
Хотя обе функции принимают гораздо больше аргументов (например, управление размером и длиной пустого видео, а также позиционированием, шрифтом и цветом субтитров), в этом примере они не учитываются; функции используют встроенные аргументы по умолчанию.
Avisynth использует синтаксический сахар, который значительно упрощает написание простых скриптов: неявную переменную с именем Last. Без неявных переменных приведенный выше сценарий должен быть записан следующим образом:
Last = BlankClip () Last = Last.Subtitle ("Hello, world!") Return Last
или как это :
A = BlankClip () B = A.Subtitle ("Hello, world!") Return B
Явные переменные клипа обычно используются только для функций, включающих более одного клипа:
A = BlankClip () B = A.Subtitle ("Hello, world!") Return Dissolve (A, B, 30) # 30-кадровое переходное затухание
Этот пример берет реальное видео, применяет некоторую простую обработку и возвращает его в вывод.
AviSource ("C: \ Example.avi") ReduceBy2 () GreyScale ()
Функция AviSource используется для загрузки видео AVI из реального места. Чтобы открыть другие типы мультимедиа, вместо этого можно использовать функцию DirectShowSource. ReduceBy2 делит вертикальный и горизонтальный размер видео пополам, а GreyScale удаляет всю информацию о цвете.
Фильтры AviSynth работают во многих цветовых пространствах RGB и YUV , чтобы обеспечить все виды ввода и вывода видео. Некоторые функции работают только с определенными цветовыми пространствами , требующими преобразования - например, большинство видео распределяются в цветовом пространстве YUV, но большая часть цветокоррекции выполняется в одно из пространств RGB. Сценарий коррекции цвета может выглядеть следующим образом:
DirectShowSource ("movie.mp4") # Цветовое пространство YV12 ConvertToRGB32 RGBAdjust (1.0, 0.95, 1.0) # уменьшение Зеленый канал ConvertToYV12
Язык сценариев AviSynth позволяет пользователям определять свои собственные функции.
Это пример функции, которая позволяет переходить от одного клипа к другому без повреждения строк чересстрочной развертки.
clip1 = AVISource ("video1.avi") clip2 = AVISource ("video2.avi") # вызов пользовательской функции, которая определена ниже: interlaced_dissolve (clip1, clip2, 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 = Dissolve (evn1, evn2, iter) odd = Dissolve (odd1, odd2, iter) Interleave (evn, odd2, iter) Interleave (evn, odd).Weeave.DoubleWedOwed #... функция возвращает указанный выше результат в основной скрипт}
AviSynth 3.0 был полной переписью AviSynth 2.x, и направлена на преодоление ограничений AviSynth 2.x. Добавление улучшений, таких как абстрактная модель цветового пространства , в которой новые цветовые пространства (включая два с 45-битной глубиной) могут поддерживаться с помощью механизма подключаемых модулей, улучшенное управление кешем для повышения производительности и использование Ruby, а не на родном языке, используемом в текущих версиях.
AviSynth 3.0 должен был быть доступен для других операционных систем, кроме Windows, вместо этого полагаясь на GStreamer, расширяя поддержку таких платформ, как Linux, Mac OS X и BSD. Разработка застопорилась с августа 2007 года.
Самая последняя и современная версия AviSynth на сегодняшний день - это AviSynth +, первоначально являвшаяся форком официального AviSynth 2.xx, но с тех пор AviSynth + получил широкое признание. и стала основной реализацией. Он переписал большую часть исходного кода AviSynth и представил долгожданные функции, такие как 64-битная поддержка, многопоточность, глубокие цветовые пространства, поддержка последних компиляторов., новые конструкции сценариев (новые конструкции потока управления, такие как циклы) и повышенная производительность во многих областях. В то же время он сохранил 100% совместимость с серией AviSynth 2.5 / 2.6 как для фильтров, так и для хост-приложений. На момент написания (2019-05) он также активно поддерживается.
AviSynth 2.xx может использоваться в операционных системах, отличных от Windows, с использованием Wine. Для работы со скриптами VirtualDub / VirtualDubMod можно использовать как в Windows. Для взаимодействия между AviSynth под Wine и, например, FFmpeg, работающим на хосте Linux, может использоваться. Avs2YUV - это программа командной строки Windows, которая запускается под Wine и отображает выходные данные сценария AviSynth в stdout, который затем передается по конвейеру в FFmpeg. Avs2YUV также поддерживает запись в именованный канал .
Существует порт AviSynth для Linux под названием AvxSynth.
Название программы | Лицензия | Комментарии | Домашняя страница |
---|---|---|---|
Adobe Premiere Pro | Собственная, коммерческая | Версии 6.0 и более поздние (до CS4 включительно) имеют доступный плагин импорта AviSynth. | Плагин импорта Premiere AviSynth |
Собственное бесплатное ПО | Графический интерфейс Avanti - это бесплатный интерфейс для FFmpeg с возможностью вставки AviSynth в качестве препроцессора. | Avanti GUI | |
GPL | AvsPmod - это редактор сценариев AviSynth со встроенным проигрывателем, подсветкой синтаксиса и автозаполнением кода. | AvsPmod | |
Cinema Craft Encoder | Собственный | Cinema Craft Encoder - коммерческий кодировщик MPEG-2, поддерживающий вход AviSynth. | Cinema Craft |
FFmpeg | LGPL2.1 +, GPL 2+ | FFmpeg, скомпилированный для Windows, может получать входные AviSynth | инструкции |
GOM Player | Собственное, бесплатное ПО, | с поддержкой рекламы может воспроизводить файлы.avs. | |
Media Player Classic | GPL | Media Player Classic может загружать и воспроизводить скрипты AviSynth. Требуется 32-битная версия. | Media Player Classic |
Microsoft Expression Encoder | Собственный, условно-бесплатный | Microsoft Expression Encoder может импортировать и перекодировать файлы.avs. | |
MPlayer | GPL | MPlayer может воспроизводить файлы.avs | |
Nero Multimedia Suite | Собственный, коммерческий | Nero Showtime может воспроизводить файлы avs | |
SUPER | Проприетарное, бесплатное программное обеспечение с поддержкой рекламы | SUPER (Simplified Universal Player, Encoder and Renderer) - это бесплатное программное обеспечение от eRightSoft, которое может кодировать большинство распространенных видеоформатов и имеет полную поддержку AviSynth. | SUPER |
TMPGEnc | Условно-бесплатное ПО | TMPGEnc - это бесплатный кодировщик MPEG-1 и MPEG-2. TMPGEnc Plus и TMPGEnc Express - это коммерческие версии TMPGEnc, которые включают расширенные функциональные возможности, а также снятие 30-дневного ограничения на кодирование MPEG-2, присутствующего в TMPGEnc. | Pegasys Inc. |
Total Video Converter] | Запатентованное пробное ПО | Total Video Converter имеет доступный плагин импорта AviSynth. | Total Video Converter |
VirtualDub | GPL | VirtualDub - широко используемый универсальный конвертер видео. | VirtualDub |
VirtualDubMod | GPL | VirtualDubMod содержит несколько специфичных для AviSynth функций, таких как явная поддержка сценариев AviSynth, редактор сценариев AviSynth и многое другое. Однако он не обновлялся с 2006 года и содержит множество ошибок. | VirtualDubMod |
Windows Media Player | Проприетарный компонент Windows / бесплатного программного обеспечения | Windows Media Player может загружать и воспроизводить AviSynth скрипты, поэтому это хороший выбор для простого воспроизведения и тестирования. Для его работы могут потребоваться некоторые настройки реестра. | Windows Media Home |
Кроме того, в настоящее время создано несколько программ, которые принимают только сценарии AviSynth в качестве входных данных, тем самым упрощая сами программы, но предоставляя пользователям все возможности AviSynth для ввода.
Существует также несколько приложений пакетного кодирования, которые связывают AviSynth с аудио- и видеокодерами и мультиплексорами командной строки, чтобы обеспечить единое, модульное, настраиваемое приложение для кодирования видео. является примером такого приложения.
Хотя сценарии AviSynth предназначены для легкого открытия в простых программах редактирования текста, существует несколько редакторов, специально предназначенных для редактирования сценариев AviSynth, например AvsPMod.