Vapoursynth установка

Про то, что такое Vapoursynth я писал в своей статье Vapoursynth первое знакомство. Теперь настало время установить Vapoursynth на компьютер под Linux. И не только сам Vapoursynth, а рабочее окружение, которое позволит заниматься просмотром и редактированием видео под Linux.

Рабочее окружение

Итак, что же входит в рабочее окружение (что мы получим в результате установки)?

FFmpeg — бесплатный набор библиотек и инструментов для редактирования и конвертирования видео из одного формата в другой. В большинстве случаев библиотеки не понадобятся (если только вы не захотите написать свой собственный медиа плеер), а вот инструменты понадобятся. Под инструментами подразумеваются ffmpeg и ffplay, с помощью которых мы будем смотреть и конвертировать видео (и не только).

Vapoursynth — консольный (скриптовый) редактор видео. Звучит по дебильному, но с помощью этой штуковины можно творить невообразимые вещи с вашими видосиками.

Plugins — плагинчики для Vapoursynth. В данной сборке их будет всего два:
ffms — плагин чтения аудио/видео из различных контейнеров;
fft3df — фильтр очистки видео от шума.
Как видите плагинов не очень много в этой сборке, но эти два являются одними из основных и без них совсем никуда.

Установочный скрипт

Весь процесс установки сводится к минимальному вмешательству пользователя. Жмем кнопку и идем пить чай. Скрипт отлаживался на Ubuntu 18.04, которая сейчас объявлена в LTS ветку (то есть разработчики будут за ней следить и выкатывать для нее самые свежие обновления).

Скачиваем установочный скрипт:

git clone https://github.com/andreiyv/vbuild.git

переходим в папку vbuild и запускаем:

./vbuild-ubuntu.sh

сначала установятся необходимые пакеты (в основном библиотеки) из репозитария Ubuntu (далеко не уходите, нужно будет ввести пароль для sudo), а затем начнутся скачиваться и компилиться исходники.

Тестирование

По окончании сборки делаем проверку:

ffmpeg -v
vspipe -v

И запускаем несколько тестов из папки test/
В каждом из тестов работает связка Vapoursynth + ffplay.
Vapoursynth проводит манипуляции с видео, а ffplay показывает результат. Следует помнить, что сам Vapoursynth ничего не показывает, а лишь вносит изменения (редактирует) и тут же отдает в поток модифицированное видео, а кто уж там будет его показывать или перекодировать это не забота Vapoursynth.

Test1 (histogram)

./test1.sh

Сбоку к видео добавляется динамическая гистограмма, которая показывает распределение яркости в каждом из цветовых каналов.

Python скрипт, который использовался в этом тесте.

import vapoursynth as vs
core = vs.get_core()
src = core.ffms2.Source(source='mountains.mp4')
src = core.hist.Levels(src)
src.set_output()

 

 

Test2 (image decomposition)

./test2.sh

В этом тесте происходит разделение видео на три слоя:
1-й слой: канал яркости;
2-й слой: красно-зеленая компонента цвета;
3-й слой: желто-синяя компонента цвета.

import vapoursynth as vs
core = vs.get_core()
src = core.ffms2.Source(source='mountains.mp4')
resized = core.resize.Bicubic(clip=src,width=480, height=270)
clip_Y = core.std.ShufflePlanes(clips=resized, planes=[0, 0, 0], colorfamily=vs.YUV)
clip_U = core.std.ShufflePlanes(clips=src, planes=[1, 1, 1], colorfamily=vs.YUV)
clip_V = core.std.ShufflePlanes(clips=src, planes=[2, 2, 2], colorfamily=vs.YUV)
decomposed = core.std.StackVertical([clip_Y,clip_U,clip_V])
decomposed.set_output()

fftdenoise
 

Test3 (fftdenoise)

В отличие от предыдущих тестов, которые использовали стандартные возможности Vapoursynth (гистограмма, деление на цветовые и световые каналы) этот тест требует внешний плагин fftdenoise. Этот плагин собирается в виде динамической библиотеки на этапе работы установочного скрипта. А потом автоматически подцепляется Vapoursynth’ом.
Для запуска этого теста ничего дополнительного делать не нужно, просто в командной строке выполняем:

./test3.sh

В этом тесте происходит очитска видео от шума с помощью широко-известного denoise фильтра fftdenoise, построенного с использованием библиотеки FFT.

import vapoursynth as vs
core = vs.get_core()
src = core.ffms2.Source(source='mountains.mp4')
src = core.fft3dfilter.FFT3DFilter(clip=src, sigma=8.0, planes=[0,1,2], bt=1, bw=16, bh=16, ow=8, oh=8)
src.set_output()

Почитать еще: