Восстановление прогрессивного потока с NTSC-DVD, транскодированного из PAL

Страницы :  1, 2, 3, 4, 5  След.
Ответить
 

Kabukiman

Top Seed 03* 160r

Стаж: 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

Техпомощь раздела Кино, Видео и TV

Стаж: 19 лет 9 месяцев

Сообщений: 4016

GarfieldX · 08-Сен-08 22:17 (спустя 3 часа)

Если был кривой транскод, то никакой бубен не поможет.
Ищи хороший исходник.
[Профиль]  [ЛС] 

shellgen

VIP (Адм)

Стаж: 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

Top Seed 03* 160r

Стаж: 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

Техпомощь раздела Кино, Видео и TV

Стаж: 19 лет 9 месяцев

Сообщений: 4016

GarfieldX · 14-Сен-08 13:52 (спустя 2 часа 1 мин.)

Kabukiman
Если можешь, то выложи сампл мегов на 50 со сценой где есть движение.
А так же отпишись о результатах применения предложенных советов.
Иногда попадаются такие ДВД, сколько не колдовал - все одно х-ня получается. Поэтому интересно.
[Профиль]  [ЛС] 

Kabukiman

Top Seed 03* 160r

Стаж: 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

Top Seed 03* 160r

Стаж: 17 лет 7 месяцев

Сообщений: 2078

Kabukiman · 15-Сен-08 17:30 (спустя 7 мин.)

waldis2
Я же написал, что мне сейчас неохото ничего делать.. Советы сохранил, может когда-нибудь попробую..
[Профиль]  [ЛС] 

waldis2

Стаж: 17 лет 5 месяцев

Сообщений: 2321


waldis2 · 15-Сен-08 17:45 (спустя 14 мин.)

Kabukiman забавно, только для чего было спрашивать
ладно, в следующий раз надо будет когда-нибудь ответить.
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 27-Сен-08 20:27 (спустя 12 дней, ред. 27-Сен-08 20:27)

Хочу задать вопрос близкий по теме.
Имеется клип 25 fps. Раз в секунду картинка на долю секунды останавливается (будто там подряд пара-тройка одинаковых кадров). В сценах с плавным движением раздражает.
Что это, неудачный перевод из NTSC? Как это можно починить?
[Профиль]  [ЛС] 

Pustovetov

AVC-Видео

Стаж: 17 лет 1 месяц

Сообщений: 4255

Pustovetov · 28-Сен-08 00:59 (спустя 4 часа)

Mikky72 писал(а):
Хочу задать вопрос близкий по теме.
Имеется клип 25 fps. Раз в секунду картинка на долю секунды останавливается (будто там подряд пара-тройка одинаковых кадров). В сценах с плавным движением раздражает.
Что это, неудачный перевод из NTSC? Как это можно починить?
Или неправильный трансфер Film->PAL. Нужно посмотреть повнимательнее на... если там действительно каждый 25 кадр дубль, то наверно правильнее всего клип пережать с выкидыванием этого дубля.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 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

AVC-Видео

Стаж: 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

VIP (Заслуженный)

Стаж: 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 есть.
Цепочка какая-то такая (надеюсь, поймете, что я хотел сказать): 1111222111111111111111_1111222111111111111111_1111222111111111111111_1111222111111111111111 ...
Как этими прореживателями пользоваться? Можно ли как-то задать позицию первого удаляемого кадра + интервал между удалениями?
Тогда за три прогона можно было бы получить 22 кадра в секунду. А потом что с ними делать - опять вставлять дубли, чтобы получить 25 (клип музыкальный - просто ускорять видео и плющить звуковую дорожку не хочется)?
Но тогда, наверное, дубли надо раскидывать более равномерно, например, как-то так:
1121111111211111121111_1121111111211111121111_ 1121111111211111121111 ... ?
Чем и как это делать?
Только я никогда с подобными вещами не работал.
Мне бы хоть текстовую инструкцию типа: запускаем это, указываем такое-то число, нажимаем Start.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 28-Сен-08 10:23 (спустя 5 мин.)

А, ну так это другое дело. Тут 25 fps, а не тот ужос в 28. Но здесь в самом деле P-фреймы - дубликаты, их не выкинешь без перекодировки. То есть, direct copy через Dsynth делать впустую.
FDecimate, как и был консенсус, явно справляется, никаких параметров не нужно (то есть, годится порог = 1, по умолчанию).
Ну, получится 22 fps, что делать. Потом можно ConvertFPS в 25 (лучше, чем фреймы вставлять). Можно и еще получше конвертер поискать.
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 28-Сен-08 10:37 (спустя 13 мин., ред. 28-Сен-08 10:37)

tartak
Этот фильтр не повредит статичным сценам? Может есть фильтр с жестким "шаблоном"?
Хочу создать DivX (AVI) в VirtualDubMod. Как эти фильтры подключить к нему ?
Ну не в картинках, но хоть текстом, плиииз.
Спасибо.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 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

AVC-Видео

Стаж: 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

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 28-Сен-08 11:34 (спустя 14 мин.)

Чисто формально, вариант с SelectEvery выглядит предпочтительней.
А это зачем: ColorMatrix(hints=true,interlaced=true)?
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 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

VIP (Заслуженный)

Стаж: 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

AVC-Видео

Стаж: 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

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 28-Сен-08 18:53 (спустя 5 часов)

Насчет последовательности - к сожалению, она оказалась сложнее. Через 2 пачки по 25 кадров положение тройки дубли сместилось ближе к началу пачки на 2 позиции. Потом ещё через 3 пачки - еще раз сместилось ближе к началу на 2 позиции. Ещё через 4 раза - сместилось еще на 2 позиции. Потом через 3 раза - еще на 2 позиции. Короче, жесткого шаблона нет. А жаль.
Нужен автоопределитель.
FDecimate работает очень странно - в режиме метрики вроде на кадрах дублях определяет метрику 0,5 и менее (у нормальных кадров 2 и более). В рабочем режиме (если включено show, то это можно увидеть) он тоже верно определяет кадры дубли, но... признав их дублями, оставляет их!! А потом для достижения заданного фрэймрейта он выкидывает совсем другие кадры!!!
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 28-Сен-08 19:03 (спустя 9 мин.)

Нет, FDecimate(rate = 22) выкидывает именно дубли, по 3 каждые 25. И на выходе получаем 22 fps без дублей. И все было бы хорошо, если бы не прыжки назад в определенных точках, чего не происходит с SelectEvery. Надо попробовать другие decimate фильтры, а насчет этого - сообщить о глюке автору.
[Профиль]  [ЛС] 

Mikky72

VIP (Заслуженный)

Стаж: 17 лет 8 месяцев

Сообщений: 8498

Mikky72 · 28-Сен-08 19:53 (спустя 50 мин., ред. 28-Сен-08 19:53)

tartak
Странно. А у меня не выкидывает!
Какой ни ставил, даже вообще не указывал - выкидывает, например, 5-й, 15-й, 25-й вместо 5,7,9 - хотя их дублями признает.
Какой трешхолд ставили?
MultyDecimate вроде повыкидывал, но все равно получилось плохо - теперь вроде как резкие скачки вперед. Похоже после дублей в NTSC стояли нормальные кадры, которые повыкидывались вместо дублей. Теперь их уже не вернуть
Похоже, клип так и не реставрировать, а жаль.
[Профиль]  [ЛС] 

tartak

VIP (Заслуженный)

Стаж: 18 лет 8 месяцев

Сообщений: 2548

tartak · 28-Сен-08 20:20 (спустя 27 мин.)

FDecimate(rate = 22) означает, что порог = 1, по умолчанию. В самый раз.
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error