В этой статье будет рассказано о том, что такое AviSynth и его применение в походных условиях, не без помощи VirtualDub, конечно.
AviSynth это нелинейный видео-редактор, контролируемый скриптовым языком или, перефразируя, скриптовый язык для обработки видео. AviSynth выступает в качестве промежуточного звена между приложением и физическим файлом, позволяя «на лету» выполнять различные преобразования.
Текстовый файл (AVS скрипт), в котором содержатся различные команды, множество программ может открывать как обычный видео-файл (VirtualDub, Adobe Premiere, Windows Media Player, Media Player Classic, e t.c.). Технически, AviSynth выступает в роли VFW (Video For Windows) кодека для текстового файла. AviSynth поддерживает различные плагины, которых существует громандная куча. (кроме своих ещё и от VirtualDub). Качать здесь.
Что это нам может дать?
- Расширение функциональности программ для обработки и воспроизведения видео. Например, добавление поддержки ранее не поддерживаемых видео (и аудио, кстати) форматов. Применение различных эффектов и фильтров;
- Автоматизация процесса обработки видео. AviSynth скрипты, при помощи какого-нибудь другого скриптового языка, можно генерировать на лету;
- Упрощение и ускорение небольших операций по обработке видео. Вместо ползаний по графическим меню, зачастую, бывает удобнее и быстрее вбить пару-тройку небольших команд в текстовый файл. Помимо этого, в дальнейшем, этот текстовый файл можно использовать для других источников, просто заменив имя исходного файла. Можно создать коллекцию шаблонов на часто выполняемые операции.
Что такое VirtualDub?
В этой статье я не буду подробно останавливаться на этом замечательном редакторе, просто отмечу, что это своего рода перочинный ножик для обработки видео. Что-то отрезать, поменять дорожку, посмотреть небольшую статистику и т.п. в этой программе можно сделать очень быстро. Единственно, что обидно, это то, что в стандартной поставке программа не понимает новые типы контейнеров, но это исправляется различными форками. Качать здесь.
Мануал по созданию Avisynth скрипта для рипа XviD
Пример 1. Пережатие видео для слабых компьютеров.
Практически всё новое видео сейчас выходит в HD, но существует много пользователей, мощности компьютеров которых не позволяют насладиться просмотром. Программным решением данной ситуации будет сжать видео с меньшим разрешением. Для этого существует целый спектр программ, но в большинстве своём, они либо неудобны, перегружены ненужным функционалом, либо удобны, но не поддерживают желаемые форматы файлов, либо стоят денег. При помощи AviSynth и VirtualDub мы научимся обрабатывать любой тип файла, для которого установлен DirectShow кодек (проще говоря, который в состоянии воспроизвести ваш Windows Media Player).
В качестве объекта для экспериментов возьмём Ghost in the Shell, уменьшим его размер и сделаем хардсаб (внедрим субтитры в видеоряд).
Кадр из исходного видео:
Почему Diablo 2 у меня выглядит так хорошо или абскейлим записи игр с помощью nnedi3 для AviSynth
Укажем 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. Вы увидите, что картинка поменяла размер, у меня она стала вот такой:
Осталось сделать хардсаб. Для этого воспользуемся командой:
В результате у меня получился скрипт:
DirectShowSource(«e:Ghost In The Shell Movie 1.mkv»)
Lanczos4Resize(800,430)
TextSub(«e:Ghost In The Shell Movie 1.SRT»)
и вот такая вот картинка:
Всё, можно сжимать, например XviD с небольшим битрейтом и смотреть. Однако, полученный файл не стоит распространять, мы же делали его исключительно для личного просмотра. 🙂
Пример 2.
Следующая задача, которая встречается довольно часто, склеивание видео файлов, которые имеют разный битрейт, разное разрешение, разные форматы и даже, возможно, разную частоту кадров. При помощи AviSynth это делается настолько легко, что даже немного обидно.
Итак, у нас есть следующие пациенты:
-
Ghost in the Shell – H264, 1280×688, 23.98fps, MKV
Teenage Mutant Ninja Turtles – XVID, 512×384, 23.98fps, AVI
От Винта — DivX 5, 720×528, 25.00fps, AVI
В реальной жизни такой зоопарк соединять не приходится, но я хочу подчеркнуть возможности AviSynth.
Откроем блокнот и запишем следующее:
video1 = DirectShowSource(«D:VideoGamesОт ВинтаOt Vinta. 001.avi»)
video2 = DirectShowSource(«E:Ghost In The Shell Movie 1.mkv»)
video3 = DirectShowSource(«D:VideoTeenage Mutant Ninja Turtles1x01.avi»)
return video1 + video2 + video3
Этими командами мы создали три переменных типа видео, соединили в один длинный кусок и вернули его для воспроизведения. Если попытаться запустить скрипт сейчас, то появится сообщение об ошибке, потому что параметры у файлов разные. Для начала приведём их к одинаковому разрешению (я буду приводить к 720×480), чтобы не поломать аспект добавим чёрных полосок (letterbox), приведём fps к 25 и приведём sample rate звука к одной величине (44100).
video1 = DirectShowSource(«D:VideoGamesОт ВинтаOt Vinta. 001.avi»)
video2 = DirectShowSource(«E:Ghost In The Shell Movie 1.mkv»)
video3 = DirectShowSource(«D:VideoTeenage Mutant Ninja Turtles1x01.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 я оставил от каждого файла сотню кадров. Просто так. 🙂
Вот и всё. Скрипт делается копипастой буквально за несколько секунд, а времени экономит целую кучу. Его выполнение не требует ни временных файлов на диске, ни ужасающих объёмов ОЗУ.
Результаты его исполнения:
Отдельное спасибо пользователю drunk без инвайта которого эта публикация не произошла бы.
- avisynth
- редактирование видео
- vfw
- скриптовые языки
Источник: h.amazingsoftworks.com
AVISynth
AVISynth — это скриптовый язык, который с помощью подключаемых плагинов способен решать разнообразные задачи нелинейного редактирования.
AVISynth необычен тем, что он не создаёт выходных файлов. Вместо этого, скрипты AVISynth, имеющие расширение AVS, напрямую открываются в приложениях, читающих AVI файлы. Когда открывается скрипт AVS, AVISynth запускается в фоновом режиме, формирует видео и аудио данные согласно скрипту и «скармливает» их приложению по мере надобности.
AVISynth является самым известным языком программирования видеофайлов. Он используется в таких известных программных пакетах, как Auto Gordian Knot (AutoGK), XviD4PSP, SmoothVideo Project (SVP).
С помощью скриптов AVISynth возможно:
- сшивать несколько однотипных файлов в один;
- Применяя BilinearResize и BicubicResize, масштабировать кадры видео с высоким качеством;
- выполнять «3:2 pulldown»;
- преобразовывать чересстрочное видео в прогрессивное;
- подавить шум на видео;
- рассчитывать промежуточные кадры, повышая плавность видео;
- и многое другое, реализуемое в частности подключением плагинов, которых сотни.
Установка AVISynth
Хотя идет разработка версий 2.6 и кроссплатформенной 3.0, на данный момент последней стабильной последние годы является версия 2.58. Скачать её можно здесь.
Одним из достоинств старости последнего стабильного AVISynth является то, что его можно установить по принципу «Далее-далее-финиш», не опасаясь установки различных панелей и «защитников». Однако в выборе компонентов обязательно нужно убедиться, что будет установлена русская документация: она очень полезна для понимания действия AVISynth.
Использование AVISynth
Обычно работа с AviSynth строится таким образом: cначала Вы создаете простой текстовый документ со специальными командами, называемый скриптом (т.е. сценарием, программой на языке Avisynth), и сохраняете файл. Эти команды соотносят один или несколько видеофайлов с фильтрами, которыми Вы хотите их обработать.
Затем Вы запускаете видеоприложение, например Light Alloy, и открываете в нем этот файл скрипта (скрипт-файл). Тогда и начинает работать AviSynth. Он открывает видеофайлы, на которые ссылаются фильтры в скрипте, выполняет фильтрование и передает результат видеоприложению. Приложение при этом и не подозревает, что имеет дело с AviSynth-ом, работающем в фоновом режиме. Оно считает, что работает напрямую с обычными видеофайлами, находящимися у Вас на жестком диске.
Для написания скриптов пользуйтесь документацией к AVISynth. Хоть она и обширна, но написана доступным языком. Подключение сторонних плагинов и их использование описывается в инструкциях к самим плагинам на сайтах их разработчиков.
AviSynth и Light Alloy
Помимо основного режима работы со скриптами, Light Alloy позволяет использовать ранее созданные AVISynth скрипты как шаблоны, что позволяет использовать один скрипт для множества файлов.
Активация этого режима и выбор шаблона загрузки производятся в Настройках AVISynth (в расширенном режиме).
Для добавления своих шаблонов, скопируйте свой AVISynth скрипт в папку «Light AlloyPluginsAviSynth». В скрипте для файла-источника вместо имени файла укажите » «
Источник: light-alloy.com
Знакомство с 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). Качать здесь.
Что это нам может дать?
- Расширение функциональности программ для обработки и воспроизведения видео. Например, добавление поддержки ранее не поддерживаемых видео (и аудио, кстати) форматов. Применение различных эффектов и фильтров;
- Автоматизация процесса обработки видео. AviSynth скрипты, при помощи какого-нибудь другого скриптового языка, можно генерировать на лету;
- Упрощение и ускорение небольших операций по обработке видео. Вместо ползаний по графическим меню, зачастую, бывает удобнее и быстрее вбить пару-тройку небольших команд в текстовый файл. Помимо этого, в дальнейшем, этот текстовый файл можно использовать для других источников, просто заменив имя исходного файла. Можно создать коллекцию шаблонов на часто выполняемые операции.
Что такое 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. Вы увидите, что картинка поменяла размер, у меня она стала вот такой:
Осталось сделать хардсаб. Для этого воспользуемся командой:
В результате у меня получился скрипт:
DirectShowSource(«e:Ghost In The Shell Movie 1.mkv»)
Lanczos4Resize(800,430)
TextSub(«e:Ghost In The Shell Movie 1.SRT»)
и вот такая вот картинка:
Всё, можно сжимать, например XviD с небольшим битрейтом и смотреть. Однако, полученный файл не стоит распространять, мы же делали его исключительно для личного просмотра. 🙂
Пример 2.
Следующая задача, которая встречается довольно часто, склеивание видео файлов, которые имеют разный битрейт, разное разрешение, разные форматы и даже, возможно, разную частоту кадров. При помощи AviSynth это делается настолько легко, что даже немного обидно.
Итак, у нас есть следующие пациенты:
-
Ghost in the Shell – H264, 1280×688, 23.98fps, MKV
Teenage Mutant Ninja Turtles – XVID, 512×384, 23.98fps, AVI
От Винта — DivX 5, 720×528, 25.00fps, AVI
В реальной жизни такой зоопарк соединять не приходится, но я хочу подчеркнуть возможности AviSynth.
Откроем блокнот и запишем следующее:
video1 = DirectShowSource(«D:VideoGamesОт ВинтаOt Vinta. 001.avi»)
video2 = DirectShowSource(«E:Ghost In The Shell Movie 1.mkv»)
video3 = DirectShowSource(«D:VideoTeenage Mutant Ninja Turtles1x01.avi»)
return video1 + video2 + video3
Этими командами мы создали три переменных типа видео, соединили в один длинный кусок и вернули его для воспроизведения. Если попытаться запустить скрипт сейчас, то появится сообщение об ошибке, потому что параметры у файлов разные. Для начала приведём их к одинаковому разрешению (я буду приводить к 720×480), чтобы не поломать аспект добавим чёрных полосок (letterbox), приведём fps к 25 и приведём sample rate звука к одной величине (44100).
video1 = DirectShowSource(«D:VideoGamesОт ВинтаOt Vinta. 001.avi»)
video2 = DirectShowSource(«E:Ghost In The Shell Movie 1.mkv»)
video3 = DirectShowSource(«D:VideoTeenage Mutant Ninja Turtles1x01.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 я оставил от каждого файла сотню кадров. Просто так. 🙂
Вот и всё. Скрипт делается копипастой буквально за несколько секунд, а времени экономит целую кучу. Его выполнение не требует ни временных файлов на диске, ни ужасающих объёмов ОЗУ.
Результаты его исполнения:
Отдельное спасибо пользователю drunk без инвайта которого эта публикация не произошла бы.
- avisynth
- редактирование видео
- vfw
- скриптовые языки
Источник: habr.com