|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
28-Сен-08 21:59
(16 лет 2 месяца назад)
tartak
И нифига он не удаляет - может у меня не та версия.
Можете dll скинуть?
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
29-Сен-08 04:51
(спустя 6 часов)
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
29-Сен-08 08:43
(спустя 3 часа, ред. 29-Сен-08 08:43)
Mikky72
TDecimate решил проблему (спасибо Pustovetov за наводку). А FDecimate глючит. Этот скрипт производит вполне мягкое движение, без дублей, причем 25 фпс:
Код:
source = MPEG2Source("111.d2v")
#source.FDecimate(rate = 22)
source.TDecimate(mode = 0, cycleR = 3, cycle = 25)
#ConvertFPS(25)
#MotionProtectedFPS(25)
backward_vec = source.MVAnalyse(isb = true, truemotion = true, pel = 2, idx = 1, search = 3)
forward_vec = source.MVAnalyse(isb = false, truemotion = true, pel = 2, idx = 1, search = 3)
cropped = source.crop(4, 4, -4, -4)
backward_vec2 = cropped.MVAnalyse(isb = true, truemotion = true, pel = 2, idx = 2, search = 3)
forward_vec2 = cropped.MVAnalyse(isb = false, truemotion = true, pel = 2, idx = 2, search = 3)
source.MVFlowFps2(backward_vec, forward_vec, backward_vec2, forward_vec2, num=25, idx = 1,idx2 = 2)
Плагины берем здесь (TIVTC) и здесь (MVTools)
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
29-Сен-08 09:10
(спустя 27 мин., ред. 29-Сен-08 09:10)
tartak
Спасибо, конечно. Но этот скрипт на моем сэмпле (111.mpg) вообще дублей не удалил (5,7,9 так и остались на месте в виде повторов предыдущих, 30,32,34 - аналогично и т.д.)!!!
ТIVTC 1.05
MVtools 1.11.4.2
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
29-Сен-08 09:23
(спустя 12 мин.)
Mikky72 в качестве идеи -- сравнить ваш скрипт и tartak-a, построчно,
возможно побуквенно
111.mpg вы препарировали с помощью dgindex?
tartak писал(а):
cropped = source.crop(4, 4, -4, -4)
подскажите плиз почему обрезка важна именно в этом месте, а не после смены количества кадров?
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
29-Сен-08 09:28
(спустя 4 мин., ред. 29-Сен-08 09:31)
waldis2
Я просто скопиравал текст из сообщения.
DGIndex 1.5.0
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
29-Сен-08 09:30
(спустя 2 мин.)
Mikky72 вопрос в силе
waldis2 писал(а):
111.mpg вы препарировали с помощью dgindex?
хотя конечно если оно хоть что-то у вас делает, то ответ понятен.
не знаю тогда как на одном источнике и с использованием одного и того же кода получаются разные результаты.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
29-Сен-08 09:44
(спустя 13 мин., ред. 29-Сен-08 09:44)
Mikky72
Скопировали, открыли в Дубе, а дальше? Смотрим File->File Information. Если закомментировать все строки после TDecimate, должно быть 22 fps. Далее, прокручиваем по одному кадру. Дубликатов быть не должно. Этот скрипт работает, гарантирую. waldis2
cropped нужен только для внутренней работы MVFlowFps2, никакой обрезки source не происходит. Там вообще один сплошной хак, по делу такой плагин должен быть multithreaded.
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
29-Сен-08 10:12
(спустя 27 мин., ред. 29-Сен-08 10:12)
tartak
С задокументированным концом - удаляет (спасибо).
А если конец активировать - то опять вставляет их обратно на те же места - хи-хи.
Что-то мне сдается, что именно этим скриптом его из NTSC в PAL конвертили без изменения продолжительности (так как музыкальный) и по дороге потеряли по 2 ценных кадра в секунду (поэтому без дублей дергается вперед, а с дублями подтормаживает, что лучше -непонятно - оба плохо).
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
29-Сен-08 10:17
(спустя 4 мин.)
Mikky72
Ну, я там параметры наобум взял. Надо с параметрами MVAnalyse и MVFlowFps2 поиграть. По идее, он должен намного лучше ConvertFPS работать.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
29-Сен-08 10:46
(спустя 29 мин., ред. 29-Сен-08 10:46)
Mikky72
Я совсем очумел. Изменение fps происходило же с оригиналом, а не с прореженным вариантом, то есть ничего не происходило. Исправил и перешел на MVFlowFps, ничего MVFlowFps2 лучшего не даст:
Код:
source = MPEG2Source("111.d2v")
#source.FDecimate(rate = 22)
decimated = source.TDecimate(mode = 0, cycleR = 3, cycle = 25)
#ConvertFPS(25)
#MotionProtectedFPS(25)
backward_vec = decimated.MVAnalyse(isb = true, truemotion = true, pel = 2, idx = 1)
forward_vec = decimated.MVAnalyse(isb = false, truemotion = true, pel = 2, idx = 1)
decimated.MVFlowFps(backward_vec, forward_vec, num = 25, den = 1, ml = 100, idx = 1)
Но вы правы, теперь слегка проскакивает вперед, кадров не хватает. Хрен редьки не слаще. Надо функцию, добавляющую среднее между 2-мя кадрами, вместо дублей. Морока.
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
29-Сен-08 10:51
(спустя 5 мин., ред. 29-Сен-08 10:51)
tartak
О, Вы меня опередили. А я хотел вот это написать:
скрытый текст
В идеале, возможно - на место дублей вставить "усредненные" кадры 5=0.5*(4+6). А так он вставляет 5=4. Хотя, наверное, надо не 3 усредненных кадра вставлять, а 1 (но не очень понятно, на какую из освободившихся позиций - иначе всё равно будет подтормаживать). Идея, скорее всего, безнадежная. Жаль.
Но за некое введение в работу с этим фрэймсервером и фильтрами - спасибо. Теперь хоть имею представление, как с этим работать.
Спасибо за участие и микро ликбез по AVISynth и фильтрам - было очень интересно и полезно на будущее.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
29-Сен-08 10:59
(спустя 7 мин., ред. 29-Сен-08 10:59)
Mikky72
Не так уж и безнадежна идея. Функция эта MVFlowInter из MVTools. А флаг на дубли ей выставит CFrameDiff из TIVTC. Осталось только загнать все это в Trim.
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
23-Апр-09 17:48
(спустя 6 месяцев)
У меня фильм-исходник был в формате avi, NTSC с частотой кадров 23,976 fps. Сейчас его нет. После ошибочного кодирования (авторинга) в PAL этот фильм стал с частотой кадров 25 fps. В результате в фильме - дублирующиеся кадры, расположенные в неопределенной последовательности друг от друга, и это делает движения объектов (особенно заметно на автомобилях и поездах) неплавными, дерганными. Пытался исправить положение разными скриптами Ависинта. Ничего не помогает. Упомянутый тут fdecimate убрал кадры-дубликаты в одних местах, но они появились в других местах. Причем, сдвоенные, и, к тому же, идущие реверсом. Кому-нибудь приходилось решать подобную проблему?
Неплохая статья на эту тему тут http://ubuntulogia.blogspot.com/2008/06/blog-post_4.html но у меня уже голова идет кругом от всего этого.
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
23-Апр-09 18:22
(спустя 33 мин.)
yaboxer попробуйте определить цикл для дублей и прореживайте с помощью
такой конструкции tdecimate(cycler=3,cycle=18,chroma=false,vidthresh=1.2,nt=2,blocky=16,mode=0) это для цикла в 18 фреймов с тремя дублями по схеме 7-7-4 (каждый последний в цепочке дубль)
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
24-Апр-09 09:11
(спустя 14 часов)
waldis2, сейчас этот фильм у меня находиться на внешнем жестком диске, у которого сгорел кейс. Поэтому, более обстоятельно отвечу вам позже. Кстати, я проверил ваш скрипт, он вообще не открывается. Пишет: Нет такой функции, именуемой tdecimate. Вообще, я не хотел-бы грубо вырезать кадры. В моем случае, как говорил, нет четкого алгоритма расположения дубликатов, это и затрудняет "охоту" за ними. Но я слышал, что даже после ошибочного кодирования из NTSC 23,976 fps в PAL 25 fps можно выкрутиться и каким-то скриптом вернуть фильм в исходное состояние NTSС 23,976 fps.
Не понятна фаша фраза: "это для цикла в 18 фреймов с тремя дублями по схеме 7-7-4 (каждый последний в цепочке дубль)".
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
24-Апр-09 11:55
(спустя 2 часа 43 мин.)
yaboxer писал(а):
нет четкого алгоритма расположения дубликатов
а на сколько далеко вы пошли в своих изысканиях, что бы так уверенно говорить?
схема обычно есть, только ее не сразу видно,
дубли хорошо начинают проглядывать после деинтерлейса,
поэтому берете скрипт, деинтерлейсите исходник, и затем начинаете выписывать номера дублирующихся кадров, обычно кадров 50-60-100 хватает для выяснения закономерности их появления
yaboxer писал(а):
Не понятна фаша фраза: "это для цикла в 18 фреймов с тремя дублями по схеме 7-7-4 (каждый последний в цепочке дубль)".
а это как раз про случай якобы хаотичного появления дублей,
идёт цикл из:
7 кадров, 7-й дубль
7 кадров, 7-й дубль
4 кадра, 4-й дубль
потом всё в точности повторяется
и из 29.97 кадров/с получаются почти красивые 24.975, и на что похожа эта частота надеюсь объяснять не надо
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
24-Апр-09 15:41
(спустя 3 часа)
waldis2, как я сказал, ваш скрипт не открывается (eсли, конечно, tdecimate не отдельный плагин, которого у меня нет). Значит, он неправильно написан.
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
24-Апр-09 15:47
(спустя 6 мин.)
yaboxer писал(а):
как я сказал, ваш скрипт не открывается
это иллюстрация децимации, и ни в коей мере не полный скрипт обработки
yaboxer писал(а):
eсли, конечно, tdecimate не отдельный плагин
у вас интернет только до этого форума работает?
yaboxer писал(а):
Значит, он неправильно написан
да, безусловно
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
24-Апр-09 17:39
(спустя 1 час 51 мин.)
waldis2, еще есть фильтр multidecimate, который вроде в виде текста показывает номера кадров-дубликатов, что облегчает их поиск. Но я забыл последовательность действий с multidecimate. А вообще, как-бы вы удаляли хаотично расположенные дубликаты?
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
24-Апр-09 18:56
(спустя 1 час 16 мин.)
yaboxer писал(а):
А вообще, как-бы вы удаляли хаотично расположенные дубликаты?
waldis2 писал(а):
а на сколько далеко вы пошли в своих изысканиях, что бы так уверенно говорить?
вот это я так понимаю сделано
waldis2 писал(а):
поэтому берете скрипт, деинтерлейсите исходник, и затем начинаете выписывать номера дублирующихся кадров, обычно кадров 50-60-100 хватает для выяснения закономерности их появления
?
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
25-Апр-09 09:53
(спустя 14 часов)
В описании фильтра TomsMoComp http://avisynth.org/warpenterprises/files/tmonitor_25_dll_20041030.zip написано: этот фильтр использует компенсацию движения и адаптивную обработку для деинтерлейса видео источников (не для кинофильмов NTSC).
В описании фильтра - TMonitor http://avisynth.org/warpenterprises/files/tmonitor_25_dll_20041030.zip : Комбинация двух фильтров. TFM - фильтр подбора полей, который восстанавливает оригинальные прогрессивные поля в теликино источнике. TDecimate - фильтр децимации, который удаляет дубликаты. Вы не пользовались ими?
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
25-Апр-09 16:29
(спустя 6 часов)
yaboxer по-моему я вам привёл пример с использованием одного из этих фильтров,
да и при чём тут чем я пользовался, речь совершенно не об этом, а скорее о том, что вы продолжаете игнорировать мои вопросы. наверное я тоже воспользуюсь этим методом общения.
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
25-Апр-09 19:16
(спустя 2 часа 46 мин.)
waldis2, я уже исправил свой внешний хард-диск на котором находится упомянутый фильм. Скоро постараюсь выявить, с каким алгoритмом расположены дубликаты и сообщу вам.
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
25-Апр-09 22:33
(спустя 3 часа)
yaboxer кстати больший интерес представляет дистанция между дублями
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
26-Апр-09 22:53
(спустя 1 день, ред. 26-Апр-09 22:53)
waldis2, я проверил покадрово первые 22 секунды фильма. Алгоритм расположения дубликатов странный. Они приходяться на кадры:
74,98,123,147,172,196,220,245,269,294,318,342,367,391,416,440,464,489,513,538 и.т.д.
т.е. соответствуют шаблону
24-25-24-25-24 / 24-25-24-25-24 / 24-25-24-25-24 / 24-25-24-25-24 / 24-25-24-25-24 и.т.д.
Первые 2 секунды фильма - полнейшая темнота, поэтому я начал отсчёт с 74 кадра. Но если следовать алгоритму, то первые кадры-дубликаты приходятся на 1,25,50 кадры.
Интересно, как тут можно вернуть PAL 25 fps в родной NTSC 23,976 fps?
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
26-Апр-09 23:50
(спустя 56 мин., ред. 26-Апр-09 23:50)
yaboxer
Взять серию в 25 кадров и указать, что на выходе нужны первые 24 (т.е. 0-23).
Цитата:
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
27-Апр-09 09:45
(спустя 9 часов)
Mikky72, еще раз обращаю внимание, что в моем случае не в каждой секунде нужно грубо отсекать 25-й кадр. Вдвое чаще дубликаты приходяться на 24-й кадр. Кстати, я однажды писал аналогичный (как у вас) скрипт. Eсли не ошибаюсь, он выглядел так: SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
SelectEvery(26,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24)
SelectEvery(25,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23) Столько строк в тексте скрипта исправят только первые 10 секунд фильма. Скопировать это многократно ниже можно, но это не даст эффекта, потому что тогда ВиртуалДаб вообще не открывает файл ввиду громоздкости текста скрипта. Короче, таким путем можно выправить положение только до второй минуты фильма и подобный скрипт вряд-ли пригоден. Надо искать нечто универсальное, чтобы не указывать какие именно кадры удалять, а чтоб фильтр сам автоматически находил и удалял кадры-дубликаты.
Я пока не могу разобраться с выложенным выше фильтром TMonitor. По описанию он вроде должен помочь, но нет образца, по которому я-бы смог написать скрипт.
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
27-Апр-09 10:10
(спустя 24 мин.)
yaboxer писал(а):
24-25-24-25-24
ну а говорите закономерности нет ( ),
последовательность конечно веселая, но главное терпение.
правильно я понял что в этой цепочке из 5 групп каждый участник группы завершается дублем?
(24-25-24-25-24)
т.е. каждый 24-й, 25-й, 24-й, 25-й, 24-й кадр является дублем?
можно например так:
tdecimate(cycler=5,cycle=122,chroma=false,vidthresh=1.2,nt=2,blocky=16,mode=0)
что в результате должно дать частоту 25 * 117/122 == 23.9754,
с точностью до 3-го знака искомая частота NTSC Film
надеюсь это будет ответом на
yaboxer писал(а):
Интересно, как тут можно вернуть PAL 25 fps в родной NTSC 23,976 fps?
особой скоростью прореживания видимо это блистать не будет, но своё дело сделает.
прошу сообщить результат применения.
|
|
yaboxer
Стаж: 16 лет 1 месяц Сообщений: 87
|
yaboxer ·
27-Апр-09 11:18
(спустя 1 час 7 мин.)
waldis2, у меня ваш скрипт не открывает файл. Пишет: Не существует функции tdecimate. Что это за tdecimate?
|
|
|