|
Kabukiman
Стаж: 17 лет 7 месяцев Сообщений: 2078
|
Kabukiman ·
08-Сен-08 18:56
(16 лет 2 месяца назад)
Имеется DVD диск в формате NTSC, изображение жёстко закодированно интерлейсным 29.97 fps, причём не обычный NTSC 3:2 Pulldown (так называемый Hard-Telecined), а явный транскод из PAL. Собственно и вопрос - как грамотно сделать рип с такого диска с восстановлением исходных прогрессивных 25 fps ?
Поидее рекомендуется писать Telecide(Guide=3).Decimate(6), после чего должен получиться восстановленный поток с частотой 24.975fps, но у меня это не работает, всё-равно остаётся интерлейс..
|
|
GarfieldX
Стаж: 19 лет 9 месяцев Сообщений: 4016
|
GarfieldX ·
08-Сен-08 22:17
(спустя 3 часа)
Если был кривой транскод, то никакой бубен не поможет.
Ищи хороший исходник.
|
|
shellgen
Стаж: 18 лет 1 месяц Сообщений: 6417
|
shellgen ·
09-Сен-08 09:26
(спустя 11 часов)
Kabukiman писал(а):
Имеется DVD диск в формате NTSC, изображение жёстко закодированно интерлейсным 29.97 fps, причём не обычный NTSC 3:2 Pulldown (так называемый Hard-Telecined), а явный транскод из PAL. Собственно и вопрос - как грамотно сделать рип с такого диска с восстановлением исходных прогрессивных 25 fps ?
Поидее рекомендуется писать Telecide(Guide=3).Decimate(6), после чего должен получиться восстановленный поток с частотой 24.975fps, но у меня это не работает, всё-равно остаётся интерлейс..
Что-нибудь типа такого должно помочь
Код:
tdeint(edeint=nnedi(field=-2),full=false,mode=2,mtnmode=3,type=1,sharp=true,emask=TMM(mode=1))
tdecimate(mode=1,hybrid=1,cycle=6)
Частота кадров получится 24.975, звук должен остаться в синхроне
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
14-Сен-08 11:24
(спустя 5 дней, ред. 14-Сен-08 11:24)
Kabukiman в точности с этой проблемой недавно бодался в этом рипе:
https://rutr.life/forum/viewtopic.php?t=1099139
ерунда в том, что кроме того что транскодированный PAL, так еще и не типичный для NTSC telecine, а типичный интерлейс, причём ужасный, с жутким количеством "привидений"
наиболее гладкую картинку дало такое:
# deinterlace
AssumeTFF()
edeintted = nnedi(field=-2)
TDeint(edeint=edeintted, full=false, mode=2, type=1, sharp=true, mtnmode=3, emask=TMM(mode=1))
decimate(6)
assumefps(25)
звук понятно тоже надо потом пересчитывать, например так:
aud = nicac3source("rus.ac3",drc=1).convertaudiotofloat().TimeStretch(tempo = (100.0 * 25 * 1000.0) /( ( 29.97*5 / 6) * 1000.0) )
.........
хотя у вас может быть и другой случай, например с более "хитрой" схемой интерлейса.
|
|
Kabukiman
Стаж: 17 лет 7 месяцев Сообщений: 2078
|
Kabukiman ·
14-Сен-08 11:29
(спустя 4 мин.)
waldis2
Спасибо, попробую..
А можно сразу написать набор необходимых плагинов с этими функциями ?
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
14-Сен-08 11:50
(спустя 21 мин.)
Kabukiman вроде вся коллекция водится тут
http://web.missouri.edu/~kes25c/
|
|
GarfieldX
Стаж: 19 лет 9 месяцев Сообщений: 4016
|
GarfieldX ·
14-Сен-08 13:52
(спустя 2 часа 1 мин.)
Kabukiman
Если можешь, то выложи сампл мегов на 50 со сценой где есть движение.
А так же отпишись о результатах применения предложенных советов. Иногда попадаются такие ДВД, сколько не колдовал - все одно х-ня получается. Поэтому интересно.
|
|
Kabukiman
Стаж: 17 лет 7 месяцев Сообщений: 2078
|
Kabukiman ·
14-Сен-08 14:14
(спустя 22 мин.)
GarfieldX писал(а):
Kabukiman
Если можешь, то выложи сампл мегов на 50 со сценой где есть движение.
А так же отпишись о результатах применения предложенных советов. Иногда попадаются такие ДВД, сколько не колдовал - все одно х-ня получается. Поэтому интересно.
Вот сэмп какой-то сделал, правда без звука:
http://rapidshare.com/files/145171145/ZZZ.m2v.html
А делать рип пока лень совсем..
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
14-Сен-08 14:22
(спустя 7 мин.)
GarfieldX писал(а):
Иногда попадаются такие ДВД, сколько не колдовал - все одно х-ня получается
самое интересное место в этих дисках -- замысловатые схемы интерлейса. все танцы с бубном обычно вокруг их восстановления. дальше уже проще
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
15-Сен-08 17:23
(спустя 1 день 3 часа)
Kabukiman получилось чего-нибудь?
|
|
Kabukiman
Стаж: 17 лет 7 месяцев Сообщений: 2078
|
Kabukiman ·
15-Сен-08 17:30
(спустя 7 мин.)
waldis2
Я же написал, что мне сейчас неохото ничего делать.. Советы сохранил, может когда-нибудь попробую..
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
15-Сен-08 17:45
(спустя 14 мин.)
Kabukiman забавно, только для чего было спрашивать
ладно, в следующий раз надо будет когда-нибудь ответить.
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
27-Сен-08 20:27
(спустя 12 дней, ред. 27-Сен-08 20:27)
Хочу задать вопрос близкий по теме.
Имеется клип 25 fps. Раз в секунду картинка на долю секунды останавливается (будто там подряд пара-тройка одинаковых кадров). В сценах с плавным движением раздражает.
Что это, неудачный перевод из NTSC? Как это можно починить?
|
|
Pustovetov
Стаж: 17 лет 1 месяц Сообщений: 4255
|
Pustovetov ·
28-Сен-08 00:59
(спустя 4 часа)
Mikky72 писал(а):
Хочу задать вопрос близкий по теме.
Имеется клип 25 fps. Раз в секунду картинка на долю секунды останавливается (будто там подряд пара-тройка одинаковых кадров). В сценах с плавным движением раздражает.
Что это, неудачный перевод из NTSC? Как это можно починить?
Или неправильный трансфер Film->PAL. Нужно посмотреть повнимательнее на... если там действительно каждый 25 кадр дубль, то наверно правильнее всего клип пережать с выкидыванием этого дубля.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 04:05
(спустя 3 часа, ред. 28-Сен-08 04:05)
Нет, там 4 дубля в секунду, фрейм рейт 29(!). Дубли идут неравномерно, но в определенной последовательности. Все они B-типа, удалять их можно без малейшего ушерба. Вопрос, как это провернуть?
Думаю, что-нибудь типа
SeparateFields.SelectEvery(29,0,1,3,5,...,18,20,...,26,28)
Weave()
Цифры примерные, надо тщательно проверить. И все держится на предположении, что последовательность повторяется. Добавлено: А ни фига она не повторяется, я глянул GSpot'ом. Нужна функция, которая бы удаляла В-поля, почти не отличающиеся от предыдущих P. Типа Decimate, FDecimate или MultiDecimate с neuron2.net Еще добавлено: а может и повторяется. Последовательность I, P, B совсем не повторяется, а дубликаты может и повторяются. Но если MultiDecimate справится автоматом, это был бы лучший вариант.
|
|
Pustovetov
Стаж: 17 лет 1 месяц Сообщений: 4255
|
Pustovetov ·
28-Сен-08 04:20
(спустя 15 мин.)
может tdecimate(mode=2,rate=25) ?
|
|
waldis2
Стаж: 17 лет 5 месяцев Сообщений: 2321
|
waldis2 ·
28-Сен-08 04:23
(спустя 2 мин.)
Mikky72, tartak
это где вам такой хитрый источник попался? глянуть хоть.
и попробуйте вот с этим "прореживателем"
http://neuron2.net/fdecimate/fdecimate.html
пожалуй один из самых тяжеловесных
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
28-Сен-08 10:17
(спустя 5 часов, ред. 28-Сен-08 10:17)
waldis2
Вот кусочек mpeg2 25 fps http://www.mediafire.com/?lzw5eoy4owy
Проверил покадрово - закономерность очень четкая, повторяется каждые 25 кадров: в пачке из 25 кадров имеется не один, а ТРИ дублирующих кадра: 5-й является копией 4-го, 7-й - копией 6-го, 9-й - копией 8-го (нумерация кадров вроде начинается с 0). Причем, вроде, не все они типа B, в основном типа P, а может и I есть.
Цепочка какая-то такая (надеюсь, поймете, что я хотел сказать): 1111 222111111111111111_1111 222111111111111111_1111 222111111111111111_1111 222111111111111111 ...
Как этими прореживателями пользоваться? Можно ли как-то задать позицию первого удаляемого кадра + интервал между удалениями?
Тогда за три прогона можно было бы получить 22 кадра в секунду. А потом что с ними делать - опять вставлять дубли, чтобы получить 25 (клип музыкальный - просто ускорять видео и плющить звуковую дорожку не хочется)?
Но тогда, наверное, дубли надо раскидывать более равномерно, например, как-то так:
11 21111111 2111111 21111_11 21111111 2111111 21111_ 11 21111111 2111111 21111 ... ?
Чем и как это делать?
Только я никогда с подобными вещами не работал.
Мне бы хоть текстовую инструкцию типа: запускаем это, указываем такое-то число, нажимаем Start.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 10:23
(спустя 5 мин.)
А, ну так это другое дело. Тут 25 fps, а не тот ужос в 28. Но здесь в самом деле P-фреймы - дубликаты, их не выкинешь без перекодировки. То есть, direct copy через Dsynth делать впустую. FDecimate, как и был консенсус, явно справляется, никаких параметров не нужно (то есть, годится порог = 1, по умолчанию). Ну, получится 22 fps, что делать. Потом можно ConvertFPS в 25 (лучше, чем фреймы вставлять). Можно и еще получше конвертер поискать.
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
28-Сен-08 10:37
(спустя 13 мин., ред. 28-Сен-08 10:37)
tartak
Этот фильтр не повредит статичным сценам? Может есть фильтр с жестким "шаблоном"? Хочу создать DivX (AVI) в VirtualDubMod. Как эти фильтры подключить к нему ?
Ну не в картинках, но хоть текстом, плиииз.
Спасибо.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 10:51
(спустя 14 мин.)
Подробней: загружаем mpg в DGIndex, сохраняем проект, получается индексный файл d2v. Теперь загружаем все это в avisynth, то есть пишем avs скрипт (dgdecode.dll и FDecimate.dll должны быть в директории плагинов).
MPEG2Source("\111.d2v")
FDecimate(rate = 22) Потом можем открыть скрипт в VirtualDub и убедиться, что дубликаты ушли, но картинка иногда прыгает назад. М-да. Надо еще подумать.
|
|
Pustovetov
Стаж: 17 лет 1 месяц Сообщений: 4255
|
Pustovetov ·
28-Сен-08 11:19
(спустя 28 мин.)
Что-нить типа
mpeg2source( "111.d2v",info=3)
ColorMatrix(hints=true,interlaced=true)
Crop(0, 42, 0, -46)
tdecimate(mode=2,rate=22)
SelectEvery(22,0,1,2,2,3,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21) Если есть точная уверенность что дубли именно такие то вместо дециматора
SelectEvery(25,0,1,2,3,4,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
28-Сен-08 11:34
(спустя 14 мин.)
Чисто формально, вариант с SelectEvery выглядит предпочтительней.
А это зачем: ColorMatrix(hints=true,interlaced=true)?
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 11:47
(спустя 13 мин.)
Это уже непонятно. Там все прогрессив, зачем ColorMatrix, зачем Crop? SelectEvery я предлагал с самого начала, но он не должен бы делать ничего нового по сравнению с FDecimate. Однако, после него нет прыжков назад, то есть в FDecimate есть глюк. Так или иначе, вот это работает:
MPEG2Source("111.d2v")
SelectEvery(25,0,1,2,3,4,6,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24) Если добавить ConvertFPS(25), получим 25 fps без дубликатов, но ConvertFPS несколько размазывает. Где-то были motion-adaptive фильтры.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 12:36
(спустя 49 мин.)
С MVTools получается явно лучше, чем с ConvertFPS. Что-то в таком духе:
Код:
source=MPEG2Source("D:\Download\111.d2v")
source.SelectEvery(25,0,1,2,3,4,6,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
#source.ConvertFPS(25)
#source.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)
|
|
Pustovetov
Стаж: 17 лет 1 месяц Сообщений: 4255
|
Pustovetov ·
28-Сен-08 12:53
(спустя 16 мин., ред. 28-Сен-08 12:53)
tartak писал(а):
Это уже непонятно. Там все прогрессив, зачем ColorMatrix, зачем Crop?
А для красоты =) Хотя конечно interlaced=false
Цитата:
SelectEvery я предлагал с самого начала, но он не должен бы делать ничего нового по сравнению с FDecimate. Однако, после него нет прыжков назад, то есть в FDecimate есть глюк.
SelectEvery туп как пробка и выкидывает то что ему сказали. Дециматор же пытается умничать и похоже не осиливает найти верные дубли.
Цитата:
Если добавить ConvertFPS(25), получим 25 fps без дубликатов, но ConvertFPS несколько размазывает. Где-то были motion-adaptive фильтры.
А оно точно нужно? Может оставить 22 fps? Или сделать 24 fps просто вставив пару дублей?
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
28-Сен-08 18:53
(спустя 5 часов)
Насчет последовательности - к сожалению, она оказалась сложнее. Через 2 пачки по 25 кадров положение тройки дубли сместилось ближе к началу пачки на 2 позиции. Потом ещё через 3 пачки - еще раз сместилось ближе к началу на 2 позиции. Ещё через 4 раза - сместилось еще на 2 позиции. Потом через 3 раза - еще на 2 позиции. Короче, жесткого шаблона нет. А жаль.
Нужен автоопределитель. FDecimate работает очень странно - в режиме метрики вроде на кадрах дублях определяет метрику 0,5 и менее (у нормальных кадров 2 и более). В рабочем режиме (если включено show, то это можно увидеть) он тоже верно определяет кадры дубли, но... признав их дублями, оставляет их!! А потом для достижения заданного фрэймрейта он выкидывает совсем другие кадры!!!
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 19:03
(спустя 9 мин.)
Нет, FDecimate(rate = 22) выкидывает именно дубли, по 3 каждые 25. И на выходе получаем 22 fps без дублей. И все было бы хорошо, если бы не прыжки назад в определенных точках, чего не происходит с SelectEvery. Надо попробовать другие decimate фильтры, а насчет этого - сообщить о глюке автору.
|
|
Mikky72
Стаж: 17 лет 8 месяцев Сообщений: 8498
|
Mikky72 ·
28-Сен-08 19:53
(спустя 50 мин., ред. 28-Сен-08 19:53)
tartak
Странно. А у меня не выкидывает!
Какой ни ставил, даже вообще не указывал - выкидывает, например, 5-й, 15-й, 25-й вместо 5,7,9 - хотя их дублями признает.
Какой трешхолд ставили?
MultyDecimate вроде повыкидывал, но все равно получилось плохо - теперь вроде как резкие скачки вперед. Похоже после дублей в NTSC стояли нормальные кадры, которые повыкидывались вместо дублей. Теперь их уже не вернуть
Похоже, клип так и не реставрировать, а жаль.
|
|
tartak
Стаж: 18 лет 8 месяцев Сообщений: 2548
|
tartak ·
28-Сен-08 20:20
(спустя 27 мин.)
FDecimate(rate = 22) означает, что порог = 1, по умолчанию. В самый раз.
|
|
|