251 (edited by www.lr.kr 06-10-2020 19:04:57)

Re: Замена выпавших кадров (drop'ов) и SVP

MAG79 wrote:

Это же рисованное видео, аниме. Персонажи имеют 8-12 фаз движения в секунду, фон - 24 к/сек. Это стандарт для аниме.
Я ничего необычного в аниме по ссылке не увидел. Где именно картинка дергается я не нашел.

Пример покадровой прорисовки аниме. Там же по ссылке см. обсуждение особенностей повышения плавности у аниме.

Ну во первых, это не аниме, во вторых - ни в одном из аниме такого дергания нет. Я смотрел 1 сезон в 2017 году и он тоже дерганный. Китайские диорамы и фильмы в webrip, а не на bd тоже дергаются. Тут суть не в рисованных мультиках, а в исходниках китайских вебрип-ов. Я смотрю с Reclock и в madvr проверяю соотношение частоты кадров к частоте монитора - там всё ок. Но видео рывками даже на фоне без объектов.

https://www.anilibria.tv/release/quan-zhi-gao-shou.html 1 серия с 2:58. На том медленно движущемся фоне видны неестественные рывки даже в оригинале. Или в конце серии на титрах заметно. Если в обычном 24fps видео плавность такая: _дёрг_дёрг_дёрг_дёрг_дёрг_, то тут так: _дёрг______дёрг_дёрг______дёрг_дёрг______дёрг.

252

Re: Замена выпавших кадров (drop'ов) и SVP

Скачал торрент, вижу в первом эпизоде, что действительно есть подергивания. Начиная с 2:58 движение фона прыгает раз в секунду. Каждый 24-ый кадр сдвинут в 2 раза дальше остальных 23-ех кадров. Это может означать, что изначально в видео было 25 к/сек, а затем из него сделали 24 к/сек простым выкидыванием каждого 25-го кадра. Такое видео практически невозможно исправить на лету, т.к. интервал поиска кадра со скачком слишком длинный - 24 кадра.

Вручную исправить можно. Идея и скрипт см. в сообщении:
https://www.svp-team.com/forum/viewtopi … 918#p61918

253 (edited by www.lr.kr 07-10-2020 08:16:11)

Re: Замена выпавших кадров (drop'ов) и SVP

MAG79 wrote:

Скачал торрент, вижу в первом эпизоде, что действительно есть подергивания. Начиная с 2:58 движение фона прыгает раз в секунду. Каждый 24-ый кадр сдвинут в 2 раза дальше остальных 23-ех кадров. Это может означать, что изначально в видео было 25 к/сек, а затем из него сделали 24 к/сек простым выкидыванием каждого 25-го кадра. Такое видео практически невозможно исправить на лету, т.к. интервал поиска кадра со скачком слишком длинный - 24 кадра.

Вручную исправить можно. Идея и скрипт см. в сообщении:
https://www.svp-team.com/forum/viewtopi … 918#p61918

Осталось понять, почему в Китае так выеживаются с кадровой частотой.

fix_all = SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")

SelectEvery(fix_all, 48, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 47)

Distributor()

Это должно помочь?
И если у меня уплавняется x2.5, то вид должен быть таким: SelectEvery(fix_all, 60, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 59) ?

Re: Замена выпавших кадров (drop'ов) и SVP

Выдаёт ошибки вроде этой. Видимо в моём скрипте чего то недостаёт или неправильно расставлено. Помоги понять что дописать/переписать. Скрипт был составлен изначально из бесплатной svp4 с внедрением параметров из скрипта NurK(на здешнем форуме) и дальнейшего его редактирования под возможности моей системы и железа.
https://i.paste.pics/ABWHL.png?trs=e4ae … db0a8c0b44

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

SetMemoryMax(2700)

global threads=5

gpu=0

LoadPlugin("C:\Program Files\SVP 4\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files\SVP 4\plugins\svpflow2.dll")

SetFilterMTMode("DEFAULT_MT_MODE",2)
SetFilterMTMode("SVSuper",1)
SetFilterMTMode("SVAnalyse",1)
SetFilterMTMode("potplayer_source",3)
potplayer_source()

#crop
top_bottom=0
left_right=0

fix_all = SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")

SelectEvery(fix_all, 60, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 59)

Distributor()

ConvertToYV12()

global source_width = width
global source_height = height
global crop_string  = ""
global resize_string = ""
gpuid = (gpu==2) ? "gpuid:21" : "gpuid:0"

z = width * height

z <= 450000 ? eval("""#<720p
    param = (gpu>=1) ? "{scale:{up:2,down:4},gpu:0,pel:2,rc:false}" : "{scale:{up:2,down:4},gpu:0,pel:2,rc:false}"
    cubic = (gpu>=1) ? "0" : "0"
""") : z <= 1100000 ? eval("""#720p
    param = (gpu>=1) ? "{scale:{up:2,down:4},gpu:0,pel:2,rc:false}" : "{scale:{up:2,down:4},gpu:0,pel:2,rc:false}"
    cubic = (gpu>=1) ? "0" : "0"
""") : z >= 5700000 ? eval("""#4k
    param = (gpu>=1) ? "{scale:{up:2,down:4},gpu:0,pel:1,rc:false}" : "{scale:{up:2,down:4},gpu:0,pel:1,rc:false}"
    cubic = (gpu>=1) ? "0" : "0"
""") : eval("""#1080p
    param = (gpu>=1) ? "{scale:{up:2,down:4},gpu:0,pel:1,rc:false}" : "{scale:{up:2,down:4},gpu:0,pel:1,rc:false}"
    cubic = (gpu>=1) ? "0" : "0"
""")

z <= 450000 ? eval("""
    global super_params = param#<720p
    global analyse_params = "{block:{w:32,h:32,overlap:3},main:{search:{coarse:{distance:-1,bad:{sad:5000,range:-15000},type:4,satd:true,trymany:true,width:700},type:2,distance:8,sort:true,satd:true},penalty:{lambda:4.0,plevel:1.5,lsad:6400,pnew:12,pglobal:5,pzero:0,pnbour:1,prev:0},levels:3},refine:[{thsad:38,search:{type:2,distance:-12,satd:false},penalty:{lambda:0.1,lsad:5,pnew:0}}],vectors:3}"
    global smoothfps_params = "{rate:{num:5,den:2},block:true,algo:23,mask:{cover:0,area:0,area_sharp:1024},scene:{blend:true,limits:{scene:700,zero:1,blocks:42},mode:3,force13:true,luma:0.45},cubic:0,gpuid:0,linear:false}"
""") : z <= 1100000 ? eval("""#720p
    global super_params = param
    global analyse_params = "{block:{w:32,h:32,overlap:2},main:{search:{coarse:{distance:-1,bad:{sad:4500,range:-15000},type:4,satd:true,trymany:true,width:642},type:3,distance:10,sort:true,satd:false},penalty:{lambda:2.8,plevel:1.9,lsad:5700,pnew:10,pglobal:5,pzero:0,pnbour:1,prev:0},levels:4},refine:[{thsad:38,search:{type:2,distance:-15,satd:false},penalty:{lambda:0.1,lsad:5,pnew:0}}],vectors:3}"
    global smoothfps_params = "{rate:{num:5,den:2},block:true,algo:23,mask:{cover:0,area:0,area_sharp:1024},scene:{blend:true,limits:{scene:7000,zero:1,blocks:42},mode:3,force13:true,luma:0.45},cubic:0,gpuid:0,linear:false}"
""") : z <= 1650000 ? eval("""#800p
    global super_params = param
    global analyse_params = "{block:{w:32,h:32,overlap:1},main:{search:{coarse:{distance:-1,bad:{sad:3800,range:-15000},type:4,satd:false,trymany:true,width:962},type:2,distance:12,sort:true,satd:false},penalty:{lambda:3.5,plevel:1.8,lsad:5900,pnew:11,pglobal:5,pzero:0,pnbour:1,prev:0},levels:5},refine:[{thsad:1000,search:{type:2,distance:-20,satd:false},penalty:{lambda:0.1,lsad:5,pnew:0}}],vectors:3}"
    global smoothfps_params = "{rate:{num:5,den:2},block:true,algo:23,mask:{cover:0,area:0,area_sharp:1024},scene:{blend:true,limits:{scene:6500,zero:1,blocks:42},mode:3,force13:true,luma:0.46},cubic:0,gpuid:0,linear:false}"
""") : z >= 5700000 ? eval("""#4k
    global super_params = param
    global analyse_params = "{block:{w:32,h:32,overlap:0},main:{search:{coarse:{distance:1,bad:{sad:4200,range:-500},type:4,satd:true,trymany:true,width:962},type:3,distance:3,sort:false,satd:false},penalty:{lambda:10.0,plevel:2.0,lsad:1200,pnew:3,pglobal:5,pzero:0,pnbour:18,prev:22},levels:0},refine:[{thsad:1,search:{type:3,distance:8,satd:false},penalty:{lambda:10.0,lsad:48,pnew:1}}],vectors:2}"
    global smoothfps_params = "{rate:{num:5,den:2},block:false,algo:1,mask:{cover:0,area:0,area_sharp:400},scene:{blend:true,limits:{scene:1500,zero:3,blocks:42},mode:0,force13:true,luma:0.5},cubic:0,gpuid:0,linear:false}"
""") : eval("""#1080p
    global super_params = param
    global analyse_params = "{block:{w:32,h:32,overlap:0},main:{search:{coarse:{distance:-1,bad:{sad:3800,range:-15000},type:2,satd:false,trymany:true,width:962},type:2,distance:0,sort:true,satd:false},penalty:{lambda:3.5,plevel:1.8,lsad:5900,pnew:11,pglobal:5,pzero:0,pnbour:1,prev:0},levels:6},refine:[{thsad:1000,search:{type:2,distance:-20,satd:false},penalty:{lambda:0.1,lsad:5,pnew:0}}],vectors:3}"
    global smoothfps_params = "{rate:{num:5,den:2},block:true,algo:23,mask:{cover:0,area:0,area_sharp:1024},scene:{blend:true,limits:{scene:6500,zero:1,blocks:42},mode:3,force13:true,luma:0.48},cubic:0,gpuid:0,linear:false}"
""")
global demo_mode=0
global stereo_type=0

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

function interpolate(clip src)
{
    input = crop_string=="" ? src : eval("src."+crop_string)
    input = resize_string=="" ? input : eval("input."+resize_string)

    #MT-MODE-1  #do not remove this line!

    super=SVSuper(input, super_params)
    vectors=SVAnalyse(super, analyse_params, src=input)
    smooth=SVSmoothFps(input, super, vectors, smoothfps_params, mt=threads, src=src)

    #MT-MODE-2  #do not remove this line!

    return demo_mode==0 ? smooth : demo(input,smooth)
}

input=last

    stereo_type==0 ? eval(""" interpolate(input)
""") :     stereo_type==1 ? eval("""
        lf = interpolate(input.crop(0,0,input.width/2,0))
        rf = interpolate(input.crop(input.width/2,0,0,0))
        StackHorizontal(lf, rf)
""") :     stereo_type==2 ? Eval("""
        lf = interpolate(input.crop(0,0,0,input.height/2))
        rf = interpolate(input.crop(0,input.height/2,0,0))
        StackVertical(lf, rf)""") : input

########### END OF base.avs ###########


Prefetch(threads)

255 (edited by www.lr.kr 04-08-2021 10:24:17)

Re: Замена выпавших кадров (drop'ов) и SVP

Это точно должно работать и не вызывать конфликтов с PotPlayer или madvr? При любом варианте видео выдаёт около 48fps вместо 59-60fps и изображение очень сильно прыгает и дрожит, словно смотришь 75fps+ на 60Гц мониторе.

Re: Замена выпавших кадров (drop'ов) и SVP

С этим видео ничего не сделать? https://rutracker.org/forum/viewtopic.php?t=5339971

257

Re: Замена выпавших кадров (drop'ов) и SVP

Это аниме. Я скачал первый эпизод. Видеодорожка 30 к/сек. Cам мультфильм отрисован с меньшим количеством к/сек, но закодирован с частотой 30 к/сек.
Если листать покадрово, то фон содержит движение каждые 4 кадра из 5-ти, герои первого плана - 2 кадра из 5-ти. Т.е. фон двигается 24 раза в сек, а остальное - 12 раз в сек. Это стандартно для аниме.
Необходимо достать исходник, закодированный в 24 к/сек или сделать самому.
https://www.svp-team.com/forum/viewtopi … 623#p11623
TFM в данном случае выполнять не нужно, поэтому скрипт получится всего из одной строки:

TDecimate(cycle=5)

Re: Замена выпавших кадров (drop'ов) и SVP

MAG79 wrote:

TFM в данном случае выполнять не нужно, поэтому скрипт получится всего из одной строки:

TDecimate(cycle=5)

Просто добавить эту строку к скрипту PotPlayer'а и должно заработать? Ночью проверю.

Re: Замена выпавших кадров (drop'ов) и SVP

www.lr.kr wrote:
MAG79 wrote:

TFM в данном случае выполнять не нужно, поэтому скрипт получится всего из одной строки:

TDecimate(cycle=5)

Просто добавить эту строку к скрипту PotPlayer'а и должно заработать? Ночью проверю.

Кажется понял, нужно отдельно скачать нужную библиотеку и указать в скрипта путь к ней, как и с svpflow.dll. Вопрос в другом, где безопасно скачать этот dll?

Re: Замена выпавших кадров (drop'ов) и SVP

В общем получилось, спасибо за помощь.

Re: Замена выпавших кадров (drop'ов) и SVP

Ещё вопрос касательно типичных китайских Web-Rip'ов в 25fps. Там подойдёт скрипт

TDecimate(cycle=1)

или как это на самом деле работает?

262

Re: Замена выпавших кадров (drop'ов) и SVP

Вроде бы все понятно в справке к TDecimate написано.
http://avisynth.nl/index.php/TIVTC/TDecimate
Выкинуть 1 кадр из 25, чтобы получить 24 к/сек: cycleR=1, cycle=25. Первый параметр итак по умолчанию равен 1: cycleR=1. Поэтому необходимая строчка:

TDecimate(cycle=25)

Re: Замена выпавших кадров (drop'ов) и SVP

Эта "заумность" понятна для тех, кто давно в теме. Я вижу только противоречия (в теории). Почему для 30fps видео убирается 5 кадров, если по логике должно 6? И в чём такая разница между 25fps видео, где со стороны метод вообще кажется иным, словно удаляются вообще все кадры?

264

Re: Замена выпавших кадров (drop'ов) и SVP

Удаляем 1 кадр из 5-ти. 30 fps - это 6 раз по 5 кадров, получаем 6 раз по 4 кадра. Это 24 fps.
Удаляем 1 кадр из 25-ти. Тут вообще все ясней не бывает. Было 25 fps, станет 24 fps.

Re: Замена выпавших кадров (drop'ов) и SVP

Я уже боюсь чисто теоретически делать подсчёт к 35fps/40fps/52fps и т.п.

https://www.meme-arsenal.com/memes/34996c8b3d6d35bc9a08bb20a95df8e0.jpg

266 (edited by James D 12-08-2021 20:47:27)

Re: Замена выпавших кадров (drop'ов) и SVP

www.lr.kr wrote:

Я уже боюсь чисто теоретически делать подсчёт к 35fps/40fps/52fps и т.п.

Это "задачка" для 4го класса на обычные дроби.
1. ФПС - реальный ФПС
2. Результат : ФПС

Re: Замена выпавших кадров (drop'ов) и SVP

James D wrote:
www.lr.kr wrote:

Я уже боюсь чисто теоретически делать подсчёт к 35fps/40fps/52fps и т.п.

Это "задачка" для 4го класса на обычные дроби.
1. ФПС - реальный ФПС
2. Результат : ФПС

Да не в этом дело. С моим здоровьем сложно сосредоточиться на чём-то, испытывая дискомфорт во всём организме 24/7.