Pull to refresh

Video rip. Часть 2-4. IVTC

Working with video *

Содержание


  1. Подготовка DVD
    1. vStrip
    2. DGMPGDec

  2. Обработка видео
    1. Что такое interlace и с чем его едят
    2. Как определить что у нас: progressive, interlaced или telecined?
    3. Избавление от обычной чересстрочности (deinterlace)
    4. IVTC

  3. Сжимаем и запаковываем


С момента публикования предыдущей части прошло уже много времени, но у меня всё как-то не получалось сесть за продолжение. Связано это с тем, что тема IVTC для меня такая размытая, что даже страшно приступать, но, вот, сегодня выдался день безделья и я решил — пора.

Что такое telecine и зачем оно нужно можно освежить в памяти прочитав одну из предыдущих частей. IVTC это InVerse TeleCine, т.е. избавление от этой оказии.

Собственно, видео с обычной чересстрочностью в моей практике встречалось очень редко, практически всегда там был pulldown. Учитывая, количество типов pulldown (а также возможных ошибок, которые могут быть допущены при преобразовании или каких-нибудь «хаков») избавление от него становится занятием, я бы сказал, интуитивным.

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

Впрочем, не буду снова вас запугивать. Давайте посмотрим какие инструменты у нас есть.

Общий алгоритм работы всех плагинов для IVTC сводится к следующему: сначала производится восстановление progressive кадров, затем по желанию постпроцессинг, который может помочь сделать прогрессивными кадры, котоыре не удалось распознать на первом этапе, а затем производится процедура Decimate для удаления повторяющихся кадров и приведения частоты кадров к некоему стандартному значению.

Decomb

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

1. Сначала, как и в случае с избавлением от чересстрочности, надо установить порядок полей.

DirectShowSource("00581.mts")
AssumeTFF()


2. Затем, надо установить тип pulldown, про который я писал здесь. Какие конкретно цифирки ставить смотрите в документацию, т.к. от версии к версии они могут меняться и дополняться.

DirectShowSource("00581.mts")
AssumeTFF()
Telecide(guide=2)


Я вижу что у вас возник вопрос — «как определить тип pulldown». Ха! Я об этом писал здесь, но на самом деле всё это фигня. :( Достоверно тип определить можно только просматривая видео вручную покадрово. А то, что пишут программки по ссылке можно использовать только как подсказку.

А ещё, в Telecide можно передать параметр show=true и открыть в плеере или в VirtualDub и оно будет поверх видео выводить вам статистику. Оригинальный файл, конечно же, не меняется.

DirectShowSource("00581.mts")
AssumeTFF()
Telecide(guide=1,post=0,show=true)


Выглядит это примерно вот так.

Тут же, в Telecide, настраивается постобработка.

DirectShowSource("00581.mts")
AssumeTFF()
Telecide(guide=1,post=2,vthresh=30)


3. И, последнее, надо избавиться от лишних кадров. Учтите, что если у вас PAL видео, то Decimate делать не надо.

DirectShowSource("00581.mts")
AssumeTFF()
Telecide(guide=1,post=2,vthresh=30)
Decimate()


По моему опыту Decomb плохо работает на hybrid видео. Это такое видео, которое содержит часть кадров с pulldown, а часть progressive. Так часто кодируют аниме.

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

TIVTC

А вот эта штучка мне нравится больше. По количеству настроек их тонкости может посоперничать с Decomb. Я бы даже назвал этот плагин user friendly, если такое вообще можно сказать про AviSynth и его плагины. :)

Как пользоваться этим плагином в тех или иных ситуациях я вам тоже не скажу, отослав к документации, но отмечу отдельные моменты.

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

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

В-третьих возможность обработки в два прохода! Это очень крутая возможность. Помимо лучшего качества и увеличения времени обработки, после второго прохода плагин генерирует файл с временными отметками для сбора в матрёшку (mkv). Другими словами вы сможете реализовать переменную частоту кадров.

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

Приведу пример двух avs файлов.

Первый проход:

LoadPlugin("Plugins\DGDecode.dll")
LoadPlugin("Plugins\tivtc.dll")

mpeg2source("D2V\e01.d2v")

AssumeTFF()

mpeg2source("D2V\e01.d2v")
tfm(d2v="D2V\e01.d2v", output="e01_matches.txt")
tdecimate(mode=4, output="e01_metrics.txt")


Второй проход:

LoadPlugin("Plugins\DGDecode.dll")
LoadPlugin("Plugins\tivtc.dll")

mpeg2source("D2V\e02.d2v")

AssumeTFF()

mpeg2source("D2V\e02.d2v")
tfm(d2v="D2V\e02.d2v", input="e02_matches.txt")
tdecimate(mode=5, hybrid=2, vfrDec=1, input="e02_metrics.txt", tfmIn="e02_matches.txt", mkvOut="e02_tcode.txt")


Видите, во втором случае mkvOut=«e02_tcode.txt»? Это оно и есть. Как воспользоваться расскажу в части про сбор матрёшки.

Больше про TIVTC говорить ничего не буду, потому что лучше чем в документации не скажу. Доки прсто замечательные, всё написано очень понятно. Может быть, когда-нибудь займусь переводом. Кто знает? :)
Tags:
Hubs:
Total votes 4: ↑2 and ↓2 0
Views 5.8K
Comments Comments 2