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

Может я не всё ещё прочитал и недостаточно вник - прошу прощения.
Есть фрапс с игры (игровое видео) с разрешением 1680х1050, который местами очень проседает по фпс, что особенно бросается в глаза когда к некоторым сценам применяется эффект замедления в Adobe Ptemiere - получается слайд шоу почти что. Пытался исправить ситуацию с помощью перекодирования исходного материала с уплавнением, делал всё строго по рецепту и с помощью MeGUI и через VirtualDUB, но результат не только куча артефактов, особенно режущих глаз когда фигурка персонажа бежит по однотонному зеленому полю например (ну и в динамичных сценах), но и то, что, такое впечатление, что несмотря на то, что в инфо о файле, тот же медиаинфо пишет 60 фпс, плавность после перекодировки с уплавнением явно становиться еще хуже, чем была, и это показывает тот же фрапс, хотя и на глаз видно. То есть я хочу сказать, что вместо улучшения видео, я на выходе получаю вообще какой-то шлак как в отношении качества картинки, так и в отношении плавности.
Пробовал перекодировать исходный файл в меньшее разрешение - что очень не хочется делать - 1280х720, а потом еще раз перекодировать, но уже с уплавнением, в этом случае всё вроде бы работает, картинка вроде бы хуже не становится (впрочем хуже она стала уже после перегонки в меньшее разрешение) и фпс действительно вырастает, хотя судя по тому же фрапсу кол-во кадров в секунду опять же не соответствует тому, что пишет медиаинфо, да и не видно "на глаз" улучшения от уплавнения - может к изначально сгенерированному программой видео, каким является игра, это "улучшение" вообще не подходит и ничего не меняет?. Но меня изначально не устраивает меньшее разрешение, вот в чем дело, так как в случае с игровым видео это уже существенное ухудшение качества картинки, размывается текст, мелкие детали, картинка темнеет и т.д.
Возможно причина в моей древней и слабой видеокарте - Radion X1950GT (была 4850, но сгорела), процессор - C2D E8400 3000Мгц, но я так думал, что перекодирование с уплавнением это как раз таки мой случай - в настройках кодека ставлю всегда слоу или даже вери слоу - ан нет: результат - шлак. Может я что-то не понимаю, подскажите пожалуйста что я делаю не так.

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

tipsydead
Все верно написано.

местами очень проседает по фпс
Вот в этом подвох. Это означает, что в целом в видеофайле каждый кадр содержит движение, но есть выпавшие кадры (drop'ы). Такое видео надо сперва обработать специальным алгоритмом восстановления пропущенных кадров.

Далее уже по обстановке, если частота видео недостаточна, то применить SVP.

Было бы здорово, если бы Вы выложили кусок такого видео с характерным местом, где есть проседание FPS.

---
Насчет воспроизведения 60 fps - это отдельный разговор. Даже мощные системы, но неверно настроенные, не в состоянии отображать 1080p 60fps без рывков. Причина в особенностях синхронизации картинки в Windows. Это исправляется. Вашей системы достаточно, чтобы тянуть такое видео и отображать без дропов. Для этого надо использовать отрисовщик madVR, либо EVR Custom Pres + D3D Fullscreen.

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

MAG79 спасибо за столь быстрый ответ: я вообще-то долго не решался написать, так как не хотел "раздражать" атцов глупыми вопросами про то что "уже давно разжёванно в предыдущих постах", хотя и считал себя достаточно продвинутым пользователем до определенного момента...
Я тут попытался вырезать кусочек видео, где этот самый фпс проседает, но тут начались какие-то необъяснимые для меня чудеса. Дело в том, что я изначально сжал огромные видеофайлы фрапса с помощью h.264 кодека (который все рекомендуют) и программы Movavi до приемлемых для хранения размеров и вот сейчас при попытке вырезать кусочек из файла с расширением mp4 у меня крашится и виртуалдуб и автареффект (ничего другого на данный момент для обрезки  в системе нет), но самое интересное, что когда я с помощью того же Movavi перегоняю файл в avi - подозревая что проблема краша в формате файла (ну по крайней мере это касается виртуалдуба) - и начинаю просматривать "проблемный" отрезок перед тем как его вырезать и отправить для "анализа", я вдруг вижу, что в том месте где проседал фпс - а это была всегда резкая смена окружающей обстановки, когда открываются ворота и персонаж выбегает на зеленую арену из бокса - теперь проседания уже нет! Там где шло слайд шоу в 3-4 фпс  2-3 секунды, теперь 30 кадров в секунду и по фрапсу и по ощущениям - уплавнения с помощью SVP не производилось это понятно. Я уже хз чё думать... Во всём виноват не тот кодек для сжатия чтоли? Уплавнять avi-вариант не пробовал, вот сразу же рапортую.
К сожалению оригинального несжатого фрапса не сохранилось, но я точно помню, что когда пытался редактировать изначальный несжатый материал в Адоб премьере и применял эффект замедления как раз в том моменте как персонаж (девушка) выбегает с кувалдой на зеленое поле арены плавно помахивая бёдрами - вот это самое "помахивание" (на которое я и хотел обратить внимание зрителей применив эффект замедления) получалось совсем не плавным , что и послужило для меня одним из главных стимулов обратиться на поиски какого-нибудь уплавнителя, который вставил бы на место недостающие кадры...

В общем выходит так, что то видео, где некоторые участки "проседают" (или это выходит проблема воспроизведения?) я вырезать и показать по техническим причинам - краш программ-редакторов - не могу , а то видео которое программы не крашит (с расширением avi а не mp4) - в данных участках "проблемных" уже как бы и не проседает, хотя на несжатом оригинале проседало. Вот такие пироги...  Но уплавнение всё равно нужно - 30 фпс это мало и особенно меня интересует качество сцен где применяется замедление - как этого добиться?

>

Такое видео надо сперва обработать специальным алгоритмом восстановления пропущенных кадров.

    А какой это алгоритм не подскажете?

>

Для этого надо использовать отрисовщик madVR

   При воспроизведении у меня в трее появляется значок madVR, то есть эта прога используется, но для чего она и как её настроить правильно я не совсем пока понимаю, сори. Подскажите плз.

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

tipsydead
алгоритм не подскажете?
Подскажу. Изначально это был скрипт filldrops (тут и тут).

В SVP 1.1 - 2.0.7 был его родственник, скрипт DropFix "Заменить выпавшие кадры" такого вида:

sc=MSuper(pel=1)
vf=MAnalyse(sc,isb=false)
vb=MAnalyse(sc,isb=true)
global filldrops_d = MFlowInter(sc,vb,vf,time=50).SubTitle("DropFix", size=12, align=3)
global filldrops_c = last
global MaxDifInDoubleFrames = 1.6
last.scriptclip("ydifferencefromprevious()>MaxDifInDoubleFrames ? filldrops_c
\ : trim(1,0).ydifferencefromprevious()>MaxDifInDoubleFrames ? filldrops_d : filldrops_c")

Скрипт интерполирует одиночные кадры-дропы, оставляя нетронутыми группы по два и более дропов. Восстановленные кадры для отладки подписывает "DropFix"

madVR... как её настроить
При воспроизведении раскрыть на весь экран и нажать Ctrl-J, если увидите в верхней строке "Exclusive mode", то все уже настроено. Понаблюдайте за значением в строчке dropped frames. Должно быть 0.
При воспроизведении в окне возможны дропы, т.к. Exclusive работает только на полный экран.

---
уплавнение всё равно нужно - 30 фпс это мало и особенно меня интересует качество сцен где применяется замедление - как этого добиться?
Я не вижу самого файла с готовым замедлением, поэтому вслепую могу только предполагать.
Если замедление сделано грамотно, то каждый кадр содержит движение и тут достаточно будет применить SVP.
Если замедление сделано с повторением кадров, то поможет проход по видео алгоритмом DropFix, а затем повышение плавности SVP.
Если замедление сделано со смешиванием кадров, то тут уже ничего не поможет. Нужен незамедленный исходник и замедлять его сразу с повышением плавности.

---
Насчет файлика - можно и целиком. У меня толстый канал, скачаю, вырежу. Как вариант - создать торрент-файл и кинуть мне в почту, а видео выставить в uTorrent'е .

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

Вот файл с видео для примера - с чем я имею дело.
В очередной раз просмотрел перед отправкой: теперь когда я по вашему совету нажимаю Ctrl+J и на экран с видео выводится инфо madVR видео прогирывается значительно лучше (речь идет о видео, к которому перекодирование с уплавнением не применялось - просто сжатое H.264 кодеком исходное видео), почти без проседаний по фпс, дропы есть, но мало, но это когда в полноэкранном режиме работает Exclusive mode, а в оконном, когда madVR пишет "windowed mode" всё печально, куча дропов (по сравнению с exclusive mode), причем особенно раздражает и как-то охлаждает энтузиазм тот  факт, что столь много как оказалось зависит именно от особенностей режима воспроизведения материала. Я до сего момента, пока вы не обратили на это моё внимание, всегда думал, что все дело и соответственно все проблемы, если таковые присутствуют, в материале - я считал что практически любой нынешний компьютер способен воспроизвести любое видео без проблем в любом режиме оконном или полноэкранном - любом и никогда не лазил в настройках воспроизведения проигрывателя или тем более рендера и поч., а выходит что и материал может быть хороший, но там какие-то рендеры-отрисовщики не справляются, не тот режим воспроизведения выбран или еще какое порно и вот отличный (допустим) материал, над которым ты корпел не одну неделю превращается на экране другого человека - который не просто не знает, а знать не желает о всяких там madVR, отрисовщиках, рендерах-сплиттерах и прочем - вот этот выстраданный материал на перекодировку редактирование монтаж включение эффектов ушло уйма времени и сил превращается из-за проблем с воспроизведением в какой-то дергающийся смазанный шлак. То есть как я понимаю вместе с самим видео надо прилагать еще и инструкцию как правильно его смотреть (с которой тебя и твоё видео пошлют подальше) - или я неправильно понимаю?

Огромное спасибо за советы и указания по поводу замедления, но мне не совсем ясно, что значит

замедление сделано грамотно

, так как в моём случае речь идет не о скриптах своих или позаимствованных для ависинта к примеру, а о встроенной в редактор замедлялке: как эта встроенная замелялка сработает так и будет, все мои действия сводятся к выбору отрезка и уровня замедления. Если вы мне подскажите - дадите чёткую инструкцию-рецепт - как сделать грамотно, я так и сделаю, а пока  - только встроенные в редактор видео средства.

У меня ход мыслей по поводу "улучшения" моего видео был крайне простым (понятно из-за поверхностности моих представлений о предмете): уплавнить исходное видео 30фпс> 60фпс, а потом уже совершить всё те же операции по замедлению некоторых участков в редакторе - всё. Но хочу обратить ваше внимание, что как я и сообщал в первом посте проблемы у меня возникают уже на первом и казалось бы самом простом этапе - перекодирование исходного материала с уплавнением - результат которого на выходе - шлак. Как я вас понимаю, если я правильно понимаю, вы хотите сказать что проблема не в самом перекодированном с уплавнением файле, а в воспроизведении этого файла и надо применять правильный и правильно работающий отрисовщик. Хорошо я понял, но у меня возникает тупой вопрос, а сможет ли человек без проблем, то есть просто запустив файл, посмотреть наконец-то с после продолжительных камланий созданное мною видео? Или мне так же прийдется ему объяснять: "послушай старичок тут такое дело надо тебе отрисовщик madVR обязательно применить и только строго в полноэкранном режиме смотреть, а то нифика не выйдет"? Или может я что-то не понимаю?

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

tipsydead
Поглядел приложенный файл. Частота кадров в этом видео 29.9998 (так сообщает утилита mkv2fvr). Частота кадров постоянная. Это хорошо. У меня на Core i5-3570K+HD4000 без подергиваний этот файл проигрывается только на отрисовщике EVR Custom + D3D Fullscreen. На madVR подергивания. Хотя по статистике дропов нет. Проверяется равномерностью движения полоски теста дрожания (Ctrl-Win-T).

К сожалению, в файле нет мест с обещанным замедлением.

---
Насчет замедления см. статью "Замедление видео".
Правильное замедление - это с компенсацией движения.

как эта встроенная замелялка сработает так и будет
Смотря какой редактор? и как называется "замедлялка"?

---
Насчет ПК как ужаснейшего плеера - все верно.
Проблемы есть везде: и в материале, и в железе, и в софте. Если было бы все легко и без проблем, то не было бы веток обсуждения:
Как задействовать аппаратное ускорение (HWA) декодирования HD видео с помощью видеокарт ATI-AMD и nVidia. (часть 4)
Преобразования цветности видеоданных в компе на пути следования в ТВ или монитор
Некорректное воспроизведение видео с частотой кадров 23,976fps на медиаплеерах
и подобных.

Чтобы избежать проблем есть стандарты, следуя которым можно хоть немного гарантировать, что у другого человека это видео будет отображаться как надо.
Бытовой стандарт 1080p с частотой кадров 30 fps есть. 60 fps - увы нет. Но это в основном касается бытовых плееров.
Если говорить о комьютере, как о плеере, то из него плеер очень привиредливый. Он иногда даже стандартные видео играет ужасно. wink

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

---
сможет ли человек без проблем, то есть просто запустив файл, посмотреть наконец-то с после продолжительных камланий созданное мною видео?
Есть такая вероятность, что сможет wink
А вот гарантии, что сможет, 100%-ной нет. hmm

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

tipsydead
P.S. Покрутил видео покадрво. Видео не подходит для повышения плавности SVP. Там выпавших кадров примерно 50%. Дропы встречаются по одному через один-два кадра, иногда парами.
Компьютер, на котором делалась запись, не обеспечивает полноценного сохранения всех 30 кадров, половину пропускает. sad

8 (edited by tipsydead 23-09-2012 03:38:33)

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

MAG79 огромное вам спасибо за участие, за помощь. Признаюсь уже просто устал биться головой о стену и в попытках как-то "улучшить" качество имеющегося видео (оно дорого мне и нескольким друзьям как память о бессмыслено, но весело потраченном времени) и вердикт и пояснения такого специалиста как вы меня как-то даже успокоил - я думал это я туплю и что-то делаю не так.
Кстати по поводу большого кол-ва выпавших кадров: я это сразу заметил, но чисто "на глаз" и, собственно, вот этот неприятный факт и послужил толчком к тому, чтобы как-то исправить ситуацию с этими недостающими, выпавшими кадрами. А так как это было особенно заметно, когда я пытался сделать замедление отдельных сцен,  то я и заговорил о замедлении, хотя присмотревшись видно, что весь материал очень очень "не плавный" и буквально видно отдельные кадры при воспроизведении (монтаж я производил в Adobe Premiere CS4, в нём же делал эффект замедления, но так как качество материала в результате стало (почему-то) вообще ужасным я уничтожил весь проект и стал искать способ как-то улучшить исходный материал). Я надеялся что найду программу, которая "дорисует" (методом интерполяции типа) вот эти самые выпавшие  при захвате кадры и когда "вышел" на SVP, то подумал, что это то, что как раз и надо. Но выходит нет, такое не лечиться...

Я еще хотел спросить по поводу информации о файле - как я понял если в инфо о файле написано 30 fps, то это вовсе не значит, что там действительно будет 30 fps. Тогда какая программа может точно показать реальное количество кадров в секунду? Fraps  показывет?

Там выпавших кадров примерно 50%.


Как я понимаю вы говорите о кадрах выпавших во время захвата, тогда получается что madVR  в строчке dropped frames (так кажись) сообщает о кадрах дополнительно выпадающих уже при воспроизведении? То есть в файле уже нет половины кадров из заявленных в инфо о файле 30 в секунду, так еще и при воспроизведении часть из остатка кадров выпадает? Так?

На madVR подергивания. Хотя по статистике дропов нет.

А почему интересно madVR лучше работает в полноэкранном режиме, когда не "windowed", а "exclusive mode"? Ну по крайней мере дпропов при воспроизведении намного меньше или почти нет по сравнению с "windowed mode". В чем тут проблема и какая разница в каком режиме "отрисовывать"? И еще: почему-то когда файл проигрывается на MPC в оконном режиме Fraps показывает 30 fps, которые проседают до 12-14 fps, когда персонаж выходит из бокса на арену, а если проигрывать на Windows media player'е в том же оконном режиме Fraps  уже показывает неизменные 60fps - не понятно чему верить, вот это все здорово раздражает и сбивает с толку.

Компьютер, на котором делалась запись, не обеспечивает полноценного сохранения всех 30 кадров, половину пропускает.

Да, не обеспечивает как выяснилось,  это я увидел сразу как только просмотрел материал спустя много времени, но друго видео нет. С этим как я понял манипуляции по "улучшению" бесполезны?  Ну я там имею ввиду filldrop или это из другой оперы, то есть это только когда дропы при воспроизведении?

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

tipsydead
надеялся что найду программу, которая "дорисует" (методом интерполяции типа) вот эти самые выпавшие  при захвате кадры
Это можно. Как вариант, использовать скрипт DropFix или даже, если нужно качество, то переписать DropFix через библотеки SVP.

если в инфо о файле написано 30 fps, то это вовсе не значит, что там действительно будет 30 fps
Ну да. Точную частоту кадров для mkv и mp4 показывают утилиты mkv2vfr и mp4dump
см. обсуждения Переменная частота кадров (VFR) и SVP и YouTube и файлы с переменной частотой кадров (VFR).

madVR  в строчке dropped frames (так кажись) сообщает о кадрах дополнительно выпадающих уже при воспроизведении?
Это разные дропы. Одни - это кадры-дубли, записанные в файл. А те, что в статистике madVR - это пропущенные кадры, не отрисованные на экране.

То есть в файле уже нет половины кадров из заявленных в инфо о файле 30 в секунду, так еще и при воспроизведении часть из остатка кадров выпадает? Так?
Именно так.

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

tipsydead
почему интересно madVR лучше работает в полноэкранном режиме, когда не "windowed", а "exclusive mode"?
Ну так он и предназначен для лучшей синхронизации, этот режим "exclusive mode". Коротко на пальцах: отрисовка экрана отдается монопольно одному процессу (плееру), все остальные процессы включая проводник и рабочий стол лишаются возможности выводить что-то на экран. Это дает плееру возможность точней сонхронизироваться с синхро-сигналами экрана.

когда файл проигрывается на MPC в оконном режиме Fraps показывает 30 fps, которые проседают до 12-14 fps
если проигрывать на Windows media player'е в том же оконном режиме Fraps  уже показывает неизменные 60fps
Именно потому что отрисовка всех кадров идет на виртуальную поверхность рабочего стола, а уже оттуда собираясь и накладываясь от всех приложений попадает на экран. Каждое приложение рисует на рабочем столе со своей частотой, а рабочий стол старается отрисовываться на экране с частотой обновления экрана. Отсюда 60 fps.

друго видео нет. С этим как я понял манипуляции по "улучшению" бесполезны?
Почему же? Тот же DropFix использовать. Или, что лучше, обновить DropFix и переписать на библиотеках SVP.

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

MAG79 еще раз огромное спасибо за разъяснения - картина с вашей помощью значительно прояснилась. Буду теперь пробовать, опираясь на ваши указания и советы, еще раз что-то сделать с материалом.
Вы бы не могли что-нибудь посоветовать почитать, чтобы лучше понимать во всей этой теме с видео на ПК и вообще, сами принципы и порядок работы всех этих механизмов, так как не хочется быть совсем уж тупым исполнителем инструкций и зависать при всяком "сбое" выполнения как безмозглая железяка. К примеру, вот по поводу разницы в работе того же MPC и WMP. Как я понял из вашего ответа: WMP привязан по частоте к рабочему столу, а MPC  - нет. И вот откуда вы это знаете, а я нет? big_smile Смешно, конечно, но вот откуда это можно узнать данную информацию? Не из фундаментальных трудов же каких-нибудь академических, наполовину состоящих из программного кода приведенного для примеров? Хотя конечно, это именно глубокое понимание самих принципов работы ПК, на самых низких, скрытых от обычных пользователей уровнях, может помочь сделать правильный вывод из вот этого несоответствия в частоте обновления картинки, которую показывает Fraps при работе данных проигрывателей. Я хочу сказать, что книги для пользователей в основном, либо совсем начального уровня и из них ничего не почерпнешь (в сотый раз перечисление составляющих компьютера, видов осей, форматов и прочего - тупое перечисление без объяснения сути, принципов работы, даже без упоминания часто о них)  или узко специализированные труды, в которых так же не объясняются многие вещи, но уже по той причине, что подразумевается, что человек знает их и которые не поймешь не будучи специалистом в данной области и возникает вопрос: но как-то эти специалисты выучились же! Что же они читали до того как стали понимать все и что же они читали чтобы все это понимать? И уверен не надо быть спецом IT, знать языки программирования и пр., чтобы понимать многие и многие вещи. А книг и учебников по той или иной компьютерной тематике для не специалистов, а просто продвинутых пользователей очень мало, если они вообще есть, либо начальный уровень, либо узкоспециальные темы и слишком глубокий профессиональный уровень.

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

tipsydead
что-нибудь посоветовать почитать, чтобы лучше понимать во всей этой теме с видео на ПК
Конечно. Наглядно и понятно про видео излагает Видеогруппа MSU: Презентации видеогруппы
---
Начать можно с лекций по методам обработки и сжатия видео (выложены тоже в виде презентаций).

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

tipsydead
Интересная задачка с заменой выпавших кадров.
Специально для предоставленного клипа расширил скрипт, который теперь заменяет не только одинарные выпавшие кадры, но и группы по два выпавших кадра подряд.
Получился скрипт DoubleDropFix.avs:

DSS2("l2 2011-04-30 23-03-23-38.mp4").ConvertToYV12()
crop(600,300,640,480)
sc=MSuper(pel=1)
vf=MAnalyse(sc,isb=false)
vb=MAnalyse(sc,isb=true)
vf2=MAnalyse(sc,isb=false,delta=2)
vb2=MAnalyse(sc,isb=true,delta=2)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb2,vf2,time=33).SubTitle("Fix-33", size=12, align=3)
global frame_66 = MFlowInter(sc,vb2,vf2,time=66).SubTitle("Fix-66", size=12, align=3)
frame_66=frame_66.trim(1,1) + frame_66 
global frame_src = last
global MaxDifInDoubleFrames = 0.2
last.scriptclip("
\ ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? frame_src
\ : trim(1,0).ydifferencefromprevious()>MaxDifInDoubleFrames
\   ? (trim(1,1)+last).ydifferencefromprevious()>MaxDifInDoubleFrames
\     ? frame_50
\     : (trim(1,2)+last).ydifferencefromprevious()>MaxDifInDoubleFrames
\       ? frame_66
\       : frame_src
\   : trim(2,0).ydifferencefromprevious()>MaxDifInDoubleFrames
\     ? (trim(1,1)+last).ydifferencefromprevious()>MaxDifInDoubleFrames
\       ? frame_33
\       : frame_src
\     : frame_src")

Скрипт все еще использует библиотеку MVTools2, переделать на библиотеки SVP не сложно, но нужно время на эксперименты.

Предпросмотр результата (взят фрагмент 640x480 из середины клипа): http://yadi.sk/d/ITKMF7RJsl4a (43,5 МБ)

А вот так выглядит замена парных выпавших кадров (дропов):

http://www.svp-team.com/forum/misc.php?item=1809

Восстановленные кадры в парах подписываются "Fix-33" и "Fix-66" (одиночные - "Fix-50") согласно относительному межкадровому расстоянию в процентах.

Post's attachments

DoubleDropFix_example.gif, 386.56 kb, 640 x 480
DoubleDropFix_example.gif 386.56 kb, 1002 downloads since 2012-09-26 

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

MAG79
Восстановленные кадры в парах подписываются "Fix-33" и "Fix-66" (одиночные - "Fix-50") согласно относительному межкадровому расстоянию в процентах.

хренасе, антиалиасинг побочный эффект?
Можно такую феньку в SVP 3.1.3?

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

%username%
Можно такую феньку в SVP 3.1.3?
Почему бы и нет wink Все будет зависеть от того, как на многоядерных процессорах FullHD в реалтайме будет вытягивать и за ограничение памяти вылезать.

антиалиасинг побочный эффект?
Сила эффекта настраивается. Но в общем случае почти всегда интерполированные кадры чуть размыты по сравнению с исходными. Разумеется не везде, а только в областях, где есть движение.

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

Еще немного поработал над задачей замены выпавших кадров.

Меня не устраивала необходимость настройки скрипта под материал (варьирование значением MaxDifInDoubleFrames = 0.2). При низких значениях алгоритм пропускал дропы, а при высоком ошибочно назначал дропами кадры с медленным движением. Причем параметр приходилось настраивать не только для клипа, а даже для отдельных его сцен. Это жутко неудобно.
Поэтому я доработал скрипт. Добавил адаптивности и убрал переменную MaxDifInDoubleFrames. Теперь скрипт сам автоматически подбирает порог в зависимости от динамичности сцены. Кроме этого провел оптимизацию скорости расчетов. Вот вторая версия DoubleDropFix_v2.avs:

DSS2("l2 2011-04-30 23-03-23-38.mp4").ConvertToYV12()
crop(600,300,640,480)
sc=MSuper(pel=1)
vf=MAnalyse(sc,isb=false)
vb=MAnalyse(sc,isb=true)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb,vf,time=33).SubTitle("Fix-33", size=12, align=3).trim(1,0)
global frame_66 = MFlowInter(sc,vb,vf,time=66).SubTitle("Fix-66", size=12, align=3)
global frame_src = last
global mini=sc.crop(8,height+8*3,width/2,height/2).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
last.scriptclip("dif=mini.ydifferencefromprevious()
\ dif_next1=mini.trim(1,0).ydifferencefromprevious()
\ dif_next2=mini.trim(2,0).ydifferencefromprevious()
\ dif_prev1=(mini.trim(1,1)+mini).ydifferencefromprevious()
\ dif_prev2=(mini.trim(1,2)+mini).ydifferencefromprevious()
\ dif_nextMax=max(max(dif,dif_next1,dif_next2)/8,0.01)
\ dif_prevMax=max(max(dif,dif_prev1,dif_prev2)/8,0.01)
\ dif>min(dif_prevMax,dif_nextMax)
\ ? frame_src
\ : dif_next1>dif_nextMax
\   ? dif_prev1>dif_prevMax
\     ? frame_50
\     : dif_prev2>dif_prevMax
\       ? frame_66
\       : frame_src
\   : dif_next2>dif_nextMax
\     ? dif_prev1>dif_prevMax
\       ? frame_33
\       : frame_src
\     : frame_src")

Результат вышел близкий по размеру к предыдущему клипу. Превью 640x480: http://yadi.sk/d/zeHOQlQYtvA2 (43,7 МБ)
Надежность определения дропов значительно возросла и составляет по субъективным ощущениям выше 99%.
Предлагаю сравнить оба ролика на предмет восстановленной плавности движений.

Для удобства сравнения выложил таким же образом кадрированный до 640x480 исходный клип, чтобы можно было сравнить покадрово и не качать весь исходник.
Брать тут: http://yadi.sk/d/YQ_e5-Retyak (38,9 МБ)

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

MAG79
Почему бы и нет wink Все будет зависеть от того, как на многоядерных процессорах FullHD в реалтайме будет вытягивать и за ограничение памяти вылезать

Cкрытый параметр в ini который включает соответствующий пункт в меню. По умолчанию = выкл.

18 (edited by NightFox 28-09-2012 20:21:43)

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

MAG79, интересная штука, хотя полезная она только в редких случаях, где комп не справился. Хотя... в аниме же мы видим в потоке 25 кадров нередко 10-15, между ними по идее те же повторы. Можно было бы уплавлять и прерывистые движения в мультах, в рамках разумного конечно.
А что касается записи игр, тут наверное если комп не тянет, то записывать надо с ограничением количества кадров в секунду и комп меньше тупить будет и повторов не будет, а потом просто взять и хорошо уплавнить с сохранением в файл.

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

MAG79 Огромное спасибо за помощь и созданный скрипт! Результат отличный, вы по-сути принесли мне решение проблемы на блюдечке - я просто был вынужден оставить эту тему, так как тупо стало не до того и вот сейчас вспомнил про файлы и так и не сделанный клип на память, зашёл посмотреть и вот вижу сделанный вами скрипт и впеатляющий результат его работы. Надеюсь это пригодится не только мне.
Я к сожалению так и не нашёл в себе сил погрузиться в детали, но попытаюсь вернутся и попробовать освоить тему  с нового захода.

Как я понял, мне по-сути, на данном этапе остаётся только воспользоваться плодами вашего труда, применить скрипт, но тут загвоздка - он у меня почему-то не работает: пишет что нет таких команд. Быть может вы применяли какие-то сокращения или дело в версии ависинта? Сначала он написал что нет такой команды "DSS2". Я поменял DDS2 на DirectShowSource, но ависин тут написал что проблемы уже со второй стокой - нет такой команды как "MSuper". Тут мои скудные познания кончаются и я прошу вас помогите. Открываю скрипт через ВиртуалДаб (поменял только источник конечно и убрал строчку с обрезкой) - скрипт не работает. Что я делаю не так? Или как надо делать?

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

tipsydead
Этот скрипт предполагал использование библиотек Haali и MVTools2.

1. DSS2 - надежное точно-покадровое открытие видео от Haali, но без звуковой дорожки. Требуется плагин avss. Надо либо скопировать файл Haali\MatroskaSplitter\avss.dll в папку AviSynth 2.5\plugins\ либо указать в скрипте путь загрузки этого плагина:

LoadPlugin("C:\Program Files (x86)\Haali\MatroskaSplitter\avss.dll")

Необходимо для отладки, но для конвертирования со звуком можно пользоваться DirectShowSource.

2. MSuper вместе с MAnalyse и MFlowInter - это функции плагина MVTools2. Скачать можно с официальной страницы. Скопировать файл mvtools2.dll в папку AviSynth 2.5\plugins\ либо указать в скрипте путь загрузки этого плагина:

LoadPlugin("D:\avsPlugins\MVTools2\mvtools2.dll")

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

MAG79 Спасибо, всё получилось. Теперь осталось замедлить некоторые фрагменты. Для качественного замедления надо MVTools использовать как я понимаю, так?
Тут выяснилась одна деталь существенная - у меня именно с воспроизведением проблемы были из-за слабой карты, с дропами при воспроизведении более, нежели из-за дропов с которыми видео зафрапсилось (теперь стоит HD 7770 вместо Х1950GT и проц старый C2D E8400 до 4Ghz разогнан). Потому-то от уплавнения думаю, материал еще хуже выглядел: просто карта не тянула воспроизведение, не тянула 30 фпс, а с удвоенным фпс тем более не хотела тянуть. Там артефакты жуткие были - могло это тоже от нехватки мощности карты происходить? Теперь, с новой картой, смотрю материал и уже так глаз не режет -даже иногда вообще, не могу понять, что мне тогда не нравилось (при замедлении быть может увидел бы) - хотя безусловно лучше, когда лучше.

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

tipsydead
Для качественного замедления надо MVTools использовать как я понимаю, так?

Ну это дело творческое. Можно и MVTools. См. статью "Замедление видео".

23 (edited by Bars 15-02-2013 02:44:51)

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

MAG79
Вот вторая версия DoubleDropFix.avs:
Приветствую. Спасибо за скрипт, по сравнению с первой версией действительно уже очень-очень неплохо, находит все дропы и главное без ложных срабатываний (потестил на одном особо ужасном видео, с хаотичным разбросом дропов от одного до нескольких подряд).

Но если можно, то просьба доработать скрипт, вот пара моментов которые я обнаружил:
Семпл исходника + Перекод этого семпла с использованием DoubleDropFix.avs (второй версии):
http://sendfile.su/762179

На этом семпле:
1) Индикация Fix-33 и Fix-66 как я понял должна быть всегда в паре и только на двойных дубликатах, но она почему то есть иногда и на единичных дублях:
7 секунда 8-ой кадр - только Fix-66 (до и после Fix'ов нету, потому что только один дубль, и как я понимаю должно было быть просто Fix-50)
10 секунда 2-ой кадр - только Fix-33 (тоже единичный дубль)

2) Этот же самый кадр (Fix-33) с 10-ой секунды, получается как бы заглядывает в будущее, и состоит из смешения двух кадров.
Похоже ошибка в последовательности возникает из-за того, что расчет делается между дублем и следующим кадром (насколько я вник, тут всё правильно), а вот потом этот расчитанный кадр вставляется на место первого дубля (из пары одинаковых кадров), а для правильной хронологии кадров он должен вставляться вместо последнего кадра (в паре одинаковых кадров)

P.S. Парные дубли там дальше тоже есть, с они вроде нормально выкидываются, а на расчитанных правильная индикация Fix-33 + Fix-66

upd: Для AVI-файлов всегда использовал открытие через AVISource (и в этот раз в том числе), т.к. через DSS2 для ави получается перевернутое изображение (да и вроде как не предназначен он для avi), но сейчас решил поэкспериментировать с DSS2 (+нагуглил FlipVertical для компенсации перевёртыша) и оказалось что через DSS2 вышеописанных проблем нет...хм...можно пользоваться только через DSS2 и ничего не сделать?

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

Bars
Спасибо за отзыв. Действительно есть проблема, когда пара выпавших кадров определяется некорректно, либо определяется только один из пары кадров.
Архив скачал, погляжу.

Причина, по которой парные дубли определяются не как первый и второй (Fix-33, Fix-66), а также встречаются одиночные Fix-33 и Fix-66, заключается в том, что работает адаптивный механизм определения кадров-дублей, а за точку отсчета всегда берется текущий кадр.
dif_prevMax - максимальное отличие кадров из прошлого
dif_nextMax - максимальное отличие кадров из будущего

Можно подумать над расширением этой логики, может увеличить диапазон учета кадров вперед/назад. Сейчас просматриваются два кадра вперед и три кадра назад.

---
оказалось что через DSS2 вышеописанных проблем нет
Качество определения дублей зависит от зашумленности видео. AVISource открывает видео как есть, DSS2 открывает DS-декодером, зарегистрированным в системе. Вполне могут работать шумодавы и деблок-фильтры. Поэтому работа скрипта замены выпавших кадров изменилась.

25 (edited by Bars 15-02-2013 03:06:42)

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

MAG79 wrote:

Можно подумать над расширением этой логики, может увеличить диапазон учета кадров вперед/назад. Сейчас просматриваются два кадра вперед и три кадра назад.

С удовольствием бы потестил обновленную версию

MAG79 wrote:

Качество определения дублей зависит от зашумленности видео. AVISource открывает видео как есть, DSS2 открывает DS-декодером, зарегистрированным в системе. Вполне могут работать шумодавы и деблок-фильтры. Поэтому работа скрипта замены выпавших кадров изменилась.

Понятно. У меня там только фильтр резкости работал, я его не отключал.