top field first что это
Video rip. Часть 2-3. Избавление от обычной чересстрочности (deinterlace)
Содержание
Первое, что надо сделать — выкинуть из головы идею воспользоваться фильтром deinterlace из VirtualDub. Я знаю, это непросто, но необходимо. Всё дело в том, что после обработки этим фильтром (с некоторыми настройками) на видео появляются паразитные изображения, например т.н. ghost effect. Выглядит он примерно вот так или вот так. Это ужасно.
Скриншоты для примеров я делал с видео, которым со мной поделился madnut.
Избавляться от чересстрочности мы будем при помощи плагинов для AviSynth. Придумано их много, поэтому все возможные упомянуты не будут. Если забыл ваш любимый — не сердитесь. Подчеркну, что в этой статье не рассматриваются плагины для удаления pulldown и IVTC. О них — потом.
Также, напомню, что в случае обычной чересстрочности сделать видео прогрессивным без потерь качества — не получится.
Для начала требуется установить правильный порядок появления полей. Top Field First (TFF) или Bottom Field First(BFF). Для этого в AviSynth существуют две команды AssumeTFF или AssumeBFF. Как это сделать хорошо написано здесь. Также, это показывает DGMpgDec. Также, вам в этом может помочь MeGUI. Как? Читайте предыдущую часть, только вместо Source type смотрите на поле Field order.
В результате у вас будет нечто такое:
Перейдём непосредственно к фильтрам.
Это даже не название конкретного плагина, а название целой техники «Bob deinterlacing». Суть её в том, что частота кадров — удвояется, используя поля в качестве кадров. Одновременно с этим восстанавливаются недостающие строки в каждом поле при помощи интерполяции или дублирования. Минусы вытекают из удвоения частоты кадров — более ресурсоёмкое декодирование и увеличение размера видеопотока.
Считается лучшим методом, если судить только по выходному качеству.
Для применения «Bob deinterlacing» добавьте в конец скрипта команду Bob. В результате получится:
DirectShowSource(«00581.mts»)
AssumeTFF()
Bob()
Название — аббревиатура от Yet Another DeInterlacing Filter. Этот фильтр был портирован для AviSynth Михаэлем Ниедермауэром (Michael Niedermayer). Он проверяет пикселы предыдущего, текущего и следующего кадра для восстановления полей посредством локального адаптивного метода (edge-directed interpolation) и использует spatial check для предотвращения появления большинства артефактов. Подробное объяснение алгоритма здесь.
Один из самых простых в использовании фильтров. У меня версия 0.9.
На вход принимает 4 параметра:
DirectShowSource(«00581.mts»)
AssumeTFF()
Yadif(0)
или, что тоже самое,
DirectShowSource(«00581.mts»)
AssumeTFF()
Yadif()
Какой из методов использовать? Используйте — 0, если вы не знаете, что вам нужны другие.
Этот плагин посложнее. Имеет кучу всяких параметров для тонкой подстройки. Использовать его, впрочем, достаточно просто.
DirectShowSource(«00581.mts»)
AssumeTFF()
SmoothDeinterlace()
Можно добавлять разные настройки, например, doublerate — удвоение частоты кадров.
DirectShowSource(«00581.mts»)
AssumeTFF()
SmoothDeinterlace(doublerate=true)
TomsMoComp.dll – это фильтр деинтерлейса, использующий компенсацию движения и адаптивную обработку. Он работает с различной скоростью в зависимости от параметра SearchEffort, который в данной версии варьируется от 0 (просто чуть более качественный BOB-деинтерлейс) до 30 (слишком большой объём вычислений для современных компьютеров). Из этого диапазона реально используется несколько значений (в данной версии 0,1,3,5,9,11,13,15,19,21,max), если задать другое значение, то используется ближайшее из перечисленных. Значения свыше 15 пока ещё не очень тщательно тестировались и, вероятно, их следует избегать.
Собственно, не добавить и не убавить.
DirectShowSource(«00581.mts»)
AssumeTFF()
TomsMoComp(-1, 1, 0)
Параметр SearchEffort — второй.
Скриншоты для SearchEffort = 1, 30.
На этом, пожалуй, остановлюсь. Какой фильтр использовать, спросите вы? А я отвечу — не знаю. Выбор фильтра сродни спорам о выборе кодека или операционной системы. Пробуйте. Какой вам кажется лучшим — тот и используйте. Если всё же вас раздирают сомнения, то пробуйте сначала YADIF, потом TomsMoComp и если ни один из этих не подошёл SmoothDeinterlace. Чистый Bob используйте в том случае, если вы точно уверены в необходимости его использования.
Разговор был бы неполным без легендарного скрипта MVBob, считается лучшим в своём роде. О нём лучше прочитать всё, что найдётся на doom9.
Если кто-то хочет попробовать, то вот не очень свежая сборка (зато всё в комплекте).
А как же TDeint? На мой взгляд, его можно в ряд с вышеперечисленными ставить.
TDeint — это двунаправленый, компенсированный по движению (резкостный) удалитель чересстрочности (деинтерлейсер). Он также может адаптивно выбирать между использованием адаптации к движению по целым полям и по пикселам. Может использовать кубическую интерполяцию, ядерную (матричную) интерполяцию (с переключением временнОго направления), или одну из двух форм модифицированой краевой адаптивной (ELA) интерполяции, которая помогает уменьшить «зубчатые» края в движущихся областях, где интерполяция должна использоваться. TDeint также поддерживает ручную коррекцию пользователем через специальный входной файл и может работать как интеллектуальный преобразователь полей в полноформатный кадр (bobber) или удалитель черестрочности с сохранением исходной частоты кадров, а также как пост-обработчик обратного преобразования телекино (IVTC).
VJ Софт
В разных конференциях, в том числе и на этом сайте, немало слов посвящено обсуждению этого вопроса.
Цель этой статьи объяснить, как добиться желаемого результата и что необходимо для этого на примере разных программ сжатия.
Многие обращали внимание на отсутствие в описании стандарта DVD такого параметра, как очередность полей (field order), только interlaced или progressive(non-interlaced). Возникает вопрос — почему?
Все оказывается очень просто.
В разных конференциях, в том числе и на этом сайте, немало слов посвящено обсуждению этого вопроса.
Цель этой статьи объяснить, как добиться желаемого результата и что необходимо для этого на примере разных программ сжатия.
Многие обращали внимание на отсутствие в описании стандарта DVD такого параметра, как очередность полей (field order), только interlaced или progressive(non-interlaced). Возникает вопрос — почему?
Все оказывается очень просто.
Аппаратные декодеры mpeg2 в плеерах DVD могут воспроизводить любую очередность полей с правильным выводом на ТВ. Вот здесь есть нюанс, на котором многие и спотыкаются.
Давайте рассмотрим, как представлена информация о полях в mpeg2.
Mpeg2 содержит 2 значения о полях:
2-е значение — так называемый флаг для аппаратного декодера, если он установлен, у файла Upper field first, если снят — Lower. Чтобы не путаться дальше, эти два значения так и будем называть 1-е и 2-е.
При сжатии в mpeg2 основная задача состоит в том, чтобы в готовом файле эти два параметра совпадали,тогда видео будет воспроизводится правильно. Прежде всего, надо точно знать, какой порядок полей (1-е значение) у вашего источника.
Немного справочной информации:
Устройство захвата (источник видео) | Очередность полей | Формат |
miroVIDEO DC10(+)* miroVIDEO DC30(+) miroVIDEO DC50 | Upper field first | MJPEG |
Fast AV Master** miroVIDEO DC20 (+) | Lower field first | MJPEG |
IEEE1394 Pinnacle DV500 Pinnacle Pro-ONE Canopus DV Storm | Lower field first | DV |
Matrox RT2000-2500*** | Upper field first | DV |
SkyStar 1 | Upper field first | MPEG2 MP@ML |
* в последних драйверах для XP при захвате можно указать разную очередность.
** значение по умолчанию, настройки позволяют менять очередность
*** особенности RT2500 рассматриваются только для standalone (самостоятельных) модулей энкодеров.
Обозначения полей.
Upper field first = Top field first = even = field order B (Ulead)
Lower field first = Bottom field first = odd = field order A (Ulead)
Теперь рассмотрим сам процесс.
Дополнительно понадобятся программы для просмотра и изменения 2-го значения, это могут быть Easy Changer (Mpeg Fixer) из пакета DVMPEG компании Darim Vision, или ReStream. Повторюсь, это значение только для аппаратных декодеров, на реальную очередность полей оно не влияет.
Начнем c Cinema Craft Encoder (далее CCE).
Судя по конференциям, этот энкодер вызывает наибольшее количество вопросов.
Ближе к делу.
Cinema Craft Encoder до 2.66.01.07
Cinema Craft Encoder 2.67.00.08
Установленная галка «upper field first» или в последних версиях «Offcet line=1» означают, что изображение будет сдвинуто на одну строку вверх, таким образом в готовом мпеге получаем обратную очередность полей относительно исходного файла (по 1-му значению).
Особенность CCE в том, что при любых настройках 2-е значение для аппаратного декодера DVD всегда будет upper field first, это можно посмотреть указанными выше утилитами.
Таким образом, чтобы получить «правильный» мпег в CCE без дополнительной обработки, нужно:
источник | настройки ССЕ | результат |
Upper field first | Upper field first off. или Offcet line=0 | 1 = Upper field first 2 = Upper field first |
Lower field first | Upper field first on или Offcet line=1 | 1 = Upper field first 2 = Upper field first |
1 и 2 это информация о полях, описанная выше.
Как видно, на выходе всегда получается Upper field first.
Все другие комбинации приводят к несовпадению информации в обоих значениях, отсюда и неправильное воспроизведение на DVD проигрывателях.
CCE понимает файлы RT2500 как Upper Field First (AVI Import).
Теперь очередь за Canopus ProCoder.
Этот энкодер может менять оба значения.
В таблице приведены параметры Source и Target для источников с разной очередностью полей, придерживаясь данных настроек, Вы всегда получите правильный результат.
источник | Source setting | Target setting | результат |
Upper field first | Upper | Upper | 1 = Upper 2 = Upper |
Upper | Lower | 1 = Lower 2 = Lower | |
Lower | Lower | 1 = Upper 2 = Lower | |
Lower | Upper | 1 = Lower 2 = Upper | |
Lower field first | Upper | Upper | 1 = Lower 2 = Upper |
Upper | Lower | 1 = Upper 2 = Lower | |
Lower | Lower | 1 = Lower 2 = Lower | |
Lower | Upper | 1 = Upper 2 = Upper |
красным цветом отмечены неправильные комбинации.
Canopus ProCoder понимает файлы RT2500 как Lower Field First (Direct Show Import).
Настройки в TMPGEnc влияют только на 2-й параметр.
На рисунке установлен Bottom field first, это тоже, что и Lower field first. Выбор параметра зависит от исходника, исходник = готовый мпег. TMPGEnc (настройки по умолчанию) понимает файлы RT2500 как Upper Field First (AVI Import). Хотите как Lower? В настройках на закладке VFAPI Plug-In снимите галку с AVI2(Open DML) File Reader, будет использоваться Direct Show Import (Microsoft DV).
Тоже самое относится и к Mainconcept Mpeg Encoder.
Настройки меняют только 2-е значение. Mainconcept Mpeg Encoder (настройки по умолчанию) понимает файлы RT2500 как Lower Field First (Direct Show Import).
Plug-In энкодеров в программах монтажа работают абсолютно одинаково, очередность полей источника для Plug-In определяется настройками проекта (особенности работы в программах монтажа здесь не рассматриваются).
Как говорилось выше, аппаратные декодеры воспроизводят любой порядок полей. В зависимости от ошибки, которую мы можем допустить при кодировании, 2-е значение всегда можно изменить соответствующими утилитами, происходит это со скоростью копирования и не влияет на качество изображения и битрейт.
Как проверить правильность процесса? Запишите пробный диск на DVD±RW, и посмотрите на DVD плеере. Обойтись без записи на диск можно, воспроизводя файлы через устройство с аппаратным декодером, например через плату Sky Star 1. При определенном навыке можно использовать видеокарты с ТВ выходом Matrox G400-450-550 (родной Upper field first), но поскольку при воспроизведении используются программные декодеры не воспринимающие 2-й параметр, полное представление о совпадении очередности полей в обоих значениях узнаем так:
prr/divxg400/, эта утилита должна быть у каждого владельца Matrox G400-450–550 🙂
В настройках снимите галку «Enable extended overlay». Допустим, у нас есть источник Upper field first. Сожмите для теста мпег длительностью около 10 сек. Посмотрите на телевизор, изображение не должно «дрожать» на движениях, затем посмотрите 2-е значение, флаг «Upper field first» должен стоять. В случае с Lower field first наоборот, мы увидим «трясущееся» изображение, в DivXG400 включаем «Shift Image by one row», картинка будет воспроизводиться правильно, соответсвенно флаг «Upper field first» не должен быть включен. В дополнение ко всему замечу, что все «фирменные» DVD-Video сделаны с Upper field first. Скорей всего этого надо придерживаться и нам.
CCE порядок полей
А что такое камера, NLE?
я занят, позвоните попозже
А что такое камера, NLE?
Подержал камеру в руках
То есть параметр Output top field first просто метка для декодера, поля файла физически не меняет,
а Offset line физически меняет поля файла на обратные. Правильно я понял?
Если снять галку и поставить ноль, то на выходе получим файл с нижними полями и с нижней меткой для декодера.Верно?
А как правильно, менять поля на верхние или оставлять как были? Для декодера это принципиально или все равно?
Подержал камеру в руках
Декодеру всё равно, верно. Но, чтобы спалось спокойнее, лучше всё-таки делать верхние. Все фирменные ДВД идут с верхним полем. Исключение только отечественный самопал, там и вперемешку может быть.
В стандарте ДВД нигде не оговорено, что мпег-2 должен быть с верхним полем. А внутри самого мпег-2 стандарта очереднорсть полей TFF и BFF абсолютно равноправны. Главное чтобы флаг правильный стоял. Поэтому не надо людей пугать несовместимостью. Все будет совместимо!
Научил друга включать камеру
я занят, позвоните попозже
3.10 Output top field first stream
Specify the field order of output stream. If it is selected, an output
stream is top field first. If not, an output is bottom field first. This
setting works on MPEG-2 output.
It is important to set correct field order, because incorrect field
order causes stuttered motion. To set field order correctly, you have
to care about Offset line setting.
• If the field order is same between the source and the output,
Offset line should be 0 or even number.
• If the field order is different between the source and the output,
Offset line should be 1 or odd number.
3.11 Offset line
This parameter specifies offset line from which encoding starts. In
another words, it implies how many lines should be cropped from the
top. For example, if you set 0, no line is cropped and encoding starts
from the top. When the output is MPEG-2 video, it affects the field
order. If this setting is incorrect, the movement of an encoded video
will be jerky. Please be careful about both field orders of output
and source material. (See also Output top field first stream described
above.)