Перейти к содержимому

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(«e:\Ghost In The Shell Movie 1.mkv»)

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

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

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

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

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

Image and video hosting by TinyPic

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

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

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

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

Image and video hosting by TinyPic

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

Пример 2.

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

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

    Ghost in the Shell – H264, 1280×688, 23.98fps, MKV

В реальной жизни такой зоопарк соединять не приходится, но я хочу подчеркнуть возможности 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\1×01.avi»)

return video1 + video2 + video3

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

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

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

Image and video hosting by TinyPic

Image and video hosting by TinyPic

Image and video hosting by TinyPic

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

AviSynth — ликбез

AviSynth — мощная программа для обработки видео. Её возможности в умелых руках практически безграничны. Никто секретов работы с Ависинтом специально не держит, просто это всё очень нелегко объяснить, а никаких систематических пошаговых понятных обычному пользователю учебников нет. И не было никогда. Это программа с открытым кодом для программистов. Любой человек может написать свой фильтр, и их уже сотни, если не тысячи. В то же время, на разных сайтах (и на нашем тоже) встречаются поразительные результаты обработки видео этой программой, иногда прилагаются и скрипты. Но попытки повторения результатов новичками обычно заканчиваются неудачей. С этой проблемой столкнулся и я несколько лет назад. Я совсем не программист, поэтому расскажу, как я это всё понимаю.

1. AviSynth не имеет совсем никакого интерфейса. Т.е. запустить Ависинт с помощью ярлыка нельзя. Программа тихо встаёт в указанное ей место и использует возможности системы (кодеки, библиотеки и т.п.)
2. Чтобы увидеть, что она вообще делает, используется визуальный интерфейс других программ, чаще всего — VirtualDubMod.
3. Файлы открываются и обрабатываются с помощью скриптов — файлов Блокнота, но с расширением .avs. Они пишутся вручную, и ошибаться нельзя. Своего рода специальный язык программирования. Скрипты можно копировать готовые, но чтобы их запустить на своём компьютере всё равно придётся несколько первых строк переписать.
4. Корректно работает это всё только на ХР и 7-ке, т.к. программа очень старая. Я для этого держу старую ОС на отдельном жёстком диске и при необходимости загружаюсь с него. Некоторые пользуются программой на современных ОС, но гарантии корректной работы на все случаи жизни нет.
5. У меня есть некоторые конкретные наработки (скрипты, схемы, алгоритмы). Готов ими поделиться, если есть интерес. По моим наблюдениям, у других — другие схемы и наборы фильтров, даже на этом сайте. Всё охватить невозможно, но можно делиться опытом.

Эта тема для желающих начать работать с Ависинтом. Мне в своё время пришлось тыкаться и приставать к занятым людям с глупыми вопросами. Постараюсь показать азы работы на практических примерах.

К счастью, появился новый форумчанин Алексей, который проявил большую заинтересованность в освоении Ависинта. Мы уже начали процесс, и сразу стали возникать типичные проблемы, которые я успел подзабыть, т.к. работаю по привычным схемам уже давно. Программы настроены, все кодеки и библиотеки в системе как-то притёрлись. Но вот добиться этого сразу получается не всегда.

Кто хочет — присоединяйтесь!
Надеюсь, что постепенно возникнет букварь для начинающих работать с Ависинтом.

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

Поделиться220-03-2022 00:09:33

  • Автор: GreifeR
  • Модератор
  • Зарегистрирован : 12-06-2018
  • Приглашений: 0
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

Итак, начнём! Установка программ.

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
(Проверил и установил Алексей.)
https://forumupload.ru/uploads/0018/29/2a/230/t897819.png

Написание скриптов

Напишите в Блокноте такой текст:

aviSource("R:\Кинопередвижка\Пробный захват_01.avi")

Теперь измените путь к файлу R:\Кинопередвижка\ на свой путь к файлу, потом сохраните и измените расширение файла с .txt на .avs.
Этот файл откройте в VirtualDubMod. Сам AVS-файл может лежать где угодно, а вот авишку перемещать никуда нельзя, иначе Ависинт её не найдёт.
Попробуйте. Это просто открытие файла. Должно получиться.

Поделиться320-03-2022 09:58:12

  • Автор: GreifeR
  • Модератор
  • Зарегистрирован : 12-06-2018
  • Приглашений: 0
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

Теперь начнём применять фильтры.

Для начала надо проанализировать исходник Пробный захват_01.avi
Здесь нам пригодится программа MediaInfo.
Вот что она показывает:

https://forumupload.ru/uploads/0018/29/2a/44/527973.jpg

Интересукющие нас сейчас параметры выделены красным:
Тип развёртки: Чересстрочная
Ширина: 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
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

Что ещё можно улучшить? Фильм чёрно-белый, но на картинке присутствует некоторый цветной муар. Его можно (и нужно) убрать.
Для этого используется фильтр grayscale . Он из цветного видео делает чёрно-белое. Фильтр этот встроен и в ВиртуалДабМод, и в Ависинт.

Здесь надо понять следующее. Мы работаем в двух программах — AviSynth и VirtualDubMod. У них у каждой свои наборы фильтров. Есть встроенные, и можно добавлять новые. Работают они на разных принципах, но есть сходные по функциям. В скрипте мы пишем только фильтры для Ависинта.
ВируалДаб свои фильтры может включать только уже после открытия скрипта, перед сохранением (кодированием) файла.

Начнём с VirtualDubMod. Откроем наш скрипт в нём и внимательно выполним все шаги, как на скриншотах.

https://forumupload.ru/uploads/0018/29/2a/44/t898807.jpg

https://forumupload.ru/uploads/0018/29/2a/44/t735634.jpg

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

https://forumupload.ru/uploads/0018/29/2a/44/t634837.jpg

Теперь добавим в наш скрипт одну строчку (не забываем, что только после деинтерлейса!)

LoadPlugin("C:\Video\AviSynth 2.5\Plugins\TDeint.dll") # для деинтерлейса TDeint
aviSource("R:\Кинопередвижка\Пробный захват_01.avi")
TDeint()
grayscale()
BicubicResize(720,544)

Запустим ВиртуалДаб ещё раз, чтобы не использовать его фильтры, и откроем в нём новый скрипт.
Вот что получилось:
https://forumupload.ru/uploads/0018/29/2a/44/t211401.jpg

Видео уже на входе в ВиртуалДаб чёрно-белое.

Отредактировано GreifeR (20-03-2022 11:15:06)

Поделиться520-03-2022 17:57:47

  • Автор: GreifeR
  • Модератор
  • Зарегистрирован : 12-06-2018
  • Приглашений: 0
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

Почистим картинку от шумов.

Тут надо понять одну важную вещь: любой фильтр что-то улучшает, но что-то при этом ухудшает. Поэтому слишком увлекаться фильтрацией не стоит. Скажем, фильтр зерна делает картинку чище, позволяет при кодировании использовать меньший битрейт, но при этом может размыть мелкие детали — капли дождя, рябь на воде и т.п. Тут важно использовать максимальные преимущества при минимальном ухудшении. Все фильтры, удаляющие пятна и, особенно, полосы с киноплёнки, как раз отличаются обратной эффективностью. Поэтому почистим для начала зерно.
Этот фильтр подробно описан в инструкции Как сделать отличный ДВД-рип, короткая и доступная инструкция .

Напишем такой скрипт:

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
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

Корректировка гистограммы. Фильтр Levels.

Для качественной обработки видео важна не только субъективная оценка "на глаз", но и объективная"по приборам", где это возможно.
По канонам фотографии (старой, плёночной) считается, что в кадре должен быть абсолютно белый цвет и абсолютно чёрный. Хотя бы на небольшом участке. При этом детали должны быть различимы и в светАх, и в тенЯх.
У Ависинта и ВиртуалДаба есть встроенный фильтр Levels, который позволяет объективно это оценить.

Начнём с VirtualDubMod. Откроем в нём наш файл Пробный захват_01.avi. Напрямую, без всяких скриптов. Затем Video —> Filters —> Add.

https://forumupload.ru/uploads/0018/29/2a/44/792419.jpg

https://forumupload.ru/uploads/0018/29/2a/44/485977.jpg

https://forumupload.ru/uploads/0018/29/2a/44/203985.jpg

Перед нами открывается гистограмма выбранного кадра № 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)

Откуда мы взяли цифры?

https://forumupload.ru/uploads/0018/29/2a/44/857185.jpg

Если двигать ползунки фильтра в ВиртуалДабе, цифры в окошках будут меняться. Их мы переносим в скрипт. Теперь откройте этот скрипт в другом окне ВиртуалДаба. Результат будет аналогичным. А тогда зачем это всё? Почему не ограничиться ВиртуалДабом?
Потому что Ависинт позволяет применять разные настройки фильтра к разным участкам видео, хотя бы. Кроме того, 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)

И вот что получилось:

https://forumupload.ru/uploads/0018/29/2a/44/54346.jpg

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

https://forumupload.ru/uploads/0018/29/2a/44/652676.jpg

Не чудеса, но визуально смотрится лучше. Ависинт может ещё и не такое! Но захват надо всё равно стараться делать качественным.
Продолжение следует!

Поделиться727-03-2022 20:07:16

  • Автор: GreifeR
  • Модератор
  • Зарегистрирован : 12-06-2018
  • Приглашений: 0
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

По просьбам отдыхающих изучающих 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
  • Сообщений: 635
  • Уважение: [+20/-0]
  • Пол: Мужской
  • Провел на форуме:
    21 день 14 часов
  • Последний визит:
    Вчера 17:53:39

Рассмотрим для разрядки несколько простых, но часто применяемых фильтров — обрезка, добавление бордюров и изменение размеров кадра.

Crop, AddBorders, Resize.

Скачаем файл Красный захват_02.avi, с которым нам предстоит работать.

Посмотрим характеристики файла с помощью MediaInfo. Нас сейчас интересуют вот эти параметры:
Ширина : 1440 пикселей
Высота : 1080 пикселей
Соотношение сторон : 4:3
Частота кадров : 25,000 кадров/сек
Тип развёртки : Прогрессивная

Деинтерлейс делать не надо, открываем файл таким скриптом: aviSource("R:\Кинопередвижка\Красный захват_02.avi")

https://forumupload.ru/uploads/0018/29/2a/44/396186.jpg

Это кадр, полученный при захвате видеокамерой с расточенного кадрового окна кинопроектора. Звук из оптической дорожки можно извлечь программно, но об этом есть другая тема Как извлечь звук с помощью программы 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)

https://forumupload.ru/uploads/0018/29/2a/44/42710.jpg

Теперь попробуем закомментировать (отключить) строку # 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)

https://forumupload.ru/uploads/0018/29/2a/44/616168.jpg

Колесо стало покруглее, а лица не такие вытянутые.
Бордюры по умолчанию чёрные, но можно сделать практически любого цвета. Правда, это редко когда требуется.

Чтобы всё это прочувствовать, мало просто читать тему. Нужно пробовать делать практически. Если что-то не получается — со всеми вопросами прошу в тему AviSynth-ликбез. Обсуждение.

Main Page

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.

Interested? On this site, you can read more about AviSynth, search the official AviSynth manual, and browse the AviSynth FAQ. Or you can jump straight to pages listed below for downloading Avisynth. AviSynth is free open-source software.

Official builds

Bugs and issues

A list of bugs which are present in v2.5.8 and 2.6a3: Known Issues. Most of the 2.5.8 issues are fixed in v2.6a3.

Usage

New to AviSynth — start here

  • Your first script — A guide for total newbies.
  • Getting started — An introductory guide for getting started with AviSynth.
  • Filter introduction — An introductory guide to most common AviSynth filters.
  • Script examples — Assorted examples for putting everything together in the real world.
  • Some guides explaining the basic possibilities of AviSynth:
    • Introduction AviSynth from AnimeMusicVideos.org. A basic guide about deinterlacing, resizing and some other basic stuff.
    • Introduction basic AviSynth filters from AnimeMusicVideos.org. A basic guide about smoothers, rainbow removal, sharpeners, color adjustment and some other basic stuff.

    Filters, external plugins, script functions and utilities

    • Internal filters — The official list and descriptions of included filters, organized by category.
    • External filters — Documentation of custom script functions and AviSynth v2.5x plugins.
      • External plugins (old) — Documentation of AviSynth v1.0x/v2.0x plugins (older plugins, some of them are still in general use).

      AviSynth Syntax

      • AviSynth Syntax — The official reference documentation.
        • Grammar — The grammar of AviSynth script language. An introduction to AviSynth scripting.
        • Script variables — How to declare and use them in scripts.
        • Operators — Available operators and relative precedence.
        • Clip properties — Functions that return a property of a clip.
        • Control structures — Language constructs for script flow control.
        • Internal functions — Ready-made non-clip functions to use in scripts.
        • User defined script functions — How to define and use them in scripts.
        • Plugins — How to load plugins (AviSynth, VirtualDub, VFAPI and C-plugins), autoloading and name-precedence.
        • Runtime environment — Scripting on a per clip frame basis.
        • 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.

        AviSynth FAQ, Guides and Advanced topics

        • AviSynth FAQ — Answers to many common problems.
        • Aspect ratios explained — Introduction to aspect ratios (DAR, PAR, SAR), and how to use that for resizing your clip.
        • Guides — Tips on specific conversion types and common tasks.
        • Advanced topics — About topics such as the Chroma Upsampling Error, color conversions, hybrid video, motion compensation, 10-bit video and other advanced subjects.
        • Advanced Scripting Tips — Using recursion, weaving 3 clips, and other programming tips.

        Development

        • Want to get involved?
        • The official [1] project.
        • Learn how to compile AviSynth and AviSynth plugins.
        • Filter SDK — AviSynth plugin programming tips.
        • Avisynth Plugin Development in C — A tutorial to write a plugin with C.
        • The ongoing changelist.
        • About the development of AviSynth v3 (which will be platform independent).
        • References to image processing algorithms Image Processing Algorithms

        AviSynth Wiki

        Welcome to our MediaWiki. Feel free to pitch in and help out! We need your help to fill and improve our Wiki. Please see documentation on customizing the interface and the User’s Guide for usage and configuration help.

        AviSynth documentation copyright

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

        Avisynth 2.6.0 / AviSynth+ r2574 / продвинутое редактирование видео

        Avisynth

        Avisynth — достаточно своеобразная программа, которая предлагает вам практически неограниченные возможности для профессиональной обработки видео, умеет также вести его редактирование. Хочется особо отметить, что редактирование происходит мгновенно, без потери качества и без разных временных файлов, которые можно зачастую наблюдать при работе с другими программами такого типа.

        Я выше написал, что приложение своеобразное, а все потому, что не имеет графического пользовательского интерфейса, а базируется Avisynth на скриптах, именно они и могут выполнять почти любое нелинейное редактирование. Думаю сразу большая часть людей, читающих этот обзор, ужаснулись и подумали, что такая программа им не нужна. Однако пугаться не стоит, скрипты основываются на простом тексте, а значит вам будет их удобно читать, а это уже плюс.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *