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

Ghostlamer
crystallize, постфильтр у меня работает через шейдеры видеокарты GTX 980, проблем с производительностью нет вообще, загрузка GPU при этом от 0 до 1%.

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

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

MAG79 wrote:

crystallize
яркость и цветность видеокадра смещаются друг относительно друга по диагонали юго-запад - северо-восток
Это вполне может быть. Цель была взять самый быстрый ресайзер. Можно попробовать заменить на SimpleResize от Tom Barry.
Хотя, надо конечно мне уделить этому свое время и разобраться с этим смещением. Вроде бы я этот PointResize использовал только для масок. hmm

Короче, когда у меня после пяти перекодирлваний меню в кваке из болотно-зеленого стало серо-розовым, я стал разбираться. ВиртуалДаб автоматически ставит чтение в yuv12, а запись в rgb24, поэтому похоже что я несколько раз переводил цветность туда-сюда, и накопились ошибки. Я попробовал следить за ней, и получилось намного лучше. Насчет PointResize не помню даже, менял я его на бикубический, или после этого менял еще и обратно. Вполне возможно, что он ни при чем. SimpleResize принимает только четные размеры конечной картинки.

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

Даже при однократном переводе из RGB в YV12 портятся цвета, в частности сильно падает насыщенность. Что можно сделать? Как вы решаете эту проблему в SVP?

154 (edited by Ghostlamer 24-05-2015 19:26:05)

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

Даже при однократном переводе из RGB в YV12 портятся цвета, в частности сильно падает насыщенность.

Изначально YV12 или RGB?, если YUV то можно многократно шаманить YV12 в RGB и назад, на глаз практически не ухудшится, что и делают(например для монтажного софта типо Sony Vegas) большинство lossless кодеков YV12.
Не устраивает результат в YV12, оставляйте в RGB и кодируйте в нём, ну или на худой конец в YV24, по сравнению с RGB - потеря минимальная.
Может у вас YV12, который декодируется как RGB?.

ВиртуалДаб автоматически ставит чтение в yuv12

Даб не всегда так делает(в авто режиме), зависит от того что подаёшь, если скрипт avisynth то yv12, если какой-нибудь lossless avi в YUV, то скорей всего RGB и т.д..

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

Ghostlamer
Не устраивает результат в YV12, оставляйте в RGB и кодируйте в нём, ну или на худой конец в YV24, по сравнению с RGB - потеря минимальная.

Я бы рад, но в начале того же скрипта dropfix стоит ConvertToYV12().

Ghostlamer
если какой-нибудь lossless avi в YUV, то скорей всего RGB и т.д..

Как RGB может быть одновременно YUV?

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

Как RGB может быть одновременно YUV?

Никак, это апконверт, который делают YUV lossless кодеки для совместимости с видеоредакторами и прочим.

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

2MAG79
Применяя GameDropFix_v4 (приведеный Вами 25-10-2013) и, естественно, добавив mvtools2 и mt_masktools-26, получил ошибку скрипта "unable to unit GPU-based renderer  - code255". У меня комп на базе е3 (интегрированная GPU в CPU). Не подскажите ли где подправить GameDropFix_v4 ? Спасибо.

158

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

GameDropFix v5

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

MAG79 wrote:

GameDropFix v5

Спасибо за ссылку на последнюю версию GameDropFix v5. Но ошибка осталась. Простой скрипт (по примерам) :

SetMTMode(3)
Import("avss.avsi")
import ("D:\AviSynth\SVP\GameDropFixV5.avsi")
LoadPlugin("D:\AviSynth\SVP\svpflow1.dll")
LoadPlugin("D:\AviSynth\SVP\svpflow2.dll")
LoadPlugin("D:\AviSynth\SVP\mvtools2.dll")
LoadPlugin("D:\AviSynth\SVP\masktools2.dll")
LoadPlugin("D:\AviSynth\Plugins\avss.dll")

DirectShowSource2("D:\leha\IMG_1282.MOV").converttoyv12.trim(100,0).trim(0,2000)

SetMTMode(2)

GameDropFixV5()
Distributor()

Дает ту же ошибку что и ранше (см. предыдущий пост) в строке GameDropFixV5.avsi (выделена красным)

setmtmode(2)

super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
fix_all = SVSmoothFps(super, vectors, smoothfps_params, mt=GetMTMode(true), url="www.svp-team.com")

SetMTMode(1)

Это что-то с многопотоковостью ?
Спасибо.

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

2MAG79
Уффф... Разобрался (вроде бы). В скрипте установил параиетр :
GameDropFixV5(myGPU = false)
Ошибка пропала smile
Спасибо

161 (edited by deniskx 24-06-2016 22:07:16)

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

А с какими настройками качества рендеринга кадров работает скрипт? Подозреваю, что с дефолтными. Есть (720x576) 29,97 fps видео (реально 20 fps + дропы) пускаю через скрипт, чтобы получились полноценные 29,97 fps. Плавность после скрипта меня в общем-то устраивает, но на сложных сценах появляются артефакты рендеринга. Например когда люди на фоне жалюзи эти жалюзи смазываются и прилипают к людям или движение вокруг множества объектов (цветов, всяких предметов) смазываются как джпеговские артефакты порождая грязь. А при 60 fps еще хуже. Я с SVP раньше дела не имел, но неужели она так работает?
Использовал GameDropFixV5, XviD4PSP 5, сам SVP не установлен. Похоже используется софтовая обработка, потому что что с myGPU true и false скорость одинаковая 0,35x. Хотя видеокарта в списке поддерживаемых GTX 560. Win7 x64 Core2Duo.
Я так понимаю у SVP есть профили тяжести, которые представляют собой особый набор настроек. По типу как x264 имеет пресеты medium, slow, slower, но есть еще сами настройки. И в скрипте можно как-то указать, но только отдельные настройки вручную https://www.svp-team.com/wiki/Plugins:_SVPflow и надо еще знать какие и как настроить. Почитав описание, я так понял что нужно указывать в файле GameDropFixV5.avsi
в раздел
super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
А может еще туда, где params

Не могли бы вы поделиться более тяжелыми и качественными настройками? Потому что то, что сейчас выдает скрипт в плане рендеринга назвать качественным нельзя. Или может, если задействовать видеокарту, качество будет лучше?
Могу выложить сэмпл проблемных мест.

162

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

deniskx
1. Вы правы, если задействовать видеокарту качество будет лучше.
2. Вы правы, параметры качества указываются в скрипте в строках "super_params=" и "analyse_params=" и "smoothfps_params=".
С этими настройками можно поэкспериментировать, чтобы получить требуемую картинку.
Настройки по-умолчанию выбраны для общего случая, когда требуется оптимальное соотношение скорости и качества.

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

А как узнать, что видеокарта задействуется? Если скрипт отрабатывает без ошибок с gpu=true, значит аппаратное ускорение есть?
Ну судя по всему видеокарта используется. Я проверил правда на скрипте простого уплавнения InterFrame2 20>30 fps на CPU скорость 1x, на GPU 0,6x. То есть получается с видеокартой медленнее. И как ни странно артефактов даже больше. То есть разница есть, но в худшую сторону. А в целом артефактов много и на CPU и на GPU. Я говорю, конечно, о сложных сценах, например, где люди на фоне жалюзи.
Правда исходник изначально с низкой четкостью, VHSRip, хоть и почищен от шумов. Может быть на чистой HD картинке результат был бы получше.

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

Можно как-нибудь увеличить чувствительность скрипта? У меня есть видео 624x352 23,976 fps, где после каждых 3 кадров идет 1 дроп/дубль. Скрипт отрабатывает только на сценах, где много движения, а там, где мало, дропы остаются и это заметно. Залил Сэмпл. Посмотрите, пожалуйста.

Частично удалось повысить определяемость дропов предварительным ресайзом до 1280x720. К примеру на 50 секунде, когда мужик появляется, все кадры восстановлены (в отличии от 624x352), но все равно слабодинамичные сцены не определяются и остаются дропы, хоть уже и в меньшей степени.
Может есть какие-нибудь настройки в самом скрипте. Использую 5 версию.

165

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

deniskx
как узнать, что видеокарта задействуется? Если скрипт отрабатывает без ошибок с gpu=true, значит аппаратное ускорение есть?
да

Может быть на чистой HD картинке результат был бы получше.
тоже да

andeyut
Интересное видео. 23,976 к/сек, но при этом каждый 4-ый кадр - дроп. Как так могло получиться?
Насчет настроек - да, все настраивается. Покручу это видео, по результатам отпишусь.

166 (edited by andeyut 28-08-2016 19:33:13)

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

MAG79 wrote:

Как так могло получиться?

Остается только догадываться, раздающий накосячил. Может IVTC неправильно настроил или фильтр вроде TDecimate не к месту применил. Я скачал этот рип с зарубежного трекера. А больше этот фильм нигде не скачать. То есть есть еще один торрент, где как сообщается, с fps все нормально, но полного источника нет, качается только 55%. Так что пока единственный вариант.

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

167 (edited by tracker35 28-08-2016 20:04:25)

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

Для данного семпла необходимо составить скрипт, который удаляет данный дубль-кадр, заменяя его предыдущим, тогда gamedropfix подхватит такие (не перекодированные) кадры.

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

tracker35 wrote:

Для данного семпла необходимо составить скрипт, который удаляет данный дубль-кадр, заменяя его предыдущим, тогда gamedropfix подхватит такие (не перекодированные) кадры.

Не очень понял о чем речь. Ведь дубль и так копия предыдущего кадра.

169 (edited by tracker35 29-08-2016 09:52:09)

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

В данном случае нет. т.к. в результате перекодирования дубль кадры стали не дубль кадрами. Это видно если смотреть по стоп-кадру, существуют микро-изменения в структуре.
Из-за этих микро-изменений в менее динамичных сценах, gamedropfix распознаёт их полноценными кадрами.

А чтобы они были полноценными дублями, их необходимо повторно сделать дублями, в этом случаее gamedropfix сработает в 99.99% (кроме ну ооочень медленных сцен).
А в некоторых случаях, когда дубль-кадры являются неотъемлемой частью видеоряда, наоборот перестараться.

Планку по замене можно было-бы поднять до 100% (и без перестараний), если бы gamedropfix умел использовать таймкоды, тогда данный поток необходимо былобы переводить в VFR... (но это уже другая история)

170 (edited by Bars 29-08-2016 11:38:48)

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

MAG79 wrote:

23,976 к/сек, но при этом каждый 4-ый кадр - дроп. Как так могло получиться?

Мне подобное видео уже попадалось несколько раз и как-то даже удалось найти и ознакомиться с исходником, сравнение с которым подтвердило мои догадки: как ни странно, но такое кривое видео получают из вполне стандартных случаев (29,970fps в которых все кадры уже прогрессивные и просто каждый 5-й кадр-дубль, либо опять-таки 29,970fps, в которых после этапа объединения полукадров, тоже получается каждый 5-й кадр-дубль) вследствие использования простого понижения fps (вместо использования алгоритма анализа кадров для поиска и выбрасывания именно дублей), которое просто выбрасывает каждый 5-й кадр (чаще всего нормальный кадр, если только случайно не совпадает, что этот кадр как раз дубль), который дублем не является, что дает из исходных (4+1) кадров, соответственно, (3+1) кадров (3 нормальных +1 дубль).

171 (edited by andeyut 29-08-2016 14:25:34)

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

tracker35 wrote:

существуют микро-изменения в структуре
необходимо составить скрипт, который удаляет данный дубль-кадр, заменяя его предыдущим


TDecimate(cycleR=1, cycle=4)
ChangeFPS(23.976)

Разницы особой нет, в слабодинамичных сценах по прежнему дубли.

Думаю дело в том, что картинка чистая и движение в кадре только в небольшой области. Как-то я пропускал шумное и артефачное видео с периодическими дублями через GameDropFix и он нормально справился, а сейчас не хочет. И добавление искусственного шума перед ChangeFPS ничего не меняет, наверное GameDropFix опирается еще на какие-то флуктуации.

Bars wrote:

29,970fps в которых все кадры уже прогрессивные и просто каждый 5-й кадр-дубль

То есть 4 прогрессивных кадра (23.976) + левый 5 кадр = 29.97. Такое TDecimate с дефолтными настройками устраняет. Но люди используют что попало. Иногда только ради того, чтобы на трекере "сомнительно" не поставили  пытаются сделать стандартный fps, но с рывкотней.

Bars wrote:

после этапа объединения полукадров, тоже получается каждый 5-й кадр-дубль

После деинтерлейса хардтелесиненного видео получится точнее 3+2. 3 прогрессивных кадра и 2 бленда. Здесь уже надо было делать IVTC.

172 (edited by Bars 29-08-2016 14:41:32)

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

andeyut wrote:
Bars wrote:

после этапа объединения полукадров, тоже получается каждый 5-й кадр-дубль

После деинтерлейса хардтелесиненного видео получится точнее 3+2. 3 прогрессивных кадра и 2 бленда. Здесь уже надо было делать IVTC.

Я нигде не писал про применение деинтерлейса, т.к. речь изначально не об интерелейсном, а о прогрессивном видео. Под "этапом объединения полукадров", разумеется, имелся в виду любой способ, позволяющий собрать исходные прогрессивные кадры из полукадров.

173 (edited by andeyut 29-08-2016 16:28:45)

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

Bars wrote:

которое просто выбрасывает каждый 5-й кадр чаще всего нормальный кадр

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

PPPPDPPPPDPPPPDPPPPDPPPPD (P - обычный кадр, D - дубль)

выбрасываются первые назовем их p кадры

pPPPDpPPPDpPPPDpPPPDpPPPD

для наглядности представим это как

PPPDpPPPDpPPPDpPPPDpPPPDp
PPPD-PPPD-PPPD-PPPD-PPPD- (- отсутствие кадра)
D- это дубль и пропуск. Вместо - должен быть четвертый полноценный кадр, но его вырезали, а вместо него остался дубль третьего кадра (по текущей нумерации). Дубль стал дроподублем.
Казалось бы совсем близко был алгоритм от правильного удаления. Если бы вырезался из PPPPD четвертый P, то его бы заменил D (D=P4). Или, конечно, если бы сразу удалялся D. В общем очень не повезло.
А с другой стороны хорошо, что хотя бы из середины PPPP цепочки кадр не удалялся, это был бы недетектируемый пропуск вообще. Были бы дубли, еще и с пропусками.

Bars wrote:

о прогрессивном видео

29.97p в кинофильмах не бывает. Я имел в виду кинофильмы. Там 29.97 означает 23.976+hard telecine (3 прогрессивных, 2 интерлейсных кадра) и прочие извращения. В сериалах, клипах, там могут быть и честные 29.97.

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

По поводу кривизны релизеров. Попался мне один релиз на рутрекере, проверенный, между прочим, хоть и старый, 23.976, примерно каждую секунду голый пропуск, не дубль, а просто проскок. Релизер сам признался, что кодил из PAL-а и сам вручную поменял fps (простым выкидыванием 25 кадра). Мол человек не замечает разницы между 25 и 23.976. А звук закодил 6 каналов в 192 kbps. И самое страшное, там еще несколько рипов с 23.976, но с паловской продолжительностью. Вот и откуда такие берутся. Впрочем наши издатели тоже порой фигню делают, что с видео, что со звуком.

Так вот, если бы он кодил 25>24, можно было бы искусственно воссоздать дубли changefps(25), чтобы GameDropFix построил на их месте кадры, но 25>23.976 интервалы неравномерные - замучаешься подгонять. Правильнее всего, конечно, найти нормальный исходник.

MAG79 Не посмотрели еще чувствительность скрипта? Я все жду, откладываю кодирование и просмотр. А может и фильм то не стоит того, посмотрю, наверное, так.

175

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

andeyut
Прошу прощения, был немного занят. Спасибо за напоминание, покрутил видео, собрал скрипт в редакторе AvsPmod.
Вот такой скрипт у меня получился на скорую руку:

setMtMode(5,4)
AviSource("sample.avi")
setMtMode(2)
myGPU = true
threads=4
super_params = (myGPU==true) ? "{gpu:1}" : "{gpu:0}"
analyse_params="{main:{search:{coarse:{distance:4,bad:{sad:2000}},type:2,distance:4},penalty:{lambda:1,pglobal:10000}},refine:[{thsad:65000}]}"
smoothfps_params="{rate:{num:2,den:1},algo:13,scene:{blend:true}}"

orig = last

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

f0 = SelectEvery(orig, 4, 0)
f1fix = SelectEvery(fix_all, 8, 3).subtitle("fix")
f2 = SelectEvery(orig, 4, 2)
f3 = SelectEvery(orig, 4, 3)

Interleave(f0, f1fix, f2, f3)
Distributor()

Что он делает. В видео присутствуют регулярные пропущенные кадры, начиная с позиции 1 и встречаются с шагом 4. Т.е. кадры-дубли: 1, 5, 9 и т.д.
Скрипт выделяет в клипы кадры для кадой чертверки: f0, f2, f3
Клип f1fix строится из промежуточных кадров между исходными f1 и f2.
Результат собирается из четверок кадров f0, f1fix, f2, f3

Т.е. никакого анализа движений и поиска дропов, а просто безусловная замена каждого 4-го кадра.

Если есть вопросы - готов ответить.