1

(204 replies, posted in Эксплуатация SVP)

Не знаю как оно работает в Windows и касается, похоже, только полноэкранных приложений. А вот благодаря RT-ядру у меня и звук стал лучше, чище. Ощущения такие, словно установил ASIO4ALL в Windows. Драйвер звука ASIO, я так понимаю, убирает задержку в аудиопотоке. Не понимаю как, но это делает звук более чистым  и натуральным. То же самое и с видео - более плавное и натуральное, даже без SVP. Короче, для multimedia RT-ядро must have. А вот работая с текстом и мышью - кажется, что стало тяжелее чуть-чуть. И интерфейс тоже чуть замедлился, как будто в виртуалке сидишь, но заметно совсем не сильно. По сути так и получается: RT-ядро вытесняет остальное основное ядро с приложениями в отдельный процесс - по сути создаёт быструю виртуальную машину. Но чистый звук и видео того стоят, как по мне.

2

(204 replies, posted in Эксплуатация SVP)

Поставил Real-Time ядро буквально недавно (4.8 в Manjaro Linux). Обалдеть просто, как улучшилось видео!! Я точно не знаю, в чём суть таких ядер, но, похоже, задержка между видео и звуком, а также между самими кадрами в видео уменьшилась, теперь плавности и реализма стало ещё больше! Советую попробовать. Ощущения от просмотра видео вышли на совершенно другой уровень.

Правда в результате такого преобразования видео у меня получается какое-то замыленое, пропадает чёткость оригинала. Пока не понял, по какой причине.
P.S. Уже разобрался - кодек в ffmpeg выбирается автоматически и качество его далеко не самое лучшее - надо задавать свой.

Staxrip только для Windows существует. Да и не каждый обычный пользователь вообще поймёт, что это за скрипты и куда чего вставлять. Я говорю о создании встроенного в сам SVP интерфейс для домохозяйки, чтобы вообще не думать ни о каких скриптах, о том как работает программа и не устанавливать доп софт. Так программа станет более популярной. Благо, мне кажется, особых усилий это не потребует. Я так уже написал скрипт, который максимально автоматизирует все описанные выше действия - нужно только передать ему имена входящего/выходящего файлов и выбрать качество интерполяции (от чего будет зависеть время кодирования) и всё.

Уже решил свою проблему. Удалять тему не буду, вдруг кому пригодится.
Оказывается, чтобы передать поток в скрипт, нужно изпользовать команду

clip = core.ffms2.Source("/tmp/video.mp4")

которая подгружает нужный файл. Ещё всплыл косяк с неизвестной скрипту переменной container_fps, которую прописал вручную (рядом с переменной clip) со значением 60. И получилось прекраснейшее божественное плавное 60-fps видео без тормозов, артефактов и нагрузки на железо! В живом режиме мой комп бы такие настройки не потянул (да и мало чей бы потянул)! Кодировался он с такими настройками со скоростью 12 fps - в пять раз более низкой, чем нужно в живом режиме!
Вот такой получился скрипт (~/bin/vapour/fullquality.py):

# This script was generated by SVP 4 Manager.
# Check https://www.svp-team.com for more details.

import vapoursynth as vs
core = vs.get_core(threads=7)

core.std.LoadPlugin("/home/igni/bin/SVP4/plugins/libsvpflow1_vs64.so")
core.std.LoadPlugin("/home/igni/bin/SVP4/plugins/libsvpflow2_vs64.so")

clip = core.ffms2.Source("/tmp/video.mp4")
clip = clip.resize.Bicubic(format=vs.YUV420P8)
container_fps = 60

crop_string  = ""
resize_string = ""
super_params     = "{scale:{up:0},gpu:1,rc:true}"
analyse_params   = "{block:{w:8},main:{search:{coarse:{distance:-12,bad:{sad:2000}},type:2}},refine:[{thsad:250}]}"
smoothfps_params = "{gpuid:11,rate:{num:5,den:2},algo:23,mask:{area:1000,cover:80},scene:{}}"

demo_mode   = 0
stereo_type = 0

########## BEGIN OF base.py ##########
# This file is a part of SmoothVideo Project (SVP) ver.4
# This is NOT the full Vapoursynth script, all used variables are defined via
# JScript code that generates the full script text.

def interpolate(clip):
    input = clip
    if crop_string!='':
        input = eval(crop_string)
    if resize_string!='':
        input = eval(resize_string)

    super   = core.svp1.Super(input,super_params)
    vectors = core.svp1.Analyse(super["clip"],super["data"],input,analyse_params)
    smooth  = core.svp2.SmoothFps(input,super["clip"],super["data"],vectors["clip"],vectors["data"],smoothfps_params,src=clip,fps=container_fps)
    smooth  = core.std.AssumeFPS(smooth,fpsnum=smooth.fps_num,fpsden=smooth.fps_den)

    if demo_mode==1:
        return demo(input,smooth)
    else:
        return smooth

if stereo_type == 1:
    lf = interpolate(core.std.CropRel(clip,0,(int)(clip.width/2),0,0))
    rf = interpolate(core.std.CropRel(clip,(int)(clip.width/2),0,0,0))
    smooth = core.std.StackHorizontal([lf, rf])
elif stereo_type == 2:
    lf = interpolate(core.std.CropRel(clip,0,0,0,(int)(clip.height/2)))
    rf = interpolate(core.std.CropRel(clip,0,0,(int)(clip.height/2),0))
    smooth = core.std.StackVertical([lf, rf])
else:
    smooth =  interpolate(clip)
########### END OF base.py ###########


smooth.set_output()

Только поток получился без звука. Но наложить звук из оригинала при помощи ffmpeg - это уже не проблема. Получилась вот такая строка для создания интерполированного видео:

ffmpeg -i video.mp4 -vn -acodec copy sound.mkv; vspipe --y4m ~/bin/vapour/fullquality.py - | ffmpeg -i pipe: encoded.mkv -i sound.mkv

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

Пользуюсь SVP4 под Ubuntu. Есть ли у него возможность генерации скрипта для offline-преобразования файлов как в Windows? Хочу создавать файлы с максимальным качеством для последующего просмотра уже без нагрузки на видеоадаптер и процессор. Или, может быть, где-то есть готовые скрипты?

Сделал свою настройку интерполяции, заглянул в последние использованные скрипты, скопировал оттуда скрипт. Но он не работает.

# This script was generated by SVP 4 Manager.
# Check https://www.svp-team.com for more details.

import vapoursynth as vs
core = vs.get_core(threads=7)

core.std.LoadPlugin("/home/igni/bin/SVP4/plugins/libsvpflow1_vs64.so")
core.std.LoadPlugin("/home/igni/bin/SVP4/plugins/libsvpflow2_vs64.so")

clip = video_in
clip = clip.resize.Bicubic(format=vs.YUV420P8)

crop_string  = ""
resize_string = ""
super_params     = "{scale:{up:0},gpu:1,rc:true}"
analyse_params   = "{main:{search:{coarse:{distance:-8},type:2}},refine:[{thsad:250}]}"
smoothfps_params = "{gpuid:11,rate:{num:5,den:2},algo:13,mask:{area:1000},scene:{blend:true}}"

demo_mode   = 0
stereo_type = 0

########## BEGIN OF base.py ##########
# This file is a part of SmoothVideo Project (SVP) ver.4
# This is NOT the full Vapoursynth script, all used variables are defined via
# JScript code that generates the full script text.

def interpolate(clip):
    input = clip
    if crop_string!='':
        input = eval(crop_string)
    if resize_string!='':
        input = eval(resize_string)

    super   = core.svp1.Super(input,super_params)
    vectors = core.svp1.Analyse(super["clip"],super["data"],input,analyse_params)
    smooth  = core.svp2.SmoothFps(input,super["clip"],super["data"],vectors["clip"],vectors["data"],smoothfps_params,src=clip,fps=container_fps)
    smooth  = core.std.AssumeFPS(smooth,fpsnum=smooth.fps_num,fpsden=smooth.fps_den)

    if demo_mode==1:
        return demo(input,smooth)
    else:
        return smooth

if stereo_type == 1:
    lf = interpolate(core.std.CropRel(clip,0,(int)(clip.width/2),0,0))
    rf = interpolate(core.std.CropRel(clip,(int)(clip.width/2),0,0,0))
    smooth = core.std.StackHorizontal([lf, rf])
elif stereo_type == 2:
    lf = interpolate(core.std.CropRel(clip,0,0,0,(int)(clip.height/2)))
    rf = interpolate(core.std.CropRel(clip,0,0,(int)(clip.height/2),0))
    smooth = core.std.StackVertical([lf, rf])
else:
    smooth =  interpolate(clip)
########### END OF base.py ###########


smooth.set_output()

Пробовал запустить его через vspipe:

vspipe --y4m ~/bin/vapour/fullqua.py - | ffmpeg -i pipe: encoded.mkv

Но получил ошибку, что переменная clip не определена:

Script evaluation failed:
Python exception: name 'video_in' is not defined
Traceback (most recent call last):
  File "src/cython/vapoursynth.pyx", line 1491, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:26972)
  File "/home/igni/bin/vapour/fullqua.py", line 10, in <module>
    clip = video_in
NameError: name 'video_in' is not defined

Вбил имя файла вручную (clip = "/tmp/video.mp4"), после чего вышла другая ошибка:

Script evaluation failed:
Python exception: 'str' object has no attribute 'resize'
Traceback (most recent call last):
  File "src/cython/vapoursynth.pyx", line 1491, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:26972)
  File "/home/igni/bin/vapour/fullqua.py", line 11, in <module>
    clip = clip.resize.Bicubic(format=vs.YUV420P8)
AttributeError: 'str' object has no attribute 'resize'

Решил, что изменение размера всё равно ни к чему, закомментировал эту строку и снова запустил. Получил следующее:

Script evaluation failed:
Python exception: Super: argument clip was passed an unsupported type (expected clip compatible type but got str)
Traceback (most recent call last):
  File "src/cython/vapoursynth.pyx", line 1491, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:26972)
  File "/home/igni/bin/vapour/fullqua.py", line 53, in <module>
    smooth =  interpolate(clip)
  File "/home/igni/bin/vapour/fullqua.py", line 34, in interpolate
    super   = core.svp1.Super(input,super_params)
  File "src/cython/vapoursynth.pyx", line 1370, in vapoursynth.Function.__call__ (src/cython/vapoursynth.c:25121)
vapoursynth.Error: Super: argument clip was passed an unsupported type (expected clip compatible type but got str)

Я так понимаю, переменная clip должна быть не адресом файла, а видеопотоком? Как же его в таком случае передать в скрипт?
Можете помочь с решением этой проблемы? Ничего под Linux по этой теме не нашёл.

7

(204 replies, posted in Эксплуатация SVP)

Пришёл сказать "Большое спасибо" за версию под Linux!!! Она гораздо быстрее. Если по Windows 10 у меня не получалось выжать максимум из программы, то в Ubuntu Linux 16.04 Gnome Desktop всё работает на полную катушку - все настройки на максимуме, качество гораздо выше и никаких подвисонов как в десятке! Процессор загружен всего на 50% после включения GPU-ускорения! Именно отсутствие SVP под Линуксом больше всего останавливало меня от перехода на него. Теперь же это не только не тормозной ограниченный вариант, а даже лучший, чем под виндой! В Линуксе у меня и звук лучше, чем в винде и шрифты выглядят лучше. Windows 10 - это теперь просто шлак. Разве что в новые игры поиграть под ней, а так - даром не нужен теперь этот троян. Обязательно сделаю пожертвование на благо развития проекта!