AviSynth
![]()
Программа-фрэймсервер для постпродюссинга видео и видеопотоков
Яндекс.Браузер — быстрый браузер с защитой от мошенников и вредоносных сайтов.
- Windows 10
- Windows 8.1
- Windows 8
- Windows 7
- Windows Vista
- Windows XP
Тип лицензии:
Freeware (бесплатное)
Языки: Английский
Снимки экрана 5
![]()
Программа AviSynth разработана для редактирования и обработки видеоматериалов и нелинейного монтажа.
Приложение распространяется в качестве 32-битного инсталлятора для Windows, также можно скачать исходные коды и собрать их под различные ОС. Программа бесплатная, документация переведена на различные языки, в том числе и на русский.
AviSynth: что это за программа?
AviSynth работает в системе как фреймсервер, то есть пересылает видеоданные из источника в любое другое приложение, которое поддерживает получение видеопотока. При этом можно транслировать как оригинальное видео, так и выполнять разнообразную его обработку. В частности, можно наложить на изображение водяные знаки, объединить несколько файлов в единый ролик и так далее.
Как отдельное приложение, по сути, не существует. Вместо этого он выступает посредником и задействуется в то время, когда основной редактор выполнят доступ к файлу. Для использования необходимо написать так называемый скрипт, в котором указать набор и последовательность действий для AviSynth. Затем в основном приложении (например, VirtualDub) нужно загрузить сохраненный скрипт. После этого редактор получит на вход уже обработанный видеопоток. Таким способом удобно комбинировать различные фильтры, программировать соединение входящих данных и так далее.
- очень гибкие возможности по редактированию видео благодаря огромному количеству готовых скриптов;
- возможность наложить фильтры, как на весь ролик, так и на отдельные его части;
- поддержка объединения в единое целое роликов, при этом целевой редактор получит на вход AVI-поток;
- возможность запрограммировать практически любую обработку.
Из недостатков необходимо отметить сложность обучения. Для неподготовленного пользователя изучение скриптов может оказаться непростым делом.
AviSynth — AviSynth
AviSynth программа frameserver для Microsoft Windows, разработанная Беном Рудиак-Гулдом, Эдвином ван Эггеленом, Клаусом Постом, Ричардом Бергом, Яном Брэбэмом и другими. Это бесплатное программное обеспечение под лицензией GNU GPL.
- 1 Редактор сценариев видео
- 2 Язык сценариев AviSynth
- 2.1 «Hello World»
- 2.2 Обработка видео
- 2.3 Определяется пользователем
Редактор сценариев видео
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 — это фрейм-сервер — вызывающая программа запрашивает аудио / видео кадры, а скрипт обслуживает их. Вызывающая программа может вызывать кадры в любом порядке, позволяя ей останавливаться, переходить вперед или назад и т. Д., Как и в случае с физическим файлом.
Язык сценариев AviSynth
Язык сценариев — это язык потока данных : парадигма программирования, которая описывает ориентированный граф данные, передаваемые между операциями. В нем отсутствует большинство управляющих структур процедурного программирования, но он содержит множество функций, знакомых программистам, включая переменные, отдельные типы данных, условные выражения и сложные выражения.
Язык в основном работает с аудио / видеоклипами как с встроенным типом данных. Клип представляет собой сложную структуру со многими атрибутами, такими как ширина, высота и продолжительность. В языке также есть несколько других более стандартных типов данных: int, float, bool и string. Их можно использовать для выполнения вычислений, принятия решений и записи текста, такого как субтитры, в видео.
Скрипт имеет единственное возвращаемое значение, которое представляет собой аудио и видео, «видимые» программой, запускающей скрипт. Обычно это последняя строка сценария, но оператор возврата может быть вставлен в любой момент.
«Hello World»
Этот пример представляет собой программу «Hello World».
BlankClip () Subtitle («Hello, world!»)
Если приведенный выше текст вводится в текстовый файл с расширением.avs, его можно открыть в Windows Media Player или любой другой программе в списке под, и видео, содержащее слова «Привет, мир!» будет отображаться.
Функция BlankClip создает новое видео. Скобки в конце слова являются необязательными, поскольку аргументы не передаются, но в данном случае они даны, чтобы указать, что это функция, а не переменная.
Функция Subtitle рисует слова «Hello, world!» поверх ранее созданного пустого видео.
Хотя обе функции принимают гораздо больше аргументов (например, управление размером и длиной пустого видео, а также позиционированием, шрифтом и цветом субтитров), в этом примере они не учитываются; функции используют встроенные аргументы по умолчанию.
Avisynth использует синтаксический сахар, который значительно упрощает написание простых скриптов: неявную переменную с именем Last. Без неявных переменных приведенный выше сценарий должен быть записан следующим образом:
Last = BlankClip () Last = Last.Subtitle ("Hello, world!") Return LastA = 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)
AviSynth 3.0 и AviSynth +
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 для операционных систем, отличных от Windows
AviSynth 2.xx может использоваться в операционных системах, отличных от Windows, с использованием Wine. Для работы со скриптами VirtualDub / VirtualDubMod можно использовать как в Windows. Для взаимодействия между AviSynth под Wine и, например, FFmpeg, работающим на хосте Linux, может использоваться. Avs2YUV — это программа командной строки Windows, которая запускается под Wine и отображает выходные данные сценария AviSynth в stdout, который затем передается по конвейеру в FFmpeg. Avs2YUV также поддерживает запись в именованный канал .
Существует порт AviSynth для Linux под названием AvxSynth.
AviSynth-совместимые программы
Название программы Лицензия Комментарии Домашняя страница 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.
См. Также
Ссылки
Внешние ссылки
- Домашняя страница AviSynth: (English)(японский)
- Коллекция фильтров AviSynth
- Форумы AviSynth Doom9
- Домашняя страница разработки AviSynth 3.0
AviSynth+ 3.7.1
AviSynth+ — это ответвление от AviSynth, сделанное в надежде модернизировать AviSynth для удовлетворения текущих потребностей и ожиданий. Проект призывает всех помочь в достижении наших целей: добавить давно ожидаемые функции, активизировать сообщество и повысить удобство для разработчиков и пользователей. AviSynth+ полностью совместим с плагинами и скриптами, написанными для AviSynth.
Напомним, что AviSynth — это программа с открытым кодом (GPLv2), предназначенная для обработки видеоматериалов, в частности линейного и нелинейного монтажа, на основе языка сценариев. Линейный и нелинейный монтаж видеоматериалов, а также постобработка осуществляются посредством написания сценариев.
В этом выпуске более 50 нововведений, в том числе:
- RGBAdjust, используемый для измерения цвета и яркости, теперь поддерживает float значения.
- Обработчики массивов ArrayDel, ArrayAdd, ArrayIns, ArraySet теперь могут работать с многомерными массивами.
- Теперь нет округления к ближайшему чётному числу при преобразовании вещественного в целое. Вместо этого используется метод отсекания truncate(x+0.5) .
- Фильтр ColorYUV стал более точным при работе с разными цветовыми пространствами.
- Фильтр ConvertBits, изменяющий битовую глубину с сохранением цветового формата, теперь поддерживает YUY2 (путем автоматического преобразования в YV16 и обратно), в этом же фильтре произведено ещё 11 изменений.
- Преобразование из YUY2 в RGB теперь позволяет использовать цветовые пространства PC.2020 и Rec2020.
- Множество оптимизаций, в том числе:
- ConvertBits теперь использует AVX2.
- Ускорение для режима наложения теперь использует SSE4.1 и AVX2
- Поддерживается ускорение в ConvertAudio.
Полное примечание к выпуску — на странице релиза.
Также можно обратиться к вики AviSynth (не AviSynth+) за дополнительной информацией на русском языке, так как совместимость двух проектов довольно высока.AviSynth — ликбез
AviSynth — мощная программа для обработки видео. Её возможности в умелых руках практически безграничны. Никто секретов работы с Ависинтом специально не держит, просто это всё очень нелегко объяснить, а никаких систематических пошаговых понятных обычному пользователю учебников нет. И не было никогда. Это программа с открытым кодом для программистов. Любой человек может написать свой фильтр, и их уже сотни, если не тысячи. В то же время, на разных сайтах (и на нашем тоже) встречаются поразительные результаты обработки видео этой программой, иногда прилагаются и скрипты. Но попытки повторения результатов новичками обычно заканчиваются неудачей. С этой проблемой столкнулся и я несколько лет назад. Я совсем не программист, поэтому расскажу, как я это всё понимаю.
1. AviSynth не имеет совсем никакого интерфейса. Т.е. запустить Ависинт с помощью ярлыка нельзя. Программа тихо встаёт в указанное ей место и использует возможности системы (кодеки, библиотеки и т.п.)
2. Чтобы увидеть, что она вообще делает, используется визуальный интерфейс других программ, чаще всего — VirtualDubMod.
3. Файлы открываются и обрабатываются с помощью скриптов — файлов Блокнота, но с расширением .avs. Они пишутся вручную, и ошибаться нельзя. Своего рода специальный язык программирования. Скрипты можно копировать готовые, но чтобы их запустить на своём компьютере всё равно придётся несколько первых строк переписать.
4. Корректно работает это всё только на ХР и 7-ке, т.к. программа очень старая. Я для этого держу старую ОС на отдельном жёстком диске и при необходимости загружаюсь с него. Некоторые пользуются программой на современных ОС, но гарантии корректной работы на все случаи жизни нет.
5. У меня есть некоторые конкретные наработки (скрипты, схемы, алгоритмы). Готов ими поделиться, если есть интерес. По моим наблюдениям, у других — другие схемы и наборы фильтров, даже на этом сайте. Всё охватить невозможно, но можно делиться опытом.Эта тема для желающих начать работать с Ависинтом. Мне в своё время пришлось тыкаться и приставать к занятым людям с глупыми вопросами. Постараюсь показать азы работы на практических примерах.
К счастью, появился новый форумчанин Алексей, который проявил большую заинтересованность в освоении Ависинта. Мы уже начали процесс, и сразу стали возникать типичные проблемы, которые я успел подзабыть, т.к. работаю по привычным схемам уже давно. Программы настроены, все кодеки и библиотеки в системе как-то притёрлись. Но вот добиться этого сразу получается не всегда.
Кто хочет — присоединяйтесь!
Надеюсь, что постепенно возникнет букварь для начинающих работать с Ависинтом.Чтобы не утяжелять эту тему, все возникающие вопросы давайте будем обсуждать в специальной теме AviSynth-ликбез. Обсуждение .
Поделиться220-03-2022 00:09:33
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
Итак, начнём! Установка программ.
1. Операционную систему желательно иметь ХР или 7-ку (х64 поддерживается). Можете попробовать и на более современных, но это уже под свою ответственность.
2. В Проводнике надо сделать видимыми расширения файлов.
3. Должны быть установлены все библиотеки NET Framework, начиная с версии 1.1 и K-Lite Mega Codec Pack или аналогичный, а так же DirectX.
4. Понадобится программа MediaInfo (имеется везде в свободном доступе).
5. Необходимо иметь для работы как минимум AviSynth и VirtualDubMod. Если они у вас уже каким-то образом установлены, то можете попробовать работать на них, но под свою ответственность. Чтобы идти с нами в ногу, лучше внимательно прочитать инструкцию Как сделать отличный ДВД-рип, короткая и доступная инструкция , и поставить всё, как там написано. А свою ависинту сначала удалить. Там ничего заумного нет, но нужно выполнить всё по пунктам.
6. Нужно установить Cedocida DV-Codec (именно его, не Panasonic DV Codec. ). Взять можно здесь.
Дополнение. Последнюю версию кодека можно взять отсюда: https://www.videohelp.com/software/Cedocida-DV-Codec
(Проверил и установил Алексей.)Написание скриптов
Напишите в Блокноте такой текст:
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
Теперь измените путь к файлу R:\Кинопередвижка\ на свой путь к файлу, потом сохраните и измените расширение файла с .txt на .avs.
Этот файл откройте в VirtualDubMod. Сам AVS-файл может лежать где угодно, а вот авишку перемещать никуда нельзя, иначе Ависинт её не найдёт.
Попробуйте. Это просто открытие файла. Должно получиться.Поделиться320-03-2022 09:58:12
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
Теперь начнём применять фильтры.
Для начала надо проанализировать исходник Пробный захват_01.avi
Здесь нам пригодится программа MediaInfo.
Вот что она показывает:
Интересукющие нас сейчас параметры выделены красным:
Тип развёртки: Чересстрочная
Ширина: 720 пикселей
Высота: 576 пикселей
Соотношение сторон: 4:3Если исходник чресстрочный (а он у нас именно такой), то первым делом ВСЕГДА выполняется деинтерлейс.
Затем мы приведём пропорции кадра кадра к стандартному соотношению сторон 4:3. Это называется ресайз (изменение размеров).
Напишите такой скрипт:LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
aviSource(«R:\Кинопередвижка\02 23 августа 1942 года.avi»)
TDeint()
BicubicResize(720,544)Первая строка здесь показывает, откуда надо загружать фильтр.
Вторая — открытие файла и путь к файлу (не забудьте изменить его на свой!).
Третья — команда выполнения деинтерлейса.
Четвёртая — изменение размеров кадра.Если при открытии файла выйдет ошибка, то проверьте, лежит ли по адресу: C:\Video\AviSynth 2.5\plugins файл TDeint.dll.
Если нет, скачайте его здесь и положите туда.Знак # позволяет писать после него любой текст, он не воспринимается Ависинтом. Но только на одной строчке!
Чтобы писать обширные комментарии, надо написать такое: __END__
Все строчки ниже этого знака Ависинт видеть не будет.Вопрос: А разве не 720х576 стандарт?
Ответ: Нет! 720х576 — это стандарт для чресстрочного видео в телевизионной аналоговой системе PAL. Файлы такого типа получаются, например, при сбросе на компьютер видео, снятых камерами miniDV или при захвате аналогового видео на компьютер платами видеозахвата. А для прогрессивного видео на компьютере, у которого все пиксели квадратные, при таком размере кадр не получится 4:3, пропорции будут искажены. Мы делаем цифровой рип по современным стандартам.Отредактировано GreifeR (20-03-2022 10:01:57)
Поделиться420-03-2022 11:04:22
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
Что ещё можно улучшить? Фильм чёрно-белый, но на картинке присутствует некоторый цветной муар. Его можно (и нужно) убрать.
Для этого используется фильтр grayscale . Он из цветного видео делает чёрно-белое. Фильтр этот встроен и в ВиртуалДабМод, и в Ависинт.Здесь надо понять следующее. Мы работаем в двух программах — AviSynth и VirtualDubMod. У них у каждой свои наборы фильтров. Есть встроенные, и можно добавлять новые. Работают они на разных принципах, но есть сходные по функциям. В скрипте мы пишем только фильтры для Ависинта.
ВируалДаб свои фильтры может включать только уже после открытия скрипта, перед сохранением (кодированием) файла.Начнём с VirtualDubMod. Откроем наш скрипт в нём и внимательно выполним все шаги, как на скриншотах.


Затем ещё раз нажмём ОК!

Теперь добавим в наш скрипт одну строчку (не забываем, что только после деинтерлейса!)
LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
TDeint()
grayscale()
BicubicResize(720,544)
Запустим ВиртуалДаб ещё раз, чтобы не использовать его фильтры, и откроем в нём новый скрипт.
Вот что получилось:Видео уже на входе в ВиртуалДаб чёрно-белое.
Отредактировано GreifeR (20-03-2022 11:15:06)
Поделиться520-03-2022 17:57:47
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
Почистим картинку от шумов.
Тут надо понять одну важную вещь: любой фильтр что-то улучшает, но что-то при этом ухудшает. Поэтому слишком увлекаться фильтрацией не стоит. Скажем, фильтр зерна делает картинку чище, позволяет при кодировании использовать меньший битрейт, но при этом может размыть мелкие детали — капли дождя, рябь на воде и т.п. Тут важно использовать максимальные преимущества при минимальном ухудшении. Все фильтры, удаляющие пятна и, особенно, полосы с киноплёнки, как раз отличаются обратной эффективностью. Поэтому почистим для начала зерно.
Этот фильтр подробно описан в инструкции Как сделать отличный ДВД-рип, короткая и доступная инструкция .Напишем такой скрипт:
LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
LoadPlugin(«C:\Video\AviSynth 2.5\plugins\mvtools2.dll») # для фильтра зерна
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
TDeint()
grayscale()super = MSuper(pel=2, sharp=0, chroma=true)
b_vec2 = MAnalyse(super, isb = true, delta = 2, chroma=true, blksize=8, overlap=4)
b_vec1 = MAnalyse(super, isb = true, delta = 1, chroma=true, blksize=8, overlap=4)
f_vec1 = MAnalyse(super, isb = false, delta = 1, chroma=true, blksize=8, overlap=4)
f_vec2 = MAnalyse(super, isb = false, delta = 2, chroma=true, blksize=8, overlap=4)
MDegrain2(super,b_vec1,f_vec1,b_vec2,f_vec2,plane=4,thsad=400)Много непонятных строчек в середине — это и есть фильтр зерна со средними настройками. Фильтр этот работает очень медленно, но даёт хорошие результаты.
Попробуйте, скрипт должен открыться сразу.Отредактировано GreifeR (20-03-2022 17:59:05)
Поделиться621-03-2022 12:04:16
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
Корректировка гистограммы. Фильтр Levels.
Для качественной обработки видео важна не только субъективная оценка «на глаз», но и объективная»по приборам», где это возможно.
По канонам фотографии (старой, плёночной) считается, что в кадре должен быть абсолютно белый цвет и абсолютно чёрный. Хотя бы на небольшом участке. При этом детали должны быть различимы и в светАх, и в тенЯх.
У Ависинта и ВиртуалДаба есть встроенный фильтр Levels, который позволяет объективно это оценить.Начнём с VirtualDubMod. Откроем в нём наш файл Пробный захват_01.avi. Напрямую, без всяких скриптов. Затем Video —> Filters —> Add.



Перед нами открывается гистограмма выбранного кадра № 418. Подвигав ползунок в окне предварительного просмотра и нажав ещё раз 4 , увидим гистограмму другого кадра.
На самой гистограмме левый край показывает уровень чёрного, а правый — уровень белого. Если слева гистограмма будет слишком далеко от края, то вместо чёрного получится серый цвет, если же гистограмма будет зашкаливать, упираться в край, то детали в тенЯх будут потеряны. С белым аналогично. В данном кадре с чёрным всё нормально, а вот белый зашкаливает. Что, собственно, и видно на изображении — детали в светах потеряны, кадр пересвечен.
Теперь попробуем подвигать ползунки и посмотрим, как меняется картинка.
Сразу скажу, что можно можно сделать серый цвет чернее, а слишком тёмную картинку высветлить. Но вот потерянные при пересвете и зачернении детали восстановить уже не удастся.
В данном случае нужно отодвинуть правый край гистограммы от границы белого. Но ползунки этого не позволяют. Потери в светах никак восстановить нельзя. Нужно уменьшить экспозицию у камеры при захвате, но это уже другая тема.Теперь загрузим этот фильтр а Ависинте.
Напишем такой скрипт:LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
TDeint()
grayscale()
levels(0, 1, 255, 0, 255)
BicubicResize(720,544)Откуда мы взяли цифры?

Если двигать ползунки фильтра в ВиртуалДабе, цифры в окошках будут меняться. Их мы переносим в скрипт. Теперь откройте этот скрипт в другом окне ВиртуалДаба. Результат будет аналогичным. А тогда зачем это всё? Почему не ограничиться ВиртуалДабом?
Потому что Ависинт позволяет применять разные настройки фильтра к разным участкам видео, хотя бы. Кроме того, AviSynth позволяет прописать отрицательные значения для чёрного и более 255 для уровня белого. Этого нельзя сделать ни в одной другой программе! (Зачем это надо? Это разговор для другой темы. Пока мы учимся азам.) Ну и много чего ещё другого позволяет делать. Но об этом дальше.Хотел на этом закончить, но решил попробовать подвигать белый край. Написал такой скрипт:
LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
TDeint()
grayscale()
levels(0, 1, 295 , 0, 255)
BicubicResize(720,544)И вот что получилось:

Детали в светах всё-таки частично проявились! Гистограмма при этом стала выглядеть так:

Не чудеса, но визуально смотрится лучше. Ависинт может ещё и не такое! Но захват надо всё равно стараться делать качественным.
Продолжение следует!Поделиться727-03-2022 20:07:16
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
По просьбам отдыхающих изучающих AviSynth расскажу о более простых (но не всегда лучших) способах коррекции гистограммы.
AutoLevels — автоматическая коррекция уровней.
Это не встроенный фильтр, поэтому вначале нужно скачать файл autolevels_0.6_20110109.dll отсюда и положить его в папку C:\Video\AviSynth 2.5\Plugins.
Теперь напишем такой скрипт:LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\autolevels_0.6_20110109.dll») # для фильтра AutoLevels
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
TDeint()
grayscale()
autolevels()
BicubicResize(720,544)Теперь внимательно прокрутите видео. Если полученный результат вас устроит, то и хорошо. Но учтите, что все автоматические фильтры могут давать артефакты.
.Есть ещё один способ автоматически нормализовать гистограмму.
Это фильтр ColorYUV (autogain) .
Мы используем пока только одну его функцию.
Откроем такой скрипт:LoadPlugin(«C:\Video\AviSynth 2.5\Plugins\TDeint.dll») # для деинтерлейса TDeint
aviSource(«R:\Кинопередвижка\Пробный захват_01.avi»)
TDeint()
ColorYUV (autowhite = false, autogain = true)
BicubicResize(720,544)Мне этот фильтр нравится меньше. Почему? Просмотрите внимательно несколько первых кадров нашего видео в обоих скриптах и сравните результаты. Фильтр autogain даёт больше артефактов в тёмных сценах.
Открою один секрет. Если написать строчку так: ColorYUV (autowhite = true, autogain = true) , фильтр будет не только изменять уровни, но и пытаться восстановить автоматически баланс белого. Но о цветокоррекции разговор ещё впереди.
Поделиться828-03-2022 00:39:14
- Автор: GreifeR
- Модератор
- Зарегистрирован : 12-06-2018
- Приглашений: 0
- Сообщений: 687
- Пол: Мужской
- Провел на форуме:
22 дня 15 часов - Последний визит:
Сегодня 19:28:42
Рассмотрим для разрядки несколько простых, но часто применяемых фильтров — обрезка, добавление бордюров и изменение размеров кадра.
Crop, AddBorders, Resize.
Скачаем файл Красный захват_02.avi, с которым нам предстоит работать.
Посмотрим характеристики файла с помощью MediaInfo. Нас сейчас интересуют вот эти параметры:
Ширина : 1440 пикселей
Высота : 1080 пикселей
Соотношение сторон : 4:3
Частота кадров : 25,000 кадров/сек
Тип развёртки : ПрогрессивнаяДеинтерлейс делать не надо, открываем файл таким скриптом: aviSource(«R:\Кинопередвижка\Красный захват_02.avi»)

Это кадр, полученный при захвате видеокамерой с расточенного кадрового окна кинопроектора. Звук из оптической дорожки можно извлечь программно, но об этом есть другая тема Как извлечь звук с помощью программы AEO-Light v1.1 & AEO-Light v2.3.3
Давайте выделим только кинокадр.
Для этого обрежем лишнее такой командой: Crop(16, 32, -16, -32)
Четыре числа в скобках означают обрезку (слева, сверху, справа, снизу) .
Обратите внимание, что значения справа и снизу должны быть отрицательными. Если везде будут нули, то ничего обрезаться не будет. В этом примере мы обрезали слева и справа по 16 пикселей, а сверху и снизу по 32. Но этого в данном случае недостаточно. Давайте подберём нужные значения. Для этого будем менять числа, сохранять изменения в скрипте, а потом обновлять ВиртуалДаб клавишей F5. Может так получиться, что в некоторых случаях картинка в ВиртуалДабе отображаться не будет, или будет появляться сообщение об ошибке. Почему так происходит — разговор впереди. Чтобы обойти это ограничение, пока принудительно изменим размеры видео на стандартные 4:3.aviSource(«R:\Кинопередвижка\Красный захват_02.avi»)
Crop(46, 32, -282, -32) # подбираем значения экспериментально!
BicubicResize(720,544)Теперь, как бы мы ни обрезали кадр с разных сторон, на выходе он всегда будет размерами (720,544), хотя пропорции изображения могут искажаться. Наша задача — обрезать лишнее, сохранив максимум полезного. Пробуйте! У меня получились такие значения:
aviSource(«R:\Кинопередвижка\Красный захват_02.avi»)
Crop(46, 118, -286, -160)
BicubicResize(720,544)
Теперь попробуем закомментировать (отключить) строку # BicubicResize(720,544) и снова открыть скрипт. В данном случае получилось. А могло и не получиться. Это потому, что размер кадра не может быть любым. Для разных кодеков и контейнеров существуют разные ограничения.
Универсальные значения высоты и ширины кадра должны быть кратны 16. Ну как минимум 8. Или хотя бы 4. Того кадра, который получился после обрезки!
Проверим это. Ширина = 1440-46-286 = 1108
Высота = 1080-118-160 = 802
Соотношение сторон получается 1,38. А было 1,33. В принципе пойдёт. Нужно, чтобы были правильные пропорции (aspect ratio) изображения.
Проверяется это визуально по круглым предметам в кадре. В нашем случае это колесо велосипеда. Можно измерить высоту и ширину любыми способами, хоть линейкой на экране монитора. Оно круглое? Ну, в принципе, да.
Но так получается не всегда. В данном случае камера снимала с сотношением сторон 4:3, при этом сам кинокадр тоже 4:3.
Мы закончили с обрезкой.Теперь нам нужно привести размер кадра к стандартному, сделать Resize.
Для контейнера avi SD-разрешения стандарными будут размеры (720,544) для 4:3 и (720,400) для 16:9.
Обрезка практически никак не влияет на качество картинки, а вот изменение размеров (масштабирование) очень даже влияет. Нежелательно увеличивать размеры кадра, сжимать можно.
Существуют множество способов (алгоритмов) пересчёта пикселей при масштабировании. Чаще всего применяются BicubicResize и Lanczos4Resize.
Последний делает картинку более резкой, и может использоваться, если придётся всё-таки увеличивать кадр. Есть и много других, применяемых в особых случаях, но у нас пока ликбез.А зачем же нам бордюры?
AddBorders(0,14,0,16) # добавляем 14 пикселей сверху и 16 снизу. Отрицательные значения не применяются.
Для чего? Соттношение сторон у нас всё-таки не совсем точное. Надо бы 1,33. Если ширина после обрезки 1108, то высота должна быть 832 (а у нас пока 802). Нужно добавить 30 пикселей. Нечётные значения лучше не применять. Получилось:aviSource(«R:\Кинопередвижка\Красный захват_02.avi»)
Crop(46, 118, -286, -160)
AddBorders(0,14,0,16)
BicubicResize(720,544)
Колесо стало покруглее, а лица не такие вытянутые.
Бордюры по умолчанию чёрные, но можно сделать практически любого цвета. Правда, это редко когда требуется.Чтобы всё это прочувствовать, мало просто читать тему. Нужно пробовать делать практически. Если что-то не получается — со всеми вопросами прошу в тему AviSynth-ликбез. Обсуждение.