1 (edited by nemoW 09-06-2019 17:49:25)

Topic: Пользовательские параметры (User defined options) - как добавить?

Добрый день.
Иногда попадаются ролики, где в 29,97 зашито 23,976 видео, т.е. каждый пятый кадр повторяется.
Это легко исправляется (хотя я долго тупил и искал это решение) простой командой tdecimate() в Avisynth.
Действие tdecimate проверено следующим скриптом в ffdshow_raw:

SetFilterMTMode("ffdshow_source",3)
ffdshow_source()
tdecimate()
prefetch(4)

Вопрос - как это вкрячить в SVP? В мануале есть страница на этот счет, но при замене в generate.js

    if(profile.fi_duplicates===1)
    {
        smooth.rate.num*=2;
        AVS.push("SelectEvery(2,0)");
        AVS.push("");
    }

на

    if(profile.30_to_25===1)
    {
        smooth.rate.num*=1.25;
        AVS.push("tdecimate()");
        AVS.push("");
    }

В логе вываливает ошибку:

20:45:04.595 [i]: Script: script file changed C:\Program Files (x86)\SVP 4\script\generate.js
20:45:04.597 [E]: Script: generate.js:320 - SyntaxError: Expected token `,'
20:45:04.598 [i]: Profile: using auto values [1]
20:45:04.598 [E]: Script: is in invalid state

Как сделать правильно?

2 (edited by nemoW 09-06-2019 17:56:32)

Re: Пользовательские параметры (User defined options) - как добавить?

Ой блин я тупой, там же запятая нужна.
Ща проверю...
UPD: что-то не работает все равно, хотя в панели управления включено.

Re: Пользовательские параметры (User defined options) - как добавить?

есть мнение что "30_to_25" это плохое название для переменной
оно не может с цифры начинаться

Re: Пользовательские параметры (User defined options) - как добавить?

Буквально вчера смотрел лаговое видео из-за 24 в 30 кадрах. Всегда интересовало, а как так получается, что скрипт именно кадры дубликаты выбрасывает лишние? Или там другая методика исправления?

5 (edited by Nurk 09-06-2019 22:24:02)

Re: Пользовательские параметры (User defined options) - как добавить?

James D wrote:

Буквально вчера смотрел лаговое видео из-за 24 в 30 кадрах. Всегда интересовало, а как так получается, что скрипт именно кадры дубликаты выбрасывает лишние? Или там другая методика исправления?

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

Re: Пользовательские параметры (User defined options) - как добавить?

James D wrote:

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

Логика работы TDecimate проста: Из последовательности кадров брать порции по N=5 кадров и убирать из них M=1 кадров наименее отличающийся от предыдущего кадра.

Nurk wrote:

где-то убирает дубли, где-то нет, пока не понял, как сделать универсально

Если кадр-дубль "плавает" и встечается не всегда через каждые 4 кадра, то надо увеличивать интервал и число дублей в нем. Т.е. вместо N=5, M=1 использовать N=30 M=6.

7 (edited by Nurk 10-06-2019 10:08:30)

Re: Пользовательские параметры (User defined options) - как добавить?

MAG79 wrote:
James D wrote:

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

Логика работы TDecimate проста: Из последовательности кадров брать порции по N=5 кадров и убирать из них M=1 кадров наименее отличающийся от предыдущего кадра.

Nurk wrote:

где-то убирает дубли, где-то нет, пока не понял, как сделать универсально

Если кадр-дубль "плавает" и встечается не всегда через каждые 4 кадра, то надо увеличивать интервал и число дублей в нем. Т.е. вместо N=5, M=1 использовать N=30 M=6.

а для чего там стоят настройки:
chroma - Sets whether or not chroma is considered when calculating frame difference metrics. Setting this to false can give a speed up... it a quality vs speed setting (though in some cases setting chroma=false can improve operation).
blockx - Sets the x-axis size of the blocks used for metric calculations.  Larger blocks give better noise suppression, but also give worse detection of small movements. Possible values are any power of 2 from 4 up to 2048 (4, 8, 16, 32, ... 2048).
мне кажется там все-таки происходит анализ "схожести" кадров

Re: Пользовательские параметры (User defined options) - как добавить?

Так и есть. Происходит анализ "схожести" кадров.
Двух соседних кадров. Всех попарно из N-штук. Результат анализа = цифра схожести. Кадры с наименьшей цифрой удаляются. M штук.

9 (edited by nemoW 10-06-2019 17:14:22)

Re: Пользовательские параметры (User defined options) - как добавить?

MAG79 wrote:
Nurk wrote:

где-то убирает дубли, где-то нет, пока не понял, как сделать универсально

Если кадр-дубль "плавает" и встечается не всегда через каждые 4 кадра, то надо увеличивать интервал и число дублей в нем. Т.е. вместо N=5, M=1 использовать N=30 M=6.

TDecimate в ffdshow_raw работает неправильно, если Ahead buffer < N*2.6 (ну, или около того). Это легко заметить, если включить display=true.

Re: Пользовательские параметры (User defined options) - как добавить?

Chainik wrote:

есть мнение что "30_to_25" это плохое название для переменной
оно не может с цифры начинаться

Поменял название переменной на tdecim, но конструкция

    if(profile.tdecim===1)
    {
        smooth.rate.num*=2;
        AVS.push("tdecimate(display=true)");
        AVS.push("");
    }

все равно не работает, хотя в профиле стоит включено. Прописал вместо этого тупо

         AVS.push("tdecimate(display=true)");

Тогда работает, но необходимо ещё вручную увеличивать Ahead buffer до 22 кадров.

Re: Пользовательские параметры (User defined options) - как добавить?

Потому что копировать из мануала надо так, как написано, а не отсебятину (если не понимаешь смысла wink)
> if(profile.tdecim) {...}

а не "===1"

для справки - "A===1" означает "A в точности равно 1"
а у тебя задано, что твоя переменная принимает значения true или false
"true" НЕ РАВНО "1"

ну и "smooth.rate.num*=2" я бы таки убрал

12 (edited by nemoW 10-06-2019 21:10:17)

Re: Пользовательские параметры (User defined options) - как добавить?

"true" НЕ РАВНО "1"

Мда, с программированием у меня плохо. sad Вот теперь всё заработало, спасибо (ещё frc.prefetch.ff_mul = 2 выставил в настройках).

ну и "smooth.rate.num*=2" я бы таки убрал

У меня в начальном варианте было smooth.rate.num*=1,25 - но это, видимо тоже неправильно, т.к. при проигрывании с tdecimate все равно индекс 0.8 показывает. Тут что-то исправлять надо?

Re: Пользовательские параметры (User defined options) - как добавить?

> У меня в начальном варианте было smooth.rate.num*=1,25 - но это, видимо тоже неправильно

они целые числа
лучше просто написать
smooth.rate.num=5; smooth.rate.den=2;
и не напрягаться smile

Re: Пользовательские параметры (User defined options) - как добавить?

Ок. Можно в Utilities добавить пункт TDecimate с N=30 M=6?

Re: Пользовательские параметры (User defined options) - как добавить?

James D wrote:

в Utilities добавить пункт TDecimate с N=30 M=6?

Во-первых, N=30, M=6 было для примера. Обычно N=5 M=1 достаточно.
Во-вторых, нужно ли это в SVP, если использовать будут два человека, один из которых James D? wink

Re: Пользовательские параметры (User defined options) - как добавить?

MAG79 wrote:
James D wrote:

в Utilities добавить пункт TDecimate с N=30 M=6?

Во-первых, N=30, M=6 было для примера. Обычно N=5 M=1 достаточно.
Во-вторых, нужно ли это в SVP, если использовать будут два человека, один из которых James D? wink

конечно нужно SVP 4 Pro Special For Jame D Edition

Re: Пользовательские параметры (User defined options) - как добавить?

James D
>  Можно в Utilities добавить пункт TDecimate с N=30 M=6

Можно. Добавь. wink

Post's attachments

jamesd.png, 78.67 kb, 370 x 318
jamesd.png 78.67 kb, 43 downloads since 2019-06-11 

18 (edited by nemoW 11-06-2019 21:11:52)

Re: Пользовательские параметры (User defined options) - как добавить?

Не верится, что такие видео попадались только мне с James D. Возможно, обычные пользователи просто не замечали неравномерности.
Мне-то [теперь, благодаря разжёвыванию от Chainik] несложно включить правильную настройку, но я ещё помечтаю: было бы здорово, если бы SVP сам умел работать с такими видео, типа: "Псс, чувак, да у тебя в видео каждые N кадров повторяются. Давай я их выкину, ещё плавнее будет!"big_smile

Re: Пользовательские параметры (User defined options) - как добавить?

Chainik wrote:

James D
>  Можно в Utilities добавить пункт TDecimate с N=30 M=6

Можно. Добавь. wink

Меня всегда останавливала просьба-предостережение не менять ничего если не разбираешься) Но спасибо, почитал и выставил.