|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
23-Апр-20 15:12
(4 года 8 месяцев назад, ред. 10-Ноя-24 17:33)
Создание гибридов с помощью AutoOverlay AviSynth plugin
1. Введение
В последние годы в Сети распространилось большое количество фильмов с пометкой Open Matte. Подробнее о том, что это такое и зачем они нужны, описано в соответствующей Теме. Раздачи кинофильмов с наполнением кадра, отличным от официальных Blu-ray, стали пользоваться большим спросом. Но зачастую их качество заметно уступает вышеупомянутым исходникам с физических носителей. Фильмы в Open Matte (16:9) - это обычно либо скачанные с онлайн-кинотеатров видеопотоки, либо записанные HDTV с тв-каналов высокой четкости. Изредка встречаются Blu-ray с наполнением Open Matte, но это скорее редкость. Также вместо Open Matte могут быть Fullscreen-версии (4:3) фильмов (либо DVD-диски, либо записи с тв-каналов). В связи с этим возникла потребность улучшить качество этих материалов за счет наложения поверх них видеоряда с Blu-ray. Ввиду периодически поступающих ко мне просьб разъяснить технологию такого наложения, я решил написать данную инструкцию. Инструкция рассчитана на любой (даже нулевой) уровень знаний работы в Avisynth.
Накладывать друг на друга лучше исходники с одного трансфера - в этом случае результат будет максимально качественным. Гибрид нового UHD-трансфера и какого-нибудь старого HDTV или DVD-Fullscreen скорее всего получится (если вообще получится) с заметным переходом на границе наложения, "дрожанием" исходников относительно друг друга.
2. Подготовка системы
Требования:
Также понадобятся:
AvsPmod - программа для предосмотра и редактирования скриптов Плагины для индексирования видео:
ffms2 (рекомендую версию 2.23)
L-SMASH-Source
DGindexNV
Плагины (dll-файлы) в архивах выбираем исходя из битности своей системы. Сохраняем их в любую удобную папку (можно непосредственно в папку плагинов AviSynth C:\Program Files (x86)\AviSynth+\plugins64+\) AutoOverlay - плагин, предназначенный для оптимального наложения одного видеоклипа на другой в автоматическом режиме.
Скачав архив, вытаскиваем все dll-файлы нужной битности:
AutoOverlay_netautoload
AutoOverlayNative
AvsFilterNet
Simd
MathNet.Numerics
Помещаем их все в C:\Program Files (x86)\AviSynth+\plugins64+\ (никаких подпапок внутри (типа х64 или х86) быть не должно). Также важно проверить, что все dll-файлы разблокированы (через Свойства файла). MeGUI - кодировщик видео. Если есть личные предпочтения, можно использовать другой кодировщик. Главное, чтобы он открывал avs-скрипты.
MeGUI нужно скачивать также нужной битности. Рекомендую распаковать его в 2 разных местах. После распаковки запускаем и обновляем фильтры в программе (Tools - Update)
В Options во вкладке Main нужно снять галочку Always use the included Avisynth
3. Начало работы
3.1. Открытие исходников
Выбираем исходники для работы. Если исходник Open Matte один, то выбора нет. Если их несколько, нужно стараться максимально использовать с лучшим качеством, а остальные в качестве заплатки для скрытия лого/замены недостающих кадров. В качестве WS обычно используется ремукс. Но если есть какой-то рип с него, имеющий преимущество в плане цвета, отсутствия бандинга или еще чего-то, можно обойтись и рипом. Если ремукс в контейнере m2ts, рекомендую перепаковать в матрешку. Новичкам советую выбрать фильм, для которого есть хорошая WEB-DL. Работать с интерлейсным HDTV намного сложнее, у него предварительно нужно будет убирать логотип и (возможно) править цвета.
Создаем скрипты для открытия наших исходников (с помощью блокнота, поменяв расширение файла на avs) такого вида:
Код:
LoadPlugin("C:\Program Files\ffms2\ffms2.dll")
ffms2("C:\Hybrid\sourses\OM.mkv")
либо
Код:
LoadPlugin("C:\Program Files\lsmash\LSMASHSource.dll")
LWLibavVideoSource("C:\Hybrid\sourses\WS.mkv")
либо
Код:
LoadPlugin("F:\Program Files\DCDecNV2053_167\x64_Binaries\DGDecodeNV.dll")
DGSource("F:\Hybrid\sources\HDTV.dgi", fieldop=0)
Первая строка - подгрузка плагина для открытия видео, который мы скачали в предыдущем пункте инструкции. Путь к нему указываем свой.
Вторая строка - подгрузка видео с помощью плагина. Указываем путь к вашему исходнику.
Чтобы получить dgi-файл вашего фильма, нужно открыть его в DGIndexNV.exe и нажать F4. Указываем удобное место для сохранения. После индексации прописываем к нему путь в скрипте. Перед запуском необходимо перезапустить AvsPmod. DGDecodeNV может вылетать на слабых видеокартах. В этом случае придется от него отказаться.
Но если у вас ремукс с кодеком VC-1, то могут быть трудности. Иногда LSMASHSource с таким кодеком нормально не открывает (весь фильм в виде серых кадров). ffms2 может у такого ремукса дублировать некоторые кадры. В редакторе они будут неверно накладываться - не обращаем внимания, объединяем со всей сценой. После кодирования должен выйти нормальный видеоряд, без дублированных кадров. Главное избегать, чтобы такой сдублированный кадр не был первым в выбранном вами отрезке фильма для гибрида.
Для прогрессивного видео обычно оптимальный вариант - ffms2, для интерлейсных (HDTV например) скорее всего только LSMASHSource или DGDecodeNV. Не забываем, что у исходников частота кадров должна быть одинаковой (как у ремукса). В случае HDTV частота скорее всего 25 кадров, поэтому в скрипте нужно добавить строку AssumeFPS(24000,1001) и получите 23,976.
Код:
LoadPlugin("C:\Program Files\lsmash\LSMASHSource.dll")
LWLibavVideoSource("C:\Hybrid\sourses\HDTV.mkv")
AssumeFPS(24000,1001)
Если ремукс в 24 кадра, то для ОМ нужна команда AssumeFPS(24, 1).
Таким образом, у нас должно быть 2 скрипта: OM.avs и WS.avs
Пробуем открыть их в AvsPmod. Добавляем скрипт, нажимаем F5 и ждем несколько минут, пока проиндексируется видео. Если все сделали правильно, должны получить примерно такую картину:
Если вы неверно выбрали битность dll-плагина, программа вам об этом скажет. Если неверно прописан путь либо к плагину, либо к файлу видео, также будет ошибка.
Открытое видео можно проматывать по кадрам, проигрывать, изменять масштаб (кликнув правой кнопкой и выбрав Zoom). Слева внизу указывается текущий кадр.
3.2. Создание сравнительного скрипта
Для удобства работы нужно создать дополнительный скрипт сравнения источников (за скрипт спасибо tonik2000):
Код:
LoadPlugin("C:\Program Files\ffms2\ffms2.dll")
ffms2("C:\Hybrid\sources\WS.mkv").crop(0,140,0,-140).trim(0,конечный кадр).Spline64Resize(1080,450)
WS=last
ffms2("C:\Hybrid\sources\OM.mkv").trim(0,конечный кадр).Spline64Resize(800,450)
OM=last
StackHorizontal(WS,OM)
В нем открываются оба наших исходника. Если вы выбрали в качестве WS ремукс, то у него следует отрезать черные полосы. Для этого в коде есть команда crop(0,140,0,-140). 140 пикселей - самая распространенная высота полос на ремуксах, но у вас может быть другая, поэтому ее надо будет скорректировать. Резать можно только на число, кратное 2. Если у вас высота полос нечетное число, нужно выбрать ближайшее меньшее четное. Если используете вместо ремукса рип, то crop вообще не нужен. Если у ОМ-исходника есть небольшие черные полосы (сбоку, сверху/снизу), то их тоже можно обрезать - но здесь это необязательно.
Команда trim задает, с какого кадра по какой открывать видео-файл. Конечный кадр мы узнаем из одиночно открытых видео в предыдущем пункте (промотав их до конца). Начальный кадр пока ставим у обоих исходников 0.
Команда Lanczos4Resize нужна, чтобы выровнять оба исходника по высоте. Если у вас исходник WS с черными полосами не 140, а меньше, то стоит откорректировать выходную ширину. Главное, чтобы высота исходников была одинаковой.
Создав такой скрипт (к примеру comparison.avs), открываем его в AvsPmod и получим:
Для того, чтобы видео проигрывались синхронно, нужно у одного из исходников изменить начальный кадр. Для этого в одиночных скриптах находим одинаковый кадр фильма (легче всего начало новой сцены):
Посчитав разницу между кадрами, узнаем задержку. Ее то и вставим как начальный кадр в то видео, которое запаздывает. И жмем F5. Тогда наши видео сравняются:
Теперь их можно проигрывать вместе и видеть разницу в наполнении. Также этот скрипт поможет увидеть, когда у ОМ-исходника будет (если будет) недоставать каких-то кадров. Если такое случится, по мере проигрывания можно менять стартовый кадр. Те места, где не хватает кадров, нужно гибридить с другим исходником (если он есть). Поэтому желательно иметь хотя бы 2 ОМ-исходника, иначе придется такую сцену вырезать из WS.
В моем примере начало фильма по высоте кадра совпадает, поэтому смысла гибридить его нет, и я просто вырезал этот фрагмент из ремукса, сделав скрипт 1WS.avs
Код:
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\ffms2.dll")
ffms2("C:\Hybrid\sourses\WS.mkv")
trim(0,1131)
Для наглядности этого этапа я сделал видео-пример.
В качестве альтернативного варианта можно изначально выровнять все исходники одной версии фильма (например, театральной) по продолжительности с точностью до кадра. Это позволит открывать одинаковый кадр во всех исходниках, лишь переключая вкладки. AvsPmod сам будет переходить на этот же кадр при условии, что количество кадров и разрешение видео одинаковы.
Для этого с помощью команд trim, DuplicateFrame, DeleteFrame добавляем/убираем недостающие/лишние кадры у наших исходников под число кадров у BD. У WEB-DL обычно не хватает черных кадров в начале и конце (их можно взять из черных мест в титрах, найдя нужные места). У HDTV недостающих кадров может быть намного больше, особенно если там есть рекламные вставки или битые места.
(в моём примере вместо BDRemux я использовал BDRip с другими цветами, поэтому я добавил ему поля по 20 пикселей)
Тогда в сравнительном скрипте указываем не сами исходники, а avs-скрипты, в которых мы все кадры выровняли. Команда trim уже не понадобится.
Код:
AviSource("C:\Hybrid\sourсes\WS.avs").crop(0,140,0,-140).Spline64Resize(1080,450)
WS=last
AviSource("C:\Hybrid\sourсes\OM.avs").Spline64Resize(800,450)
OM=last
StackHorizontal(WS,OM)
4. Работа с плагином AutoOverlay
4.1 Выбор отрезка и пробный проход
Для удобства работы предлагаю создать на компьютере папку Hybrid и внутри нее создать еще 2 папки: avs и stat. В первую будем помещать скрипты отрезков обоих версий фильма. И первым туда отправляем 1WS.avs из предыдущего пункта. Насчет содержимого папки stat поясню позже.
Чтобы начать делать гибрид, нужно наметить 2 одинаковых отрезка фильма из обоих источников. Если, как в моем примере, в начале фильма на заставке у ОМ-исходника не было преимущества по высоте, начинать стоит как только эта разница появится (а все что до этого вырезать как я описал выше). Если разница в наполнении кадра идет с начала фильма, начинать надо с 0 кадра у WS. В этом случае у ОМ может в начале недоставать кадров. Их придется отдельно вырезать у WS как отдельный отрезок фильма.
Продолжая свой пример, я создам 2 файла-скрипта:
2OM.avs:
Код:
LoadPlugin("C:\Program Files\ffms2\ffms2.dll")
ffms2("C:\Hybrid\sources\OM.mkv")
trim(1084,3778)
*Если у вас ОМ - это HDTV, то код будет таким:
Код:
LoadPlugin("C:\Program Files\lsmash\LSMASHSource.dll")
LWLibavVideoSource("C:\Hybrid\sources\HDTV.mkv")
AssumeFPS(24000,1001)
trim(1084,3778)
2WS.avs:
Код:
LoadPlugin("C:\Program Files\ffms2\ffms2.dll")
ffms2("C:\Hybrid\sources\WS.mkv")
trim(1132,3826)
Номера начальных и конечных кадров соответствуют одинаковым начальным и конечным кадрам выбранного отрезка фильма в разных исходниках:
Если посчитать разницу кадров для каждого отрезка, выйдет одинаковое число (2694 в данном случае). Так должно быть всегда! Если вдруг разница отличается, значит в одном из исходников потерян кадр(ы), надо искать где, какой и думать, откуда его взять (из другого исходника или как то сдублировать). Выбор длины отрезка зависит от фильма. Можно остановиться перед сценой, на которой прекращается преимущество по высоте ОМ-исходника (особенно если она длинная). Можно выбрать целую сцену фильма (например следуя чаптерам с ремукса). Можно даже дойти до конца фильма и найти общий конечный кадр в титрах. Но новичкам советую выбрать отрезок в несколько минут.
Если исходники уже выровнены по количеству кадров, то в отрезках можно ссылаться на их avs-скрипты, а номера кадров для эпизода будут одинаковые:
2WS.avs:
Код:
AviSource("C:\Hybrid\sources\WS.avs")
trim(1132,3826)
2OM.avs:
Код:
AviSource("C:\Hybrid\sources\OM.avs")
trim(1132,3826)
Ну и когда первая пара скриптов готова, можно попробовать запустить первый пробный проход. Для этого нужно создать скрипт автоматического наложения исходников. Вот пример вполне рабочего скрипта (за скрипт спасибо tonik2000):
Hybrid.avs
LoadPlugin("C:\Program Files\DVD\AutoOverlay\AvsFilterNet.dll")
LoadNetPlugin("C:\Program Files\DVD\AutoOverlay\AutoOverlay_netautoload.dll")
OM=AviSource("C:\Hybrid\avs\2OM.avs").crop(0,0,0,0).ConvertToYV12() # YV12 clip
WS=AviSource("C:\Hybrid\avs\2WS.avs").crop(0,140,0,-140).ConvertToYV12() # YV12 clip
config=OverlayConfig(subpixel=1, branches=1, requiredSampleArea=3000, minSampleArea=3000, acceptableDiff=5, minSourceArea=50, minOverlayArea=50)
OverlayEngine(OM.ConvertToY8, WS.ConvertToY8, statFile="C:\Hybrid\stat\Overlay 2OM-WS.stat", configs=config,\
editor=false, backwardFrames=5, forwardFrames=15, maxDiff=5, maxDiffIncrease=1, maxDeviation=0, stabilize=true)
aap=OverlayRender(OM.ConvertToYV24, WS.ConvertToYV24, debug=false, noise=0,\
mode=3, upsize="Spline64Resize", downsize="Spline64Resize", gradient=20, coloradjust=1, opacity=1, width=1920, height=1080) \
.converttoyv12
return aap
Первые 2 строки - подгрузка dll из архива AutoOverlay.zip. В скрипте мы подгружаем только 2 файла из 3, сохраненных нами в папке AutoOverlay на 2м этапе инструкции.
Далее 2 строки - подгрузка наших созданных ранее отрезков исходников. Жирным я выделил обрезку черных полос у ремукса. У ОМ-исходника также может понадобиться небольшая подрезка краев, если есть черные области.
Необходимо также помнить про аспект исходников. Например, если вы вместо OM используете Fullscreen (у которого обычно искаженные пропорции), нужно задать ему верный аспект. Один из вариантов - изменить размер изображения:
FS=FS.Spline64Resize(1450,1080)
Эту строку можно вписать в код гибрида после подгрузки исходников (естественно, поменяв в коде все ОМ на FS).
Другой вариант - в блок OverlayConfig добавить aspectRatio1=1.34
Размер (1450,1080) и аспект даны как пример, для каждого конкретного фильма или даже сцены(!) значения могут быть другими. Когда будете работать в Визуальном редакторе (следующий раздел инструкции), через превью будет видно, насколько удачно или неудачно вы подобрали аспект.
Более выигрышный вариант использования FS - положить его сверху на WS (для этого в скрипте их надо поменять местами, а также сделать opacity=0). В этом случае неверно определенный аспект существенной роли играть не будет - вы сможете подправить его более точно уже в редакторе (но чем точнее определен аспект заранее, тем точнее будет наложение, и тем меньше придется работать в редакторе). Еще один плюс - не придется никак растягивать WS-исходник.
Далее идут настройки наложения. Рассказывать о настройках я не буду - о каждом параметре подробно можно почитать в README-файле, находящемся также в архиве AutoOverlay.zip (настоятельно советую подробно изучить этот файл). Остановлюсь лишь на некоторых моментах, которые я выделил жирным.
statFile="C:\Hybrid\stat\Overlay 2OM-WS.stat - файл статистики. Он появится после пробного прохода в папке stat. Его номер должен соответствовать номеру выбранного эпизода фильма. Для следующих отрезков фильма нужно будет в скрипте менять три цифры (у пары OM.avs, WS.avs и файла .stat )
3OM.avs
3WS.avs
3OM-WS.stat
ну и так далее. если вы забудете поменять номер stat-файла, следующая сцена закодируется с настройками предыдущего эпизода.
mode - способ совмещения изображений
Цитата:
1 - обрезка по краям основного изображения.
2 - совмещение обоих изображений с обрезкой по краям выходного клипа.
3 - совмещение обоих изображений без обрезки.
4 - как 3, только с заполнением пустых углов по типу ambilight.
5 - как 3, только с заполнением всего пустого пространства по типу ambilight.
6 - маска режима 3. Используется для совмещения результата с еще одним клипом.
7 - как в режиме 1, только выводится разница между изображениями (удобно для тестирования).
mode=1...............................mode=2..............................mode=3..............................mode=4..............................mode=5
Первый режим вам подойдет, если вы хотите просто улучшить качество ОМ-исходника. 3, 4 и 5 режимы не будут ничего обрезать.
Для пробного прохода рекомендую включить mode=3 как самый наглядный. В нем лучше всего видно, как накладываются изображения. В дальнейшем в каком режиме работать, решать только вам. Можно комбинировать режимы от сцены к сцене. Сделав первый пробный проход с одним режимом, второй (окончательный) проход можно делать в любом другом.
coloradjust - способ цветокоррекции
Начиная с версии 0.3:
Цитата:
-1 - без изменения цвета.
0 - стремление к цвету основного клипа.
1 - накладываемого клипа.
0.5 - усредненный цвет.
Цветокоррекция основана на сравнении гистограмм области пересечения.
Обычно используют цвета ремукса. У ОМ-исходников цвета бывают какие-угодно, а задуманная режиссером палитра скорее всего все-таки должна быть на официальном исходнике. Но не всегда удается откорректировать цвет без дефектов. Обычно они возникают на очень светлых (небо, яркие светильники) либо очень темных (черные углы) частях кадра:
В таких сценах придется ставить цвета ОМ (выделить эти сцены в отдельный отрезок со своим номером и файлом статистики, либо закодировать как trim от скрипта hybrid.avs).
Код:
AviSource("C:\Hybrid\Hybrid.avs")
trim(252,703)
Также можно попробовать сделать эти сцены специальным скриптом, подробнее в пункте 4.2.
Но и в случае coloradjust под ОМ могут иногда возникать артефакты (уже в области WS). coloradjust без изменения цвета практически не применяется, потому что исходники одинаковой гаммы трудно найти, разница цветов будет заметна.
Вы можете написать и использовать свой скрипт, со своими параметрами наложения, либо корректировать представленный выше.
Основная задача пробного прохода - сформировать файл статистики. Ну и заодно посмотреть, как накладываются исходники, есть ли где-то артефакты. Чтобы запустить пробный проход, можно выбрать одну из копий MeGUI, который мы разархивировали в 2 разные папки. Открыв настройки (Config), выставляем однопроходный Encoding Mode и низкий пресет (например Super Fast) и сохраняем. С такими настройками пробный проход будет проходить несколько быстрее, чем с более качественными.
Запускаем скрипт Hybrid.avs:
После вставки скрипта в поле AviSynth Script откроется окно превью в середине сцены. Закрываем его и видим, что поле Video Output уже само заполнилось. При желании можно изменить название выходного файла (например, добавив номер сцены). Далее жмем Queue и ждем окончания процесса. Иногда процесс может не запуститься, программа вылететь. Ничего страшного, запускаем MeGUI снова, во вкладке Queue удаляем процессы с пометкой error и снова жмем Queue. Полученный файл внимательно просматриваем на предмет артефактов, ошибок наложения и просто чтобы оценить результат. Во избежание зависаний после каждого успешного кодирования MeGUI лучше закрывать.
Альтернативный способ сформировать файл статистики: открыть Hybrid.avs в AvsPmod и запустить Run analysis pass
4.2 Работа в визуальном редакторе
Получив видео-файл после пробного прохода и приняв решение, весь ли его нужно будет кодировать (в зависимости от того, есть ли артефакты цветокоррекции) или только до определенного кадра, необходимо исправить все ошибки и неточности наложения. Для этого открываем скрипт Hybrid.avs в AvsPmod, меняем в OverlayEngine значение editor= false на editor= true. Жмем F5 и попадаем в редактор.
Цитата:
Слева превью кадра. Внизу трекбар по количеству кадров и поле ввода текущего кадра. Справа таблица, отображающая кадры с одинаковыми параметрами наложения, объединенные в эпизоды. Между эпизодами можно переключаться. Под гридом панель управления.
Overlay settings - параметры наложения текущего эпизода. Обрезка (crop) в тысячных пикселя в диапазоне от 0 до 1000.
Кнопка AutoOverlay frame - повторный прогон AutoOverlay для текущего кадра, характеристики наложения распространяются на весь эпизод.
Кнопка AutoOverlay scene - повторный прогон AutoOverlay для всех кадров, составляющих эпизод, в результате чего он может быть разбит на несколько.
Измененные и несохраненные эпизоды подсвечиваются желтым цветом в гриде. Кнопка save - сохранение изменений. Reset - сброс изменений и повторная загрузка данных. Reload - перезагрузка характеристик для текущего кадра, распространяющиеся на весь эпизод.
Separate - обособление кадра. Join prev - присоединить кадры предыдущего эпизода. Join next - присоединить кадры следующего эпизода. Join to - присоединить кадры до введенного включительно.
Горячие клавиши:
* Ctrl + S - сохранить
* Ctrl + R - перезагрузить
* D - включить/отключить difference
* P - включить/отключить предосмотр
* Ctrl + стрелки - двигать накладываемое изображение
* Ctrl + add/subtract - масштабировать накладываемое изображение
* A, Z - следующий/предыдущий кадр
* Home / End - начало / конец эпизода
Каждый кадр наложения имеет свои координаты (X и Y), размер наложения Overlay settings и обрезку (crop). По ним можно приблизительно догадаться, какие кадры находятся в одном эпизоде:
Основная задача - объединить все кадры одной сцены (под сценой я имею ввиду эпизод с одного ракурса камеры) в один блок. Для этого нужно определиться, какой из кадров лучше всего наложился, и к нему присоединить остальные. Можно включить режим difference (кнопка D) и посмотреть, какой кадр в сцене самый серый, то есть в нем наименее видны силуэты людей и предметов в кадре. Либо включать/выключать предосмотр (кнопкой P) и сравнивать наложение с нижним кадром. Выбрав такой кадр, можно при необходимости его подровнять, изменяя координаты X и Y, Overlay settings и обрезку (crop). Подрезка crop ощутима только в четырехзначных числах. Она как бы растягивает изображение в ту сторону, с которой ее прописываешь. Ее влияние лучше видно в режиме D. Нужна в том случае, если по координатам не удается точно подстроить кадр. После этого кнопками Join присоединяем к нему все кадры эпизода и получаем единый блок. Это необходимо, чтобы на протяжении одной сцены кадр не "дрожал".
Иногда бывает, что первый кадр эпизода попал в предыдущий блок. Необходимо убедиться, что этого не произошло. Для этого нажимаем на каждый эпизод и жмем Z. Если все-таки кадр попал "не туда", обособляем его кнопкой Separate и потом, выделив верный эпизод, кнопкой Join присоединяем кадр к нужному блоку. Также удобно перемещаться из начала в конец блока кнопками Home / End.
В результате таблица справа станет более компактной:
Для наглядности можно посмотреть видео-ролик. В начале ролика я для наглядности показываю начальные и конечные кадры обоих исходников для выбранной сцены.
Если вы выбрали для работы довольно продолжительный отрезок фильма (или даже весь фильм сразу), нужно убедиться, что в редактор подгрузились все кадры. Для этого внизу смотрим слева от ячейки Frame полное число кадров. Если оно меньше чем в ваших OM.avs и WS.avs, необходимо ввести в эту ячейку верное значение и нажать Enter - оставшиеся кадры подгрузятся.
Исключение составляют пан-скан сцены. В таких сценах идет смещение накладываемого изображения по одной или обеим координатам, а также изменение его размера (масштабирование). Очень часто такие эпизоды встречаются в IMAX-сценах. Но и для обычных ОМ тоже не редкость.
Выглядят такие сцены так:
На видео в режиме mode=3 это видно постепенным изменением черных углов в пределах сцены.
В таких сценах нужно стараться сравнять (если это возможно) хотя бы часть параметров: для горизонтального пан-скана выставить одинаковый Y, для вертикального - одинаковый X. При этом Overlay size тоже должен быть примерно одинаковым. Прощелкав всю сцену от начала до конца (все кадры) в режиме difference, объединяя или разъединяя кадры, добиваемся наилучшего наложения каждого кадра. Можно присоединять уже выровненные кадры к следующим, а потом следующие обособить и изменить один параметр в нужную сторону смещения, скопировав таким образом остальные параметры. В качестве альтернативы можно попробовать сначала объединить всю сцену в один блок, выровнять первый кадр и нажать кнопку Pan&Scan, чтобы выравнивание прошло в автоматическом режиме. Иногда это очень помогает, иногда наоборот делает хуже.
наиболее часто встречающиеся типы сцен pan-scan (уже выровненные):
горизонтальный пан-скан.........вертикальный пан-скан
А вот если Overlay size явно меняется от кадра к кадру в сторону увеличения/уменьшения, то здесь могут быть любые варианты с координатами. В таких случаях работать с каждым кадром индивидуально.
Сделав все необходимые изменения в таблице, закрываем окно редактора и возвращаем в скрипте editor= false (ну или просто не сохраняем изменения). Теперь этот скрипт можно отправлять в MeGUI для окончательного кодирования. Для этого запускаем другую копию программы и выставляем в ней пресет Placebo:
Режим кодирования выбирайте из личных предпочтений/знаний. Можно оставить однопроходный с постоянным Quality = 16-18 (подойдет для современных фильмов, снятых на "цифру"), либо выбрать кодирование в несколько проходов с заданным битрейтом (подойдет для более старых фильмов, снятых на пленку и имеющих зерно). Если закодировать зернистый фильм с постоянным Quality, может выйти очень большой битрейт и размер. Но это решать кодировщику. Остальные настройки кодирования в других вкладках также стоит выставить, исходя из своих знаний (свои я навязывать не буду) и фильма.
Таким образом, имея 2 копии программы MeGUI, одну используем для пробных (быстрых) проходов с низким пресетом, а другую для окончательного кодирования с сохраненными оптимальными настройками под конкретный фильм. (На моих видео-роликах внизу иконка MeGUI для пробных проходов находится справа, для окончательных - слева)
Если все же необходимо использовать цвета WS по всему фильму/сцене, а возникли артефакты цветокоррекции, можно для такой неудачной сцены применить специальный скрипт. Работает только в версии 0.5 и выше! Также нужно скачать плагин resampleMT и поместить его в папку плагинов ависинта plugins64+ (там, где он у вас установлен).
Делаем исходные отрезки нужной сцены, добавив новый trim в уже имеющиеся отрезки. Допустим, мы работали с 20й сценой (файлы 20OM.avs и 20WS.avs). В определенном блоке нужно поработать с цветом:
Добавляем в каждый скрипт нач. и кон. кадры этого блока - trim(6029,6053). Получаем
20-20OM.avs
Код:
AviSource("F:\Hybrid\sourses\SH OM.avs")
trim(139767,153500)
trim(6029,6053)
20-20WS.avs
Код:
AviSource("F:\Hybrid\sourses\SH BD CE.avs")
trim(139767,153500)
trim(6029,6053)
В моем случае это 20я подсцена в 20м отрезке всего фильма. Вписываем эти отрезки в специальный скрипт:
Hybrid_scene.avs
LoadPlugin("F:\AutoOverlay\AvsFilterNet.dll")
LoadNetPlugin("F:\AutoOverlay\AutoOverlay_netautoload.dll")
OM=AviSource("F:\Hybrid\avs\20-20OM.avs").crop(0,0,0,0).ConvertToYV24()
WS=AviSource("F:\Hybrid\avs\20-20WS.avs").crop(0,130,0,-132).ConvertToYV24()
config=OverlayConfig(subpixel=1, branches=1, requiredSampleArea=2000, minSampleArea=4000, minSourceArea=60, minOverlayArea=60) WStest=OverlayEngine(OM, WS, configs=config, editor=false, backwardFrames=1, forwardFrames=3, maxDiff=5, maxDiffIncrease=1, maxDeviation=0.4, stabilize=true, presize="BilinearResizeMT", resize="Spline16ResizeMT"). \
OverlayRender(OM.ConvertTorgb24(matrix="Rec709"), WS.ConvertTorgb24(matrix="Rec709"), colorAdjust=0, opacity=0, invert=true, upsize="BilinearResize", downsize="BilinearResize").ConvertToY8(matrix="Rec709")
OverlayEngine(OM, WStest, statFile="F:\Hybrid\stat\Overlay 20-20OM-WS v5.stat", configs=config, editor=false, backwardFrames=5, forwardFrames=15, maxDiff=8, maxDiffIncrease=1.5, maxDeviation=0.4, stabilize=true, presize="BilinearResizeMT", resize="Spline16ResizeMT") AdjustSceneAsFrame(OM, WS, 0, FrameCount, 5) function AdjustSceneAsFrame(clip engine, clip src, clip over, int start, int end, int referenece) {
reference=engine.OverlayRender(src, over, opacity=0, coloradjust=1, colorFramesCount=1, extrapolation=true, upsize="BilinearResizeMT", downsize="BilinearResizeMT")
srcAdjusted=ColorAdjust(src, src.Trim(referenece,referenece), reference.Trim(referenece,referenece))
return engine.Trim(start, end).OverlayRender(srcAdjusted.Trim(start, end), over.Trim(start, end), mode=1, upsize="Spline64ResizeMT", downsize="Spline64ResizeMT", gradient=20)
}
ConvertBits(8)
ConvertToYV12()
Сразу же указываем свой файл статистики для этой сцены. Запускаем этот скрипт в AvsPmod (будет долго грузиться) и сразу запускаем формирование файла статистики (Run analysis pass).
Выровняв сцену, обращаем внимание на строку в скрипте AdjustSceneAsFrame(OM, WS, 0, FrameCount, 5). Последнее число - кадр, по которому как образцу надо брать цвет для всей сцены. Его нужно подобрать, просмотрев всю сцену целиком:
Кадр должен быть с максимальным диапазоном цветов для этой сцены (обычно самый яркий, светлый). Меняя номер кадра в скрипте, ищем самый удачный, чтобы не было артефактов. Найдя, сохраняем скрипт (при этом не забываем editor=false). Теперь можно эту сцену закодировать отдельно, запустив в MeGUI скрипт Hybrid_scene.avs
4.3 Устранение логотипа и корректировка цвета у HDTV-исходника
Если в качестве основного исходника Вы хотите использовать HDTV, необходимо убрать у него логотип и, при необходимости, подправить цвет и яркость. Поможет нам в этом снова плагин AutoOverlay.
Рассмотрим пример записи с 1HD. Для устранения лого нам понадобится низкобитрейтная web-dl:
Как известно, на 1HD картинка всегда светлее чем на официальном носителе (что видно на сравнении). Создадим маску для будущего скрипта в формате png:
Черная область означает, что в ней будет полностью накладываться изображение из вэбки, белая - наложения не будет вообще. А промежуточный цвет (градиент) необходим для плавности перехода. По краям я добавил 2 пикселя черных полос, т.к. у 1HD там есть черные полоски, а на web-dl - изображение. Выбрав определенный отрезок фильма у обоих исходников, напишем такой скрипт (за скрипт спасибо tonik2000):
Код:
LoadPlugin("C:\Program Files\DVD\AutoOverlay\AvsFilterNet.dll")
LoadNetPlugin("C:\Program Files\DVD\AutoOverlay\AutoOverlay_netautoload.dll")
web=AviSource("C:\Hybrid\avs\12WEB.avs").ConvertToYV24()
tv=AviSource("C:\Hybrid\avs\12HDTV.avs").ConvertToYV24()
web8=web.ConvertToY8()
tv8=tv.ConvertToY8()
mask=ImageSource("C:\Hybrid\1HD.png", pixel_type="Y8")
OverlayEngine(tv8, web8, statFile="C:\Hybrid\stat\HDTV.stat", editor=false, sourceMask=mask, configs=OverlayConfig(subpixel=1, minSourceArea=90, minOverlayArea=90), backwardFrames=0)
mask=OverlayRender(mask, web8, sourceMask=mask, mode=4, opacity=0, gradient=20)
OverlayRender(tv, web, sourceMask=mask, mode=4, gradient=20, ColorAdjust=1).Overlay(OverlayRender(tv, web, opacity=0, mode=4, ColorAdjust=1), mask=mask)
ConvertBits(8)
ConvertToYV12()
Поскольку кадры у исходников у меня идентичны (кроме черных областей на маске), в качестве HDTV.stat в данном случае я использовал уже готовый stat-файл от другого достаточно длинного отрезка фильма, объединив в нем все кадры в один блок и выставив им параметры X=0, Y=0 и Overlay size 1920*1080. Точность наложения всегда можно проверить через визуальный редактор.
Если у ваших ОМ-исходников наполнение не совпадает, его можно исправить через редактор или предварительно с помощью обрезки/растяжения. Данный скрипт скорее всего придется закодировать отдельно и получить уже неплохой ОМ-исходник для последующего совмещения с ремуксом:
(Можно конечно попробовать подставить этот скрипт сразу в Hybrid.avs, заменив им OM.avs в коде. Но скорее всего такой модифицированный скрипт не запустится.)
В некоторых сценах могут возникать артефакты цветокоррекции на очень светлых местах в виде свечений:
Если накладываемый сверху ремукс не может полностью закрыть эти области, придется на этих эпизодах исключать их в маске (1HD.png), добавив в эти места черноту:
Либо использовать в этих сценах другое значение colorAdjust (в 2 местах скрипта).
Также добавление таких черных областей поможет скрыть различные дефекты на HDTV (на битых кадрах например):
Не забываем про градиент на границе областей.
4.4 Объединение ОМ-исходников в один
Если имеется несколько ОМ-исходников со средним качеством, можно объединить их в один, получив суммарное качество. С этим поможет ComplexityOverlay.
Цитата:
Независимый фильтр для совмещения наиболее сложных участков двух клипов. Подходит для совмещения двух источников низкого качества. Клипы должны иметь одинаковые кадрирование, цвет, разрешения и цветовые пространства.
Подробное описание функций фильтра есть в readme-файле, прилагающемся к плагину AutoOverlay.
Приведу пример использования фильтра для гибрида Prometheus.
В наличии имелись 2 WEB-DL Amazon AMC+ (VBR и CBR) и HDTV 1 канал. Вэбки AMC+ изначально были с частотой 24 кадра в секунду, но с продолжительностью как у 23,976. Произошло это за счет лишних кадров, которые встречались через каждые 1001 кадр, начиная с 501го. Поэтому в скрипт каждой вэбки (CBR.avs и VBR.avs) я добавил строку:
Trim(0, 500) + SelectRangeEvery(every=1001, length=1000, offset=502)
Также у каждой есть битые/затемненные и еще лишние кадры, которые необходимо заменить/удалить кадрами низкобитрейтных вэбок (IVI, OKKO и тд). Для этого есть спец пользовательские функции DeleteFrame, aoDelete, aoDelay, aoInsert. Описание также можно найти в readme-файле. Для использования кадров IVI надо ее прописать в скрипте вэбок Амазона:
IVI=avisource("F:\Hybrid\sources\IVI.avs")
Начальные кадры у обеих вэбок должны быть выровнены, чтобы дальнейшая нумерация кадров совпадала.
Примеры:
aoDelay(-160) - удалить первые 160 кадров
aoInsert(IVI, 106757, 106759) - заменить 3 кадра в AMC+ на кадры из IVI
aoDelete(110837, 110924) - удалить кадры с 110837 по 110924
Подобные манипуляции проводим и с HDTV. И не забываем для всех видео прописать верную частоту кадров AssumeFPS(24000,1001). Все полученные видео должны совпадать с точностью до кадра на протяжении всего фильма!
После этого делаем общий скрипт:
Код:
LoadPlugin("F:\AutoOverlay\AvsFilterNet.dll")
LoadNetPlugin("F:\AutoOverlay\AutoOverlay_netautoload.dll")
CBR=avisource("F:\Hybrid\sources\prom_CBR.avs") # задаем имена для вэбок AMC+
VBR=avisource("F:\Hybrid\sources\prom_VBR.avs") # задаем имена для вэбок AMC+ ComplexityOverlay(CBR, VBR, smooth=0.3)
AMC=last # объединили обе вэбки AMC+ и получили поток, названный AMC
avisource("F:\Hybrid\sources\prom_ORT_libav.avs") # открываем скрипт HDTV, далее идет устранение логотипа без использования маски и корректировка цвета под AMC.
mask=BlankClip(pixel_type="Y8", width=width, height=height, color_yuv=$FFFFFF, length=1).Overlay(BlankClip(pixel_type="Y8", width=180, height=100, color_yuv=$000000), 1656, 54).ExtractY().aoInvertBorders(2,0,2)
ColorAdjust(last, last, AMC, mask, mask)
Overlay(AMC, mask=mask.Invert().aoExpand(4, "lighten")) level=100
highlightMask=ColorRangeMask(low=level, high=255 - level, greyMask=false).Invert().MergeLuma(ColorRangeMask(low=255-level, high=255, greyMask=true)).aoExpand(3, "lighten")
ORT=Overlay(AMC, mask=highlightMask, greyMask=false) # задаем имя для потока HDTV ComplexityOverlay(AMC, ORT, smooth=0.5) function aoExpand(clip mask, int pixels, string mode) {
mask
for (i = 0, pixels) {
Overlay(mask, 1, 0, mode = mode)
Overlay(mask, -1, 0, mode = mode)
Overlay(mask, 0, 1, mode = mode)
Overlay(mask, 0, -1, mode = mode)
mask = last
}
for (i = 0, pixels) {
mask = mask.Blur(1.58)
}
return mask
}
В итоге получаем видеоряд с суммарным качеством всех ОМ-исходников.
Несколько наглядных примеров результата:
AMC CBR.......................AMC VBR.......................HDTV...............................OM
Естественно, такой скрипт в дальнейшей работе будет грузиться значительно дольше, и скорость совмещения с BD также снизится.
4.5 Выравнивание зернистости исходников
Бывают ситуации, когда в ремуксе на фильм дополнительно наложено зерно. На гибриде эта разница будет сильно видна:
Для устранения такого безобразия можно применить один из двух плагинов добавления шумов: AddGrainC или FilmGrain. Вытащив dll нужной разрядности и положив его в удобную папку, в скрипте OM.avs после trim (выбора отрезка фильма) подгружаем плагин и прописываем настройки наложения зерна:
Код:
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\AddGrainC.dll")
AddGrainC(var=0.0, uvar=0.0, hcorr=0.0, vcorr=0.0, seed=-1, constant=false, sse2=true)
или
Код:
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\HDRNoise.dll")
NoiseY(amp=0, seed=0, mode=1, bitdepth=8)
Подробнее про параметры можно почитать тут или в текстовых файлах внутри архивов с плагинами. Для приведенной выше картинки я использовал AddGrainC с var=30.0. Следует помнить, что зернистость может меняться от сцены к сцене.
Также небольшую зернистость полезно применять, чтобы скрыть слабость ОМ-исходника. Например, такое бывает необходимо в темных сценах, где ОМ может терять детализацию.
без зерна.........................................................с зерном
Нужно помнить, что если вы работаете в режиме mode=4, зернисть будет влиять и на "замыленные" углы, иногда делая их более заметными.
4.6 Работа с тремя исходниками
Встречаются фильмы, у которых есть 3 исходника с разным аспектом.
DVD FS .............................. WEB-DL ................................ BD
Такое может наблюдаться на протяжении всего фильма или лишь в некоторых сценах. Если вы работаете в режимах mode=3 - 5 и хотите максимально использовать изображение всех трех, придется работать в 2 этапа.
В первую очередь можно сделать уже знакомый гибрид OM с WS (скрипт Hybrid OM WS.avs). Выровняв статистику, вы должны иметь сцену с фиксированной высотой кадра. Узнав, какой высоты получились черные полосы, прописываем это в новом скрипте:
Hybrid FS OM-WS.avs
LoadPlugin("C:\Program Files\DVD\AutoOverlay\AvsFilterNet.dll")
LoadNetPlugin("C:\Program Files\DVD\AutoOverlay\AutoOverlay_netautoload.dll")
FS=AviSource("C:\Hybrid\avs\2FS.avs").ConvertToYUY2().crop(0,0,0,0)
WS=AviSource("C:\Hybrid\Hybrid OM WS.avs").ConvertToYUY2().crop(0,0,0,-0)
FS=FS.Lanczos4Resize(1450,1080)
config=OverlayConfig(subpixel=1, branches=1, requiredSampleArea=3000, minSampleArea=3000, acceptableDiff=20, minSourceArea=50, minOverlayArea=50)
OverlayEngine(FS.ConvertToY8, WS.ConvertToY8, statFile="C:\Hybrid\stat\Overlay 2FS-OM-WS.stat", configs=config,\
editor=false, backwardFrames=5, forwardFrames=15, maxDiff=5, maxDiffIncrease=1, maxDeviation=0, stabilize=true)
aap=OverlayRender(FS.ConvertToYV24, WS.ConvertToYV24, debug=false, noise=0,\
mode=3, upsize="Spline64Resize", downsize="Spline64Resize", gradient=20, coloradjust=2, opacity=1, width=1920, height=1080) \
.converttoyv12
return aap
Как видно в коде, вместо WS-исходника у нас стоит гибрид. Для него нужно будет отрезать сверху/снизу (или вдруг с боков) черные полосы. stat-файл для этого отрезка нужен новый.
В результате мы должны получить кадр с "лесенкой" в углах.
Как и в пункте 4.1 рекомендую наоборот положить FS сверху на WS (для этого в скрипте их надо поменять местами, а также сделать opacity=0).
Естественно, у гибрида OM-WS высота кадра может меняться постоянно, в каждой сцене. Поэтому данную схему работы придется применять поэпизодно. И уж точно не получится так работать в пан-скан сценах.
Возможно, в дальнейшем удастся упростить метод работы с 3 исходниками.
4.7 Задвоение хардсабов в кадре
В некоторых фильмах на обоих исходниках могут присутствовать хардсабы, расположенные в разных местах:
В результате совмещения таких кадров получаем задвоение надписей:
Для решения подобной ситуации нам необходимо убрать хардсаб WS-исходника (2 верхние строки) и вернуть скрытую первую строку ОМ-исходника. Для этого мы рисуем маску, в которой в белую область должен попасть весь хардсаб от WS и та область, где скрыта надпись у ОМ:
Делаем копию нашего скрипта Hybrid.avs (например Hybrid-2.avs) и в нем меняем параметр opacity с 1 на 0. Этим скриптом мы получаем тот же гибрид, но без использования WS-исходника по центру изображения:
Тут нет задвоения хардсаба, но качество изображения хуже (т.к. нет наложения). Далее мы накладываем первый скрипт гибрида на второй по сделанной нами маске и получаем уже качественный гибрид без лишних надписей:
Скрипт наложения:
Код:
background=AviSource("C:\Hybrid\Hybrid.avs")
logo=AviSource("C:\Hybrid\Hybrid-2.avs")
logo_mask=ImageSource("C:\Hybrid\mask.png")
overlay(background, logo, mask=logo_mask, opacity=1)
Скрипт hybrid.avs может быть для конкретной сцены, либо сцену можно выделить через trim из общего скрипта.
Более простой случай, WS-исходник не перекрывает нижний хардсаб, маска будет попроще:
было изначально. . . . . . . . . . . . . . . . . . . . . маска . . . . . . . . . . . . . . . . . . . . . . . . . . . . . результат
5. Сборка фильма
Закодировав все кусочки вашего фильма (их может быть всего несколько или очень много), можно собрать их в единый фильм. Для этого открываем первый кусок в mkvtoolnix, выбираем для него команду Присоединить и выделяем оставшиеся куски. Можно сразу добавить аудио- и дорожки субтиров. Полученный файл следует открыть при помощи ffms2 или LSMASHSource в AvsPmod и сравнить его с ремуксом. Кадры в обоих видео должны совпадать по номерам. Проверять можно просто переключаясь между вкладками, можно сделав новый сравнительный скрипт. Обычно достаточно проверить в начале фильма и в последней сцене. Эта проверка необходима, чтобы удостовериться, не потеряли ли вы где-то какие-то кадры. Если несовпадение все-таки есть, нужно искать этот (эти) место(а) и понять, в каком куске вы ошиблись.
6. Дополнительные фишки и хитрости
Данный раздел необязателен для применения. В нем я соберу различные хитрости, которые на мой взгляд улучшают конечный результат. При желании можно что-то почерпнуть отсюда - решать Вам. Разделы 6.1 и 6.2 имеют отношение к тем, кто решил работать в режиме mode=4.
6.1 Постановка "заплаток"
В процессе работы в режиме mode=4 можно часто сталкиваться с неудачным "замыливанием" углов.
Во многих случаях (преимущественно в статичных сценах) такие углы можно скрыть, использовав соседние области кадра.
Для этого необходимо интересующую нас сцену выделить в отдельный отрезок фильма, со своим файлом статистики (либо указать как trim от скрипта hybrid.avs). Последущие сцены придется делать заново, поэтому после пробного прохода нужно просмотреть весь ролик и наметить сразу все сцены, где будут производиться исправления. Объединив все кадры сцены в один блок (в визуальном редакторе), создаем скрипт маски эпизода:
mask
LoadPlugin("C:\Program Files\DVD\AutoOverlay\AvsFilterNet.dll")
LoadNetPlugin("C:\Program Files\DVD\AutoOverlay\AutoOverlay_netautoload.dll")
OM=AviSource("F:\Hybrid\avs\13IVI.avs").crop(0,0,0,0).ConvertToYV24()
WS=AviSource("F:\Hybrid\avs\13WS.avs").crop(0,140,0,-140).ConvertToYV24()
config=OverlayConfig(subpixel=1, requiredSampleArea=3000, minSampleArea=3000, acceptableDiff=20, minSourceArea=50, minOverlayArea=50)
engine=OverlayEngine(OM, WS, statFile="C:\Hybrid\stat\Overlay 743OM-WS.stat", configs=config,\
editor=false, backwardFrames=5, forwardFrames=15, maxDiff=5, maxDiffIncrease=1, maxDeviation=0, stabilize=true)
strength=16
gradient1=OM.OverlayMask(left=strength, top=0, right=strength, bottom=0, gradient=true)
gradient2=WS.OverlayMask(left=0, top=strength, right=0, bottom=strength, gradient=true)
mask1=engine.OverlayRender(gradient1, gradient2, mode=3,width=1920, height=1080)
mask2=engine.OverlayRender(gradient1, gradient2, opacity=0, mode=3,width=1920, height=1080)
mask1.Overlay(mask2, mode="lighten").coloryuv(levels="tv->pc")
ConvertToY8()
ConvertBits(8)
ConvertToYV12()
В качестве входных отрезков можно выбрать самые короткие в фильме. Главное - верно прописать номер stat-файла интересующей нас сцены. Открываем этот скрипт в AvsPmod и сохраняем черно-белый кадр маски.
Если брать stat-файл всей сцены, то нужно сохранить скриншот маски в нужном кадре, вбив его внизу. Но тогда входные отрезки надо прописывать с тем же номером.
Открываем его в фотошопе, инвертируем, выбираем интересующий нас угол (или углы) и увеличиваем его на 10 пикселей в обоих направлениях (там где стороны с градиентом). Все остальные белые области закрашиваем черным. Высоту отступа угла от края запоминаем, ее нужно будет вычесть из вашей высоты черных полос. В итоге сохраняем файл маски с номером эпизода.
было.....................................стало
Теперь нужно определиться, какой часть кадра мы будем скрывать наш угол. Закрывать можно частью WS, OM или (что редко) самим гибридом сцены. В приведенных выше кадрах очевидно, что нужно сместить часть WS-области вниз. Для этого скопируем скрипт WS.avs (с номером эпизода), добавив к названию любой знак (я в конце ставлю b), получим скрипт WSb.avs. В нем мы смещаем кадр вниз (пишем после trim):
Код:
addborders(0,50,0,0)
crop(0,0,0,-50)
Число 50 я получил, вычтя из 140 (моей высоты черных полос) 91 (отступ белого угла в маске от нижнего края). 140-91=49. Взял ближайшее четное большее число 50.
Теперь полученный видеоряд со смещенным вниз кадром нужно наложить на гибрид эпизода по созданной нами маске. Для этого мы используем обычный Overlay:
Код:
background=AviSource("C:\Hybrid\Hybrid.avs")
logo=AviSource("C:\Hybrid\743WSb.avs")
logo_mask=ImageSource("C:\Hybrid\mask749.png")
overlay(background, logo, mask=logo_mask, opacity=1)
Первая строка - изначальный гибрид эпизода с "замыленным" углом (также можно использовать его отрезок, создав дополнительный скрипт и прописав в нем нужную часть с помощью trim как я описывал в пункте 4.1). Вторая строка - скрипт WS-исходника со смещенным кадром. третья строка - маска эпизода.
В скрипте Hybrid.avs предварительно нужно уменьшить размер градиента углов на 14 (gradient=14, рядом с coloradjust).
Запускаем скрипт наложения в MeGUI и получаем улучшенный эпизод фильма:
Для нагляности смотрим видеоурок. Если в фильме параметры наложения периодически повторяются (что видно в визуальном редакторе), сделанную маску можно будет неоднократно использовать для других эпизодов
Закрывать угол необязательно соседней частью кадра:
Смещение в данном случае будет таким:
Код:
crop(0,0,0,-300)
addborders(0,300,0,0)
Удачность наложения можно посмотреть в AvsPmod. Делая изменения подрезки в WSb.avs, сразу смотрим разные варианты скрытия угла (нажимая F5 в AvsPmod после каждой смены цифр). Главное правило - конечный размер всегда должен выходить 1920*1080. Все, что отрезали, надо добавлять бортами.
Со смещением вбок:
Здесь я закрывал угол самим гибридом, поэтому отдельно скрипт смещенного исходника не нужен, все прописывается в скрипте наложения:
Код:
background=AviSource("C:\Hybrid\Hybrid.avs")
logo=AviSource("C:\Hybrid\Hybrid.avs").addborders(180,30,0,0).crop(0,0,-180,-30)
logo_mask=ImageSource("C:\Hybrid\mask151b.png")
overlay(background, logo, mask=logo_mask, opacity=1)
Можно закрыть сразу 2 угла одной маской:
маска:
Здесь я закрывал углы ОМ-исходником OMb.avs:
Код:
addborders(0,28,0,0)
crop(0,0,0,-28)
Если вы закрываете в сцене несколько углов разными масками, то для другого угла нужно создать свою маску, скрипт смещения видеокадра и новый скрипт наложения, в коротом вместо Hybrid будет указываться первый Overlay:
Код:
background=AviSource("C:\Hybrid\Overlay-1.avs")
logo=AviSource("C:\Hybrid\743WSb2.avs")
logo_mask=ImageSource("C:\Hybrid\mask749-2.png")
overlay(background, logo, mask=logo_mask, opacity=1)
Скрытие угла с масштабированием исходника:
Код для WSb.avs будет таким:
Код:
Lanczos4Resize(2080,1168)
crop(138,40,-22,-48)
Еще несколько примеров удачного использования:
Простора для творчества тут полно, качество "заплаток" зависит от вашей фантазии.
6.2 Подрезка исходников
В некоторых случаях исходники с одной или нескольких сторон кадра почти совпадают по наполнению, отличаясь лишь на несколько пикселей:
В результате с этой стороны кадра будут появляться вытянутые "замыленные" полоски. Не выиграв почти ничего, вы получаете дефект на картинке.
В визуальном редакторе такие сцены выглядят так:
В случае, если в сцене ОМ-исходник идет как пан-скан от WS (с номинальным преимуществом по высоте в пару пикселей), самым простым решением будет вырезать этот фрагмент фильма из ремукса.
Если преимущество по наполнению только с одной из сторон, то у другой можно у исходника предварительно отрезать часть кадра.
В данном примере у меня слева WS-исходник на 2 пикселя (в визуальном редакторе X=-2) выигрывает у ОМ-исходника. Отрезав в WS.avs эти 2 пикселя, я убрал "замыленную" полоску:
после trim пишем строку crop(2,0,0,0)
Если бы такое было справа, то узнать, сколько нужно отрезать можно, открыв эпизод в AvsPmod в режиме mode=3 и замерив черный уголок.
Подрезку лучше прописывать персонально в скрипте исходника, а не в основном скрипте гибрида, поскольку есть верятность забыть убрать этот кроп в последующих эпизодах.
6.3 Финальные титры
Как быть в ситуации, если у Вас на обоих исходниках финальные титры идут с черными полосами:
У ремукса находим первый кадр, в котором появляется текст снизу
Запоминаем номер кадра. Далее пишем 2 скрипта:
downWS.avs
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\ffms2.dll")
ffms2("C:\Hybrid\sourses\WS.mkv")
trim(170441,175070)
crop(0,0,0,-140)
addborders(0,140,0,0)
Жирным я выделил кадр, который мы запомнили.
upWS.avs
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\ffms2.dll")
ffms2("C:\Hybrid\sourses\WS.mkv")
trim(170357,175070)
crop(0,140,0,0)
addborders(0,0,0,140)
В качестве конечного кадра я изначально выставляю последний кадр титров. Но длина обоих отрезков должна быть одинаковой. Для downWS надо будет искать недостающие в конце черные кадры в другой части фильма.
В этих двух скриптах я дважды взял поток титров из ремукса с небольшой задержкой относительно друг друга (в данное случае 84 кадра). Естественно, задержка в каждом фильме будет своя. Растащив видео вверх и вниз с помощью crop и addborders (140 я брал с учетом моей высоты черных полос), я получил видео-потоки:
Теперь эти 2 потока видео нужно наложить друг на друга по маске (высота белой области меньше или равна высоте кадра без полос)
по этому скрипту:
Код:
background=AviSource("C:\Hybrid\avs\upWS.avs")
logo=AviSource("C:\Hybrid\avs\downWS.avs")
logo_mask=ImageSource("C:\Hybrid\titles.png")
overlay(background, logo, mask=logo_mask, opacity=1)
Открыв этот скрипт в AvsPmod, можно легко подобрать задержку для потока upWS.
Возможно, в какой-то момент (ближе к концу) придется остановиться на определенном кадре, а новый отрезок делать с вертикально перевернутой маской. Все зависит от фильма, идеального решения нет.
Не во всех фильмах наложение будет идеальным, "бесшовным". Для улучшения результата можно попробовать увеличить обрезку у upWS
Код:
crop(0,142,0,0)
addborders(0,0,0,142)
В этом случае нужно будет слегка скорректировать trim.
Способ работает только со стабилизированными титрами (как у новых фильмов). Если текст хотя бы немного "дрожит", будет видно наложение.
6.4 Цветокоррекция дополнительных сцен в 3D Lut Creator
Если Вы в свой гибрид хотите добавить сцены из расширенной/режиссерской версии, можно попробовать их перекрасить под цвет основной части фильма (если это необходимо).
Поможет нам в этом 3D Lut Creator. В нем создается cube-файл, который перекрасит ваш эпизод. Для подгрузки этих файлов в ависинт необходим плагин vscube.
Добавляем плагин и сам cube-файл в скрипт эпизода: (за скрипт спасибо спасибо tonik2000)
эпизод
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\ffms2.dll")
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\vscube.dll")
ffms2("C:\Hybrid\sourses\DC remux.mkv")
trim(3513,4428)
crop(0,140,0,-140)
ConvertBits(16)
ConvertToPlanarRGB()
Cube("C:\Hybrid\cube\6.cube")
ConvertBits(8)
addborders(0,140,0,140)
ConvertBits(8)
ConvertToYV12()
Перед применением цветокоррекции нужно отрезать черные полосы ремукса, а потом вернуть их обратно. Cube-файлов можно использовать несколько (друг под другом, одинаковых или разных) в зависимости от удачности коррекции. Последние 2 строки добавятся автоматически после кодирования эпизода.
Как получить cube-файл.
Ищем в театральной версии похожий эпизод и копируем из него кадр (в AvsPmod это легко сделать пкм Copy image to clipboard - изображение попадет в буфер). Вставляем его в 3D Lut Creator как образец (Референс) (команда Shift+Ctrl+V). Таким же образом вставляем кадр эпизода расширенной версии командой Ctrl+V (оба кадра должны быть без черных полос). С помощью кнопки Сравнить выстраиваем их друг под другом или рядом и пытаемся сделать их похожими. Можно пойти двумя путями: либо сразу применить автоматическую цветокоррекцию (команда Ctrl+M), либо самим двигать сетку слева, меняя отдельные оттенки кадра. Оба способа неидеальны, после каждого шага желательно сохранять cube-файл (самая левая кнопка внизу) и проверять результат в AvsPmod, обновляя скрипт. В 3D Lut Creator результат не отражает как в реальности будет выглядеть видео, поэтому всегда надо смотреть в AvsPmod.
Автоматическую цветокоррекцию тоже можно улучшить, двигая сетку. Перемещая указатель мышки по кадру, можно понять, какие узлы сетки нужно двигать. Основная работа идет в режиме A/B, в режиме C/L можно еще затемнить/осветлить отдельные области.
Способ трудоемкий, многое зависит от удачности выбранной пары референс-кадр. Точность совпадения кадров необязательна (а часто и невозможна). Для одной сцены можно попробовать использовать несколько cube-файлов (если с одним никак не получается), брать файл от другой сцены, комбинировать их в разной последовательности.
В результате можно получить неплохие результаты:
Идеального результата добиться очень трудно, а в некоторых сценах и невозможно.
7. Заключение
Данная инструкция составлена мной, исходя из личного опыта. Она призвана дать основы работы над гибридами. Эта инструкция не претендует на звание единственной, самой правильной или еще какой. Ваши методы работы могут сильно отличаться от написанных здесь. По мере накопления новых опыта/знаний я буду стараться пополнять/корректировать данную инструкцию.
Удачи в работе!
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
23-Апр-20 16:05
(спустя 53 мин.)
|
|
miha2154
Стаж: 16 лет 5 месяцев Сообщений: 12116
|
miha2154 ·
23-Апр-20 16:23
(спустя 17 мин.)
для AviSynth x64 вроде плагинов мало очень?
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
23-Апр-20 16:28
(спустя 5 мин.)
miha2154 писал(а):
79308214для AviSynth x64 вроде плагинов мало очень?
ну поменьше, да. я пока обхожусь
|
|
koren-a
Стаж: 11 лет 6 месяцев Сообщений: 170
|
koren-a ·
26-Апр-20 23:48
(спустя 3 дня)
Цитата:
79307778Если ремукс в контейнере m2ts, рекомендую перепаковать в матрешку
А почему надо перевести в матрешку?
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
27-Апр-20 16:52
(спустя 17 часов)
koren-a писал(а):
79331753
Цитата:
79307778Если ремукс в контейнере m2ts, рекомендую перепаковать в матрешку
А почему надо перевести в матрешку?
может выйти так, что половина кадров будет серых (с дефектом)
|
|
koren-a
Стаж: 11 лет 6 месяцев Сообщений: 170
|
koren-a ·
14-Май-20 10:58
(спустя 16 дней)
Можно ли прописать в Hybrid.avs такую возможность, чтобы допустим с кадра 1000 по 1020 накладывался OM на WS затем 1020 по 1050 снова WS на OM и так несколько раз, но когда OM на WS цветопередача за основу брался все равно WS
|
|
miha2154
Стаж: 16 лет 5 месяцев Сообщений: 12116
|
miha2154 ·
14-Май-20 13:37
(спустя 2 часа 38 мин.)
Yаut писал(а):
79335160
koren-a писал(а):
79331753
Цитата:
79307778Если ремукс в контейнере m2ts, рекомендую перепаковать в матрешку
А почему надо перевести в матрешку?
может выйти так, что половина кадров будет серых (с дефектом)
с нормальным индексатором не должно.
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
15-Май-20 10:44
(спустя 21 час, ред. 10-Июн-20 11:30)
koren-a писал(а):
79439340Можно ли прописать в Hybrid.avs такую возможность, чтобы допустим с кадра 1000 по 1020 накладывался OM на WS затем 1020 по 1050 снова WS на OM и так несколько раз, но когда OM на WS цветопередача за основу брался все равно WS
ну можно например сделать доп простой скрипт
Код:
AviSource("C:\Hybrid\Hybrid.avs")
trim(1000,1020)
при этом в Hybrid.avs поставить opacity=0
потом снова вернуть на 1 и
Код:
AviSource("C:\Hybrid\Hybrid.avs")
trim(1021,1050)
а coloradjust не трогать, и он будет всегда идти по WS
|
|
AntonGvozdev
Стаж: 15 лет 3 месяца Сообщений: 217
|
AntonGvozdev ·
30-Окт-20 16:30
(спустя 5 месяцев 15 дней)
Yаut, спасибо за столь исчерпывающую инструкцию.
Застрял на стадии пробного прохода - при выполнении скрипта Hybrid.avs и достижении 8 фрейма происходит вылет с ничего не говорящим мне словом SEHException.
Подскажите, пожалуйста — что тут можно сделать?
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
30-Окт-20 19:44
(спустя 3 часа, ред. 30-Окт-20 19:44)
AntonGvozdev писал(а):
80314990Yаut, спасибо за столь исчерпывающую инструкцию.
Застрял на стадии пробного прохода - при выполнении скрипта Hybrid.avs и достижении 8 фрейма происходит вылет с ничего не говорящим мне словом SEHException.
Подскажите, пожалуйста — что тут можно сделать?
а сам скрипт Hybrid в AvsPmod хотя бы открывается? (первый кадр)
никогда не сталкивался с такой ошибкой...
с Run analysis pass тоже вылетает?
какая версия AutoOverlay ?
|
|
AntonGvozdev
Стаж: 15 лет 3 месяца Сообщений: 217
|
AntonGvozdev ·
30-Окт-20 22:10
(спустя 2 часа 26 мин., ред. 30-Окт-20 22:10)
Yаut писал(а):
80316060 а сам скрипт Hybrid в AvsPmod хотя бы открывается? (первый кадр)
никогда не сталкивался с такой ошибкой...
с Run analysis pass тоже вылетает?
какая версия AutoOverlay ?
Да, в AvsPmod открывался и по перемещению ползунка результирующее видео проигрывалось. А при покадровом перемещении (с 0) на 8-м кадре происходит исключение. Кодировщик, соответственно, тоже вылетает в самом начале кодирования.
Пока вышел из положения тем, что первый кадр трима сместил вперед на несколько кадров, с кадра, где, после черноты, начинает появляться изображение.
Хотя у вас на скриншотах тоже черный экран на первом кадре отрезка — но скрипт, как я понимаю, нормально выполняется.
Версия AutoOverlay - 0.3.1.
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
01-Ноя-20 21:07
(спустя 1 день 22 часа)
в общем пока лучше пользоваться версией 0.2.5
|
|
AntonGvozdev
Стаж: 15 лет 3 месяца Сообщений: 217
|
AntonGvozdev ·
02-Ноя-20 08:43
(спустя 11 часов, ред. 02-Ноя-20 08:43)
Такой момент мне не до конца ясен...
При hdtv рекомендуется использовать LSMASHSource. Т. е. и в скриптах 2OM.avs, 3OM.avs, 4OM.avs, ...?
В разделе "Выбор отрезка и пробный проход" этого прямо не указано (там в обоих скриптах используется ffms2) - это подразумевается или все же использовать ffms2?
Соответственно, и AssumeFPS при разнице в частоте кадров мы также в nOM.avs пишем?
Yаut писал(а):
80328949в общем пока лучше пользоваться версией 0.2.5
Ну вот пока два отрезка закодировал с 0.3.1 успешно — грешу на то, что эта версия (возможно) некорректно отрабатывает на ряде одинаковых черных кадрах, которые и были в проблемном отрезке. Но посмотрим, что дальше будет...
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
02-Ноя-20 20:15
(спустя 11 часов, ред. 02-Ноя-20 20:15)
AntonGvozdev писал(а):
80330885Такой момент мне не до конца ясен...
При hdtv рекомендуется использовать LSMASHSource. Т. е. и в скриптах 2OM.avs, 3OM.avs, 4OM.avs, ...?
В разделе "Выбор отрезка и пробный проход" этого прямо не указано (там в обоих скриптах используется ffms2) - это подразумевается или все же использовать ffms2?
Соответственно, и AssumeFPS при разнице в частоте кадров мы также в nOM.avs пишем?
да, все верно, вместо ffms2 пишем LSMASHSource в каждом файлике. и AssumeFPS тоже (добавил в инструкцию)
AntonGvozdev писал(а):
Yаut писал(а):
80328949в общем пока лучше пользоваться версией 0.2.5
Ну вот пока два отрезка закодировал с 0.3.1 успешно — грешу на то, что эта версия (возможно) некорректно отрабатывает на ряде одинаковых черных кадрах, которые и были в проблемном отрезке. Но посмотрим, что дальше будет...
мне кажется, у меня тоже на черных кадрах проблемы были с вылетами (ошибка может и другая была). это уже исправлено, ждем новую версию
|
|
Блоxа
Стаж: 9 лет 5 месяцев Сообщений: 28
|
Блоxа ·
24-Мар-21 11:38
(спустя 4 месяца 21 день, ред. 24-Мар-21 11:38)
А почему создание гибридов с помощью AviSynth?
Я так понимаю приходится тратить массу времени, делать маленькими кусками (ибо монтаж и длительность не может быть одинаковой, в вебках ,в частности, из-за глюков, скрипты не могут обеспечить их выравнивание кадр в кадр),нужно часто проверять качество наложения в итоговом варианте, и потом собирать их едино в фильм, и кроме того, как я понял, происходит кодирование
на каждом этапе, т.е. несколько раз. или один раз, но придётся такую кучу текста вбивать в скрипт.
не проще ли всё это делать в том же After Effects, с нормальным граф. интерфейсом, делать сразу единым проектом. туда можно запихнуть нежатый кодеками материал, даже lossless PNG, исправлять несоответствие кадров находу. Там куча возможностей, масок, эффектов и сразу видно результат в превью. даже можно успешнее и быстрее "склеивать" и "накладывать" исходники различных трансферов. при этом же методе нужно, чтобы оба файла всегда были с одного принта.
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
25-Мар-21 14:00
(спустя 1 день 2 часа, ред. 25-Мар-21 14:00)
Блоxа писал(а):
81151853А почему создание гибридов с помощью AviSynth?
потому что я умею только в AviSynth. как говорится "чем богаты, тем и рады"
Если вы можете другим способом - сделайте пару фильмов, напишите инструкцию, а мы оценим
|
|
germanewa01
Стаж: 6 лет 10 месяцев Сообщений: 31
|
germanewa01 ·
06-Июн-21 13:45
(спустя 2 месяца 11 дней)
Добрый день!
Подскажите новичку в программе, как накладывать картинку на картинку так, чтобы логотипы исчезали?
Допустим, запись А - с лого снизу, запись Б с лого сверху, как сделать чтобы они взаимоуничтожились?
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
06-Июн-21 15:41
(спустя 1 час 55 мин., ред. 06-Июн-21 15:41)
germanewa01 писал(а):
81531811Добрый день!
Подскажите новичку в программе, как накладывать картинку на картинку так, чтобы логотипы исчезали?
Допустим, запись А - с лого снизу, запись Б с лого сверху, как сделать чтобы они взаимоуничтожились?
пункт 4.3 в инструкции)
если у вас цветность и наполнение исходников идентичны, то более простой скрипт
Код:
background=AVISource("F:\Hybrid\avs\А.avs")
logo=AviSource("F:\Hybrid\avs\Б.avs")
logo_mask=ImageSource("F:\Hybrid\mask.png")
overlay(background, logo, mask=logo_mask, opacity=1)
главное тут правильно маску нарисовать и определиться, какая запись лучше по качеству (А или Б)
|
|
Mr-Maximus
Стаж: 15 лет 6 месяцев Сообщений: 1144
|
Mr-Maximus ·
16-Июл-21 22:26
(спустя 1 месяц 10 дней)
|
|
germanewa01
Стаж: 6 лет 10 месяцев Сообщений: 31
|
germanewa01 ·
15-Янв-22 22:16
(спустя 5 месяцев, ред. 15-Янв-22 22:16)
Приветствую.
Вопрос немного не по теме:
Есть исходник 4k hdr IMAX, есть готовый скрипт чтобы его перекодировать в sdr 1080p?
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
17-Янв-22 20:54
(спустя 1 день 22 часа)
germanewa01 писал(а):
82603529Приветствую.
Вопрос немного не по теме:
Есть исходник 4k hdr IMAX, есть готовый скрипт чтобы его перекодировать в sdr 1080p?
у меня нет
|
|
Drommer.94
Стаж: 14 лет 3 месяца Сообщений: 189
|
Drommer.94 ·
20-Янв-22 11:06
(спустя 2 дня 14 часов)
germanewa01 писал(а):
82603529Приветствую.
Вопрос немного не по теме:
Есть исходник 4k hdr IMAX, есть готовый скрипт чтобы его перекодировать в sdr 1080p?
Вам нужно смотреть в сторону DGTonemap
|
|
Сайто Владелис
Стаж: 4 года 6 месяцев Сообщений: 6
|
Сайто Владелис ·
20-Мар-22 11:37
(спустя 2 месяца)
Здравствуйте! У меня OM с 25 fps. Добавляю "Assume" в скрипты, в правом нижнем углу частота кадров меняется на 23,976, но номера самих кадров и их сумма остаются, как было при 25 (в моём примере это кадр 1190 и сумма 143686). В сравнительном скрипте тоже отображаются номера кадров с исходника (25 fps), и рассинхрон нарастает. В сравнительный скрипт вписывал "Assume" в разные места, вместо исходника "OM.mkv" подставлял скрипт, пересчитывающий 25 кадров/с в 23,976 - ничего не меняется.
скрытый текст
1 - исходник WS (BDRemux, 23,976 fps)
2 - исходник OM (25 fps)
3 - OM с пересчётом 25 в 23,976 fps
4 - сравнение исходных BD и OM (рассинхрон)
5 - сравнение BD с изменённым OM (рассинхрон тот же)
Начальные кадры стоят по нулям, потому что установив совпадение в одном месте через секунду оно пропадёт, и рассинхрон будет нарастать. Как же выровнять скорости исходников (устранить рассинхрон) и определить номера кадров начала и конца фрагментов (ведь число кадров должно быть одинаковым)?
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
20-Мар-22 22:40
(спустя 11 часов, ред. 20-Мар-22 22:40)
Добрый день
Цитата:
в правом нижнем углу частота кадров меняется на 23,976, но номера самих кадров и их сумма остаются, как было при 25
естественно, так и должно быть! число кадров и их номер от частоты не зависит! частота - это просто скорость их проигрывания.
Цитата:
потому что установив совпадение в одном месте через секунду оно пропадёт
вот это непонятно. вы должны в trim( 0,...) вместо нуля поставить какую-то цифру либо у ОМ, либо у WS.
покажите ваши совпадающие кадры у ОМ и WS (скрины), лучше сразу несколько пар
и что у Вас за исходники? может надо через ffms2 попробовать индексировать? кадры в обоих исходниках нормальные получились?
|
|
Сайто Владелис
Стаж: 4 года 6 месяцев Сообщений: 6
|
Сайто Владелис ·
21-Мар-22 02:09
(спустя 3 часа, ред. 21-Мар-22 02:09)
Но если номера кадров у BD (23,976 fps) и OM (25 fps) остаются свои, то при выделении сцены, например, длиной 10 секунд число кадров получится 240 и 250, а должно быть одинаковым. Исходники: BDRemux и WEBRip 1080p, фильм "Призрачный патруль".
скрытый текст
1. Задал совпадение при разнице 13 кадров
2. Вскоре появился рассинхрон
3. Поправил совпадение, разница 19 кадров
4. Через несколько секунд опять рассинхрон
5. Щёлкаю покадрово, кадры совпадают
6. Следующий кадр, совпадают
7. Следующий кадр, OM "пропускает ход", рассинхрон
8. Далее - с рассинхроном
Сейчас до меня дошло, что скрипт сравнения вообще не нужен, надо смотреть BD и OM по отдельности со своими скриптами и находить номера кадров там. Завтра вечером попробую и напишу, совпадает ли в таком случае сумма кадров во фрагментах.
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
21-Мар-22 11:44
(спустя 9 часов, ред. 21-Мар-22 11:44)
У Вас проблема с ОМ-исходником. На 1083 и 1084 кадр одинаковый. Такие корявые вэбки с лишними кадрами встречаются. Надо ее детально смотреть
Если с начала, лишние: 4, 29, 53, 78, 102 и тд
почитайте тут
я попробовал так
Код:
LoadPlugin("C:\Program Files\DVD\MeGUI\tools\avisynth_plugin\ffms2.dll")
ffms2("F:\Downloads\Призрачный патруль (R.I.P.D.) 2013 WEBRip 1080p.mkv")
DupMC(log="F:\Downloads\blah.dup.txt")
соответственно запускаем Run analisys pass и ждем, когда сформируется этот txt-файл. насколько это поможет, не знаю.
ну или поискать/подождать другой ОМ-исходник, беспроблемный
|
|
Сайто Владелис
Стаж: 4 года 6 месяцев Сообщений: 6
|
Сайто Владелис ·
21-Мар-22 19:18
(спустя 7 часов)
Точно, повторяются кадры 29, 53, 78, 102, да и 4-ый наверняка, но он чёрный. А я ещё думал, почему при 25 fps продолжительность фильма почти такая же (1ч 35м 54с), как при 23,976 (1ч 35м 49с). Прошёл по ссылке, написал скрипт "Select", эти кадры перестали повторяться, но со 121-го опять началось, потом 145-й, 168-й... На скрипте "DupMC" вылетела ошибка, видимо, что-то не установлено.
скрытый текст
1. С кадра 121 опять начались повторы
2. Ошибка DupMC
В общем, решил не заморачиваться и подождать до лучшего исходника. Огромное спасибо за помощь!
|
|
Yаut
Стаж: 14 лет 10 месяцев Сообщений: 2535
|
Yаut ·
22-Мар-22 07:40
(спустя 12 часов, ред. 22-Мар-22 07:40)
4й кадр не совсем черный, там в углу виден край глобуса
ошибка, потому что не скачан dll нужного плагина. DeDup.dll нужен 64-битный. Качать можно в ту же папку, где и ffms2. Можно также до него путь прописать, и все заработает.
Запомните - в ависинте для любого плагина нужно искать dll. Только стандартные команды не требуют доп файлов
Цитата:
А я ещё думал, почему при 25 fps продолжительность фильма почти такая же (1ч 35м 54с), как при 23,976 (1ч 35м 49с).
да, там даже при просмотре видно, что видео подергивается
|
|
Сайто Владелис
Стаж: 4 года 6 месяцев Сообщений: 6
|
Сайто Владелис ·
22-Мар-22 22:12
(спустя 14 часов)
Скачал DeDup.dll, скопировал к ffms2 версию х86. AviSynth у меня 32-битный, с DeDup х64 вылетает ошибка. А так при нажатии F5 создаётся почти пустой txt-файл. Запускаю воспроизведение, в текстовом файле появляются строки, как я понял, про каждый воспроизведённый кадр. Как в форуме по ссылке из Вашего прошлого комментария. А что делать дальше? Воспроизвести весь фильм? Это же будет более 140 тысяч строк... На заставку Universal получился такой список:
скрытый текст
DeDup 0.17 by Loren Merritt, based on Dup 2.20 beta 1 by Donald Graft/Klaus Post, Copyright 2004
frm 0: diff from frm 1 = 0.0066% at (1760,1024)
frm 1: diff from frm 2 = 0.8964% at (1728,1024)
frm 2: diff from frm 3 = 1.7129% at (1728,1024)
frm 3: diff from frm 4 = 0.1272% at (1632,1024)
frm 4: diff from frm 5 = 2.4838% at (1696,1024)
frm 5: diff from frm 6 = 2.9413% at (1664,1024)
frm 6: diff from frm 7 = 3.4367% at (1600,1024)
frm 7: diff from frm 8 = 5.4035% at (1888,1024)
frm 8: diff from frm 9 = 5.1745% at (1824,1024)
frm 9: diff from frm 10 = 6.1046% at (1792,992)
frm 10: diff from frm 11 = 7.5573% at (1888,1024)
frm 11: diff from frm 12 = 8.6640% at (1728,1024)
frm 12: diff from frm 13 = 9.9198% at (1696,1024)
frm 13: diff from frm 14 = 9.4926% at (1600,1024)
frm 14: diff from frm 15 = 10.0573% at (1664,992)
frm 15: diff from frm 16 = 13.2330% at (1600,992)
frm 16: diff from frm 17 = 11.6959% at (1504,992)
frm 17: diff from frm 18 = 11.6988% at (1472,992)
frm 18: diff from frm 19 = 14.6198% at (1504,992)
frm 19: diff from frm 20 = 16.2226% at (1856,1024)
frm 20: diff from frm 21 = 14.8799% at (1664,960)
frm 21: diff from frm 22 = 15.6067% at (1792,928)
frm 22: diff from frm 23 = 18.0606% at (1088,1024)
frm 23: diff from frm 24 = 20.0540% at (1856,960)
frm 24: diff from frm 25 = 18.1894% at (1792,960)
frm 25: diff from frm 26 = 18.2779% at (1056,992)
frm 26: diff from frm 27 = 17.6450% at (1024,992)
frm 27: diff from frm 28 = 18.2709% at (1728,928)
frm 28: diff from frm 29 = 0.2622% at (736,224)
frm 29: diff from frm 30 = 20.0960% at (1856,896)
frm 30: diff from frm 31 = 18.6216% at (992,960)
frm 31: diff from frm 32 = 19.5944% at (992,960)
frm 32: diff from frm 33 = 18.7766% at (1152,1056)
frm 33: diff from frm 34 = 25.4571% at (160,1024)
frm 34: diff from frm 35 = 24.1876% at (128,1024)
frm 35: diff from frm 36 = 27.8977% at (1696,1024)
frm 36: diff from frm 37 = 22.3812% at (160,992)
frm 37: diff from frm 38 = 29.4199% at (480,1024)
frm 38: diff from frm 39 = 22.0150% at (1536,1056)
frm 39: diff from frm 40 = 23.1587% at (1344,1024)
frm 40: diff from frm 41 = 27.7140% at (1440,1024)
frm 41: diff from frm 42 = 23.3461% at (1408,992)
frm 42: diff from frm 43 = 25.1479% at (1376,992)
frm 43: diff from frm 44 = 21.6789% at (1376,928)
frm 44: diff from frm 45 = 22.7024% at (1024,1024)
frm 45: diff from frm 46 = 22.2050% at (960,1024)
frm 46: diff from frm 47 = 22.6916% at (800,1024)
frm 47: diff from frm 48 = 23.3344% at (800,992)
frm 48: diff from frm 49 = 21.4162% at (1248,864)
frm 49: diff from frm 50 = 21.0368% at (768,960)
frm 50: diff from frm 51 = 21.1341% at (928,896)
frm 51: diff from frm 52 = 22.0923% at (0,992)
frm 52: diff from frm 53 = 0.2194% at (704,320)
frm 53: diff from frm 54 = 23.4703% at (0,992)
frm 54: diff from frm 55 = 21.3248% at (64,1024)
frm 55: diff from frm 56 = 20.5776% at (704,896)
frm 56: diff from frm 57 = 20.0864% at (32,928)
frm 57: diff from frm 58 = 22.4069% at (736,1024)
frm 58: diff from frm 59 = 22.4015% at (736,992)
frm 59: diff from frm 60 = 23.2717% at (736,1024)
frm 60: diff from frm 61 = 27.0612% at (704,1024)
frm 61: diff from frm 62 = 27.1252% at (672,992)
frm 62: diff from frm 63 = 25.4845% at (1760,1056)
frm 63: diff from frm 64 = 31.0817% at (1696,1024)
frm 64: diff from frm 65 = 26.8708% at (1888,1024)
frm 65: diff from frm 66 = 31.9951% at (1600,992)
frm 66: diff from frm 67 = 30.4338% at (1792,1024)
frm 67: diff from frm 68 = 32.0125% at (1728,1024)
frm 68: diff from frm 69 = 35.2552% at (1760,1024)
frm 69: diff from frm 70 = 43.1292% at (1888,992)
frm 70: diff from frm 71 = 37.5362% at (1856,960)
frm 71: diff from frm 72 = 42.1447% at (1792,960)
frm 72: diff from frm 73 = 37.4663% at (1760,928)
frm 73: diff from frm 74 = 37.4863% at (1696,928)
frm 74: diff from frm 75 = 31.8546% at (1248,1024)
frm 75: diff from frm 76 = 35.8627% at (1632,896)
frm 76: diff from frm 77 = 29.6867% at (1184,960)
frm 77: diff from frm 78 = 0.1945% at (608,736)
frm 78: diff from frm 79 = 32.7539% at (1568,864)
frm 79: diff from frm 80 = 28.0332% at (32,768)
frm 80: diff from frm 81 = 31.1407% at (576,896)
frm 81: diff from frm 82 = 27.6297% at (1344,864)
frm 82: diff from frm 83 = 29.2857% at (0,896)
frm 83: diff from frm 84 = 31.4108% at (768,1024)
frm 84: diff from frm 85 = 33.3627% at (672,1024)
frm 85: diff from frm 86 = 35.5460% at (0,992)
frm 86: diff from frm 87 = 31.4968% at (704,992)
frm 87: diff from frm 88 = 36.4935% at (576,1024)
frm 88: diff from frm 89 = 39.0280% at (0,1024)
frm 89: diff from frm 90 = 33.3282% at (576,960)
frm 90: diff from frm 91 = 30.7193% at (608,928)
frm 91: diff from frm 92 = 31.9768% at (64,864)
frm 92: diff from frm 93 = 32.4622% at (672,832)
frm 93: diff from frm 94 = 29.3879% at (608,864)
frm 94: diff from frm 95 = 32.8836% at (672,800)
frm 95: diff from frm 96 = 27.5603% at (640,800)
frm 96: diff from frm 97 = 31.2741% at (672,768)
frm 97: diff from frm 98 = 27.1356% at (640,768)
frm 98: diff from frm 99 = 26.5662% at (608,768)
frm 99: diff from frm 100 = 28.7762% at (640,736)
frm 100: diff from frm 101 = 41.0551% at (0,1024)
frm 101: diff from frm 102 = 0.4297% at (224,352)
frm 102: diff from frm 103 = 44.9003% at (32,992)
frm 103: diff from frm 104 = 43.5406% at (64,960)
frm 104: diff from frm 105 = 37.6076% at (64,960)
frm 105: diff from frm 106 = 36.8476% at (0,992)
frm 106: diff from frm 107 = 47.1513% at (0,928)
frm 107: diff from frm 108 = 49.3916% at (0,896)
frm 108: diff from frm 109 = 46.2517% at (32,864)
frm 109: diff from frm 110 = 36.9145% at (64,832)
frm 110: diff from frm 111 = 58.6553% at (64,1024)
frm 111: diff from frm 112 = 56.2147% at (96,992)
frm 112: diff from frm 113 = 50.0083% at (128,960)
frm 113: diff from frm 114 = 47.8985% at (128,928)
frm 114: diff from frm 115 = 41.8679% at (160,896)
frm 115: diff from frm 116 = 41.2168% at (96,864)
frm 116: diff from frm 117 = 46.4042% at (96,832)
frm 117: diff from frm 118 = 48.2738% at (64,800)
frm 118: diff from frm 119 = 43.6382% at (64,768)
frm 119: diff from frm 120 = 34.1560% at (160,768)
frm 120: diff from frm 121 = 39.8969% at (64,1056)
frm 121: diff from frm 122 = 54.0579% at (64,1024)
frm 122: diff from frm 123 = 50.2539% at (64,992)
frm 123: diff from frm 124 = 49.3534% at (96,960)
frm 124: diff from frm 125 = 45.3059% at (128,928)
frm 125: diff from frm 126 = 0.6470% at (448,480)
frm 126: diff from frm 127 = 41.6639% at (160,896)
frm 127: diff from frm 128 = 33.9270% at (192,864)
frm 128: diff from frm 129 = 31.0480% at (128,864)
frm 129: diff from frm 130 = 27.9704% at (192,832)
frm 130: diff from frm 131 = 25.6113% at (64,864)
frm 131: diff from frm 132 = 25.3121% at (32,864)
frm 132: diff from frm 133 = 26.7811% at (64,832)
frm 133: diff from frm 134 = 24.5524% at (96,800)
frm 134: diff from frm 135 = 22.4759% at (64,544)
frm 135: diff from frm 136 = 21.4736% at (1440,896)
frm 136: diff from frm 137 = 25.8087% at (1184,1024)
frm 137: diff from frm 138 = 27.6151% at (32,768)
frm 138: diff from frm 139 = 26.9103% at (160,1024)
frm 139: diff from frm 140 = 29.4365% at (672,1056)
frm 140: diff from frm 141 = 34.0987% at (672,1024)
frm 141: diff from frm 142 = 32.1380% at (928,1024)
frm 142: diff from frm 143 = 34.2362% at (128,672)
frm 143: diff from frm 144 = 41.4295% at (128,640)
frm 144: diff from frm 145 = 31.9735% at (192,640)
frm 145: diff from frm 146 = 37.2282% at (192,608)
frm 146: diff from frm 147 = 39.6651% at (224,608)
frm 147: diff from frm 148 = 36.4690% at (192,800)
frm 148: diff from frm 149 = 33.0793% at (256,576)
frm 149: diff from frm 150 = 35.2984% at (256,768)
frm 150: diff from frm 151 = 0.5739% at (1248,352)
frm 151: diff from frm 152 = 28.0789% at (768,800)
frm 152: diff from frm 153 = 31.3423% at (160,800)
frm 153: diff from frm 154 = 31.6909% at (192,768)
frm 154: diff from frm 155 = 26.2550% at (1024,864)
frm 155: diff from frm 156 = 32.7709% at (256,736)
frm 156: diff from frm 157 = 23.7093% at (800,992)
frm 157: diff from frm 158 = 28.8406% at (320,704)
frm 158: diff from frm 159 = 27.0188% at (224,704)
frm 159: diff from frm 160 = 28.7014% at (224,672)
frm 160: diff from frm 161 = 28.8834% at (288,672)
frm 161: diff from frm 162 = 29.0442% at (288,640)
frm 162: diff from frm 163 = 30.1234% at (320,640)
frm 163: diff from frm 164 = 23.9865% at (352,640)
frm 164: diff from frm 165 = 32.4896% at (384,608)
frm 165: diff from frm 166 = 29.0978% at (1088,960)
frm 166: diff from frm 167 = 30.8880% at (1088,928)
frm 167: diff from frm 168 = 31.6041% at (32,896)
frm 168: diff from frm 169 = 27.4842% at (416,832)
frm 169: diff from frm 170 = 35.5319% at (0,992)
frm 170: diff from frm 171 = 35.0241% at (64,960)
frm 171: diff from frm 172 = 42.5731% at (160,1024)
frm 172: diff from frm 173 = 38.2281% at (224,992)
frm 173: diff from frm 174 = 38.3365% at (1088,384)
frm 174: diff from frm 175 = 0.3495% at (0,64)
frm 175: diff from frm 176 = 40.3890% at (1120,384)
frm 176: diff from frm 177 = 39.5778% at (1152,384)
frm 177: diff from frm 178 = 36.8625% at (1184,384)
frm 178: diff from frm 179 = 38.1200% at (1248,384)
frm 179: diff from frm 180 = 38.1084% at (512,672)
frm 180: diff from frm 181 = 35.3640% at (448,608)
frm 181: diff from frm 182 = 34.5391% at (448,576)
frm 182: diff from frm 183 = 31.5579% at (480,576)
frm 183: diff from frm 184 = 34.2350% at (512,576)
frm 184: diff from frm 185 = 34.9314% at (512,544)
frm 185: diff from frm 186 = 35.7438% at (544,544)
frm 186: diff from frm 187 = 39.3505% at (1440,352)
frm 187: diff from frm 188 = 46.1968% at (1472,352)
frm 188: diff from frm 189 = 44.9680% at (1504,352)
frm 189: diff from frm 190 = 42.6110% at (1472,320)
frm 190: diff from frm 191 = 29.7112% at (576,480)
frm 191: diff from frm 192 = 27.3226% at (64,608)
frm 192: diff from frm 193 = 25.9038% at (1408,384)
frm 193: diff from frm 194 = 28.3889% at (1472,256)
frm 194: diff from frm 195 = 30.7297% at (1504,256)
frm 195: diff from frm 196 = 32.8412% at (1504,224)
frm 196: diff from frm 197 = 34.6160% at (1536,224)
frm 197: diff from frm 198 = 33.8647% at (1504,192)
frm 198: diff from frm 199 = 37.4971% at (1536,192)
frm 199: diff from frm 200 = 1.2463% at (1312,672)
frm 200: diff from frm 201 = 37.6720% at (1568,192)
frm 201: diff from frm 202 = 37.4277% at (1536,480)
frm 202: diff from frm 203 = 37.3936% at (1600,160)
frm 203: diff from frm 204 = 36.1357% at (1568,128)
frm 204: diff from frm 205 = 37.3159% at (1600,128)
frm 205: diff from frm 206 = 33.5281% at (1472,384)
frm 206: diff from frm 207 = 36.2151% at (1632,96)
frm 207: diff from frm 208 = 29.5965% at (1472,352)
frm 208: diff from frm 209 = 32.5956% at (1504,352)
frm 209: diff from frm 210 = 28.7832% at (1536,352)
frm 210: diff from frm 211 = 26.2753% at (1664,32)
frm 211: diff from frm 212 = 28.1449% at (1664,384)
frm 212: diff from frm 213 = 26.4715% at (576,1024)
frm 213: diff from frm 214 = 26.1257% at (608,992)
frm 214: diff from frm 215 = 31.8775% at (1696,352)
frm 215: diff from frm 216 = 31.6298% at (1760,576)
frm 216: diff from frm 217 = 32.0583% at (1760,544)
frm 217: diff from frm 218 = 34.8899% at (1728,320)
frm 218: diff from frm 219 = 30.1218% at (1696,512)
frm 219: diff from frm 220 = 30.4409% at (1792,512)
frm 220: diff from frm 221 = 31.9905% at (1760,288)
frm 221: diff from frm 222 = 29.6501% at (1824,480)
frm 222: diff from frm 223 = 28.0107% at (1824,480)
frm 223: diff from frm 224 = 0.4617% at (1408,576)
frm 224: diff from frm 225 = 18.6270% at (1856,480)
frm 225: diff from frm 226 = 21.6115% at (1856,448)
frm 226: diff from frm 227 = 19.4382% at (1696,288)
frm 227: diff from frm 228 = 22.7111% at (1728,288)
frm 228: diff from frm 229 = 21.1951% at (1696,256)
frm 229: diff from frm 230 = 25.7717% at (1728,256)
frm 230: diff from frm 231 = 21.9082% at (1440,256)
frm 231: diff from frm 232 = 31.2479% at (1760,224)
frm 232: diff from frm 233 = 22.3101% at (1472,224)
frm 233: diff from frm 234 = 28.1815% at (1760,192)
frm 234: diff from frm 235 = 46.3688% at (0,704)
frm 235: diff from frm 236 = 56.7399% at (32,704)
frm 236: diff from frm 237 = 53.6282% at (64,704)
frm 237: diff from frm 238 = 47.9962% at (64,704)
frm 238: diff from frm 239 = 45.9828% at (32,1024)
frm 239: diff from frm 240 = 49.0766% at (96,1024)
frm 240: diff from frm 241 = 53.3777% at (64,1024)
frm 241: diff from frm 242 = 52.5208% at (160,992)
frm 242: diff from frm 243 = 53.5971% at (160,1024)
frm 243: diff from frm 244 = 47.4140% at (192,992)
frm 244: diff from frm 245 = 49.9402% at (224,992)
frm 245: diff from frm 246 = 43.6399% at (288,960)
frm 246: diff from frm 247 = 48.5106% at (288,960)
frm 247: diff from frm 248 = 46.3302% at (352,928)
frm 248: diff from frm 249 = 0.8012% at (1760,704)
frm 249: diff from frm 250 = 39.8712% at (352,928)
frm 250: diff from frm 251 = 41.4283% at (384,640)
frm 251: diff from frm 252 = 38.0672% at (384,896)
frm 252: diff from frm 253 = 43.4188% at (416,896)
frm 253: diff from frm 254 = 37.6193% at (416,864)
frm 254: diff from frm 255 = 33.3552% at (448,864)
frm 255: diff from frm 256 = 32.4202% at (384,768)
frm 256: diff from frm 257 = 34.4993% at (416,768)
frm 257: diff from frm 258 = 31.6784% at (544,608)
frm 258: diff from frm 259 = 35.2847% at (576,832)
frm 259: diff from frm 260 = 35.6811% at (704,1056)
frm 260: diff from frm 261 = 35.8980% at (608,832)
frm 261: diff from frm 262 = 45.1808% at (736,1024)
frm 262: diff from frm 263 = 34.4756% at (640,800)
frm 263: diff from frm 264 = 34.8321% at (672,800)
frm 264: diff from frm 265 = 35.9712% at (672,800)
frm 265: diff from frm 266 = 30.6524% at (672,768)
frm 266: diff from frm 267 = 32.1850% at (704,768)
frm 267: diff from frm 268 = 33.0764% at (832,960)
frm 268: diff from frm 269 = 33.8900% at (736,768)
frm 269: diff from frm 270 = 29.9007% at (864,928)
frm 270: diff from frm 271 = 31.3601% at (864,928)
frm 271: diff from frm 272 = 31.5795% at (768,736)
frm 272: diff from frm 273 = 0.2069% at (1760,320)
frm 273: diff from frm 274 = 31.3211% at (800,736)
frm 274: diff from frm 275 = 31.6473% at (800,736)
frm 275: diff from frm 276 = 27.5062% at (832,736)
frm 276: diff from frm 277 = 27.6043% at (832,736)
frm 277: diff from frm 278 = 30.3491% at (832,704)
frm 278: diff from frm 279 = 27.9941% at (1856,480)
frm 279: diff from frm 280 = 30.3960% at (864,704)
frm 280: diff from frm 281 = 33.0203% at (1568,0)
frm 281: diff from frm 282 = 27.9879% at (1568,0)
frm 282: diff from frm 283 = 24.5013% at (896,704)
frm 283: diff from frm 284 = 28.3407% at (896,672)
frm 284: diff from frm 285 = 24.7062% at (896,672)
frm 285: diff from frm 286 = 22.3999% at (928,672)
frm 286: diff from frm 287 = 24.1959% at (928,672)
frm 287: diff from frm 288 = 27.0092% at (1408,448)
frm 288: diff from frm 289 = 24.3659% at (1600,0)
frm 289: diff from frm 290 = 25.6009% at (1024,768)
frm 290: diff from frm 291 = 26.2558% at (960,640)
frm 291: diff from frm 292 = 29.9684% at (960,640)
frm 292: diff from frm 293 = 25.8955% at (1664,0)
frm 293: diff from frm 294 = 31.5608% at (1696,0)
frm 294: diff from frm 295 = 27.6155% at (1696,0)
frm 295: diff from frm 296 = 40.9142% at (1728,0)
frm 296: diff from frm 297 = 0.2668% at (1184,768)
frm 297: diff from frm 298 = 39.0895% at (1824,0)
frm 298: diff from frm 299 = 31.1386% at (1600,32)
frm 299: diff from frm 300 = 31.7146% at (1568,128)
frm 300: diff from frm 301 = 37.1223% at (1472,224)
frm 301: diff from frm 302 = 71.5151% at (1824,416)
frm 302: diff from frm 303 = 69.2944% at (1568,448)
frm 303: diff from frm 304 = 52.8009% at (864,224)
frm 304: diff from frm 305 = 40.7625% at (1504,224)
frm 305: diff from frm 306 = 45.5718% at (1440,224)
frm 306: diff from frm 307 = 47.8582% at (1408,192)
frm 307: diff from frm 308 = 52.3367% at (1696,128)
frm 308: diff from frm 309 = 61.6589% at (1504,128)
frm 309: diff from frm 310 = 76.7736% at (1888,448)
frm 310: diff from frm 311 = 79.7494% at (512,96)
frm 311: diff from frm 312 = 83.1308% at (1856,192)
frm 312: diff from frm 313 = 84.0496% at (1728,352)
frm 313: diff from frm 314 = 81.8754% at (1600,512)
frm 314: diff from frm 315 = 79.6318% at (128,1024)
frm 315: diff from frm 316 = 79.2707% at (480,704)
frm 316: diff from frm 317 = 74.9850% at (96,1024)
frm 317: diff from frm 318 = 72.3600% at (960,0)
frm 318: diff from frm 319 = 81.5596% at (1024,64)
frm 319: diff from frm 320 = 86.6676% at (608,192)
frm 320: diff from frm 321 = 88.9175% at (608,288)
frm 321: diff from frm 322 = 0.2111% at (832,736)
frm 322: diff from frm 323 = 88.4965% at (544,384)
frm 323: diff from frm 324 = 87.7161% at (544,448)
frm 324: diff from frm 325 = 84.2416% at (608,480)
frm 325: diff from frm 326 = 77.2735% at (544,544)
frm 326: diff from frm 327 = 74.6281% at (672,160)
frm 327: diff from frm 328 = 74.9680% at (640,288)
frm 328: diff from frm 329 = 75.0000% at (576,320)
frm 329: diff from frm 330 = 78.6070% at (512,352)
frm 330: diff from frm 331 = 76.9332% at (448,384)
frm 331: diff from frm 332 = 74.7128% at (1120,288)
frm 332: diff from frm 333 = 84.2038% at (864,0)
frm 333: diff from frm 334 = 84.0671% at (992,608)
frm 334: diff from frm 335 = 85.9367% at (928,608)
frm 335: diff from frm 336 = 86.3722% at (864,640)
frm 336: diff from frm 337 = 86.9074% at (800,576)
frm 337: diff from frm 338 = 83.4770% at (736,576)
frm 338: diff from frm 339 = 83.8601% at (672,608)
frm 339: diff from frm 340 = 82.6430% at (576,512)
frm 340: diff from frm 341 = 82.5287% at (576,672)
frm 341: diff from frm 342 = 77.6326% at (928,640)
frm 342: diff from frm 343 = 79.5483% at (864,640)
frm 343: diff from frm 344 = 77.3492% at (448,736)
frm 344: diff from frm 345 = 78.1636% at (1760,192)
frm 345: diff from frm 346 = 0.2302% at (1568,128)
frm 346: diff from frm 347 = 72.6737% at (1760,256)
frm 347: diff from frm 348 = 79.0646% at (1056,640)
frm 348: diff from frm 349 = 84.8375% at (992,640)
frm 349: diff from frm 350 = 85.0877% at (992,736)
frm 350: diff from frm 351 = 82.0042% at (960,768)
frm 351: diff from frm 352 = 75.9342% at (896,736)
frm 352: diff from frm 353 = 67.0134% at (864,768)
frm 353: diff from frm 354 = 70.8174% at (640,448)
frm 354: diff from frm 355 = 69.4091% at (608,448)
frm 355: diff from frm 356 = 70.0898% at (1472,480)
frm 356: diff from frm 357 = 66.6888% at (800,992)
frm 357: diff from frm 358 = 67.4564% at (768,992)
frm 358: diff from frm 359 = 66.8451% at (1408,544)
frm 359: diff from frm 360 = 71.2471% at (1376,576)
frm 360: diff from frm 361 = 60.5822% at (1792,448)
frm 361: diff from frm 362 = 62.0121% at (1728,416)
frm 362: diff from frm 363 = 60.2780% at (1728,448)
frm 363: diff from frm 364 = 61.0077% at (608,352)
frm 364: diff from frm 365 = 57.1115% at (1248,640)
frm 365: diff from frm 366 = 64.4465% at (1248,704)
frm 366: diff from frm 367 = 65.3225% at (1216,704)
frm 367: diff from frm 368 = 64.1976% at (1056,704)
frm 368: diff from frm 369 = 68.2247% at (1056,736)
frm 369: diff from frm 370 = 64.8641% at (1056,800)
frm 370: diff from frm 371 = 0.4924% at (0,960)
frm 371: diff from frm 372 = 55.7069% at (1120,736)
frm 372: diff from frm 373 = 57.4572% at (1408,64)
frm 373: diff from frm 374 = 58.2335% at (1408,160)
frm 374: diff from frm 375 = 56.0638% at (1376,96)
frm 375: diff from frm 376 = 58.6744% at (1376,160)
frm 376: diff from frm 377 = 55.2419% at (1664,512)
frm 377: diff from frm 378 = 60.2996% at (1344,160)
frm 378: diff from frm 379 = 52.3683% at (1216,448)
frm 379: diff from frm 380 = 58.3211% at (1312,128)
frm 380: diff from frm 381 = 49.4282% at (1184,448)
frm 381: diff from frm 382 = 52.9363% at (1184,480)
frm 382: diff from frm 383 = 50.3316% at (1408,192)
frm 383: diff from frm 384 = 52.3329% at (1184,512)
frm 384: diff from frm 385 = 54.3285% at (1184,544)
frm 385: diff from frm 386 = 49.7228% at (1376,224)
frm 386: diff from frm 387 = 49.6256% at (1344,192)
frm 387: diff from frm 388 = 47.8661% at (1376,288)
frm 388: diff from frm 389 = 45.9146% at (1376,320)
frm 389: diff from frm 390 = 50.8868% at (1312,192)
frm 390: diff from frm 391 = 49.4452% at (1312,224)
frm 391: diff from frm 392 = 49.2391% at (1312,256)
frm 392: diff from frm 393 = 47.7826% at (1312,288)
frm 393: diff from frm 394 = 45.8922% at (1312,320)
frm 394: diff from frm 395 = 0.4804% at (0,384)
frm 395: diff from frm 396 = 44.4369% at (1280,256)
frm 396: diff from frm 397 = 37.3205% at (1280,288)
frm 397: diff from frm 398 = 37.7801% at (1600,480)
frm 398: diff from frm 399 = 36.4819% at (1568,416)
frm 399: diff from frm 400 = 37.4156% at (1184,416)
frm 400: diff from frm 401 = 35.7409% at (1632,416)
frm 401: diff from frm 402 = 36.3173% at (1152,480)
frm 402: diff from frm 403 = 37.1405% at (1152,448)
frm 403: diff from frm 404 = 35.0561% at (1152,384)
frm 404: diff from frm 405 = 28.7940% at (1120,480)
frm 405: diff from frm 406 = 31.9552% at (1120,448)
frm 406: diff from frm 407 = 29.7095% at (1120,416)
frm 407: diff from frm 408 = 34.5724% at (1408,224)
frm 408: diff from frm 409 = 38.7001% at (1408,224)
frm 409: diff from frm 410 = 36.1291% at (1408,256)
frm 410: diff from frm 411 = 35.2294% at (1408,256)
frm 411: diff from frm 412 = 32.6533% at (1408,256)
frm 412: diff from frm 413 = 30.9824% at (1408,288)
frm 413: diff from frm 414 = 30.8835% at (1376,256)
frm 414: diff from frm 415 = 31.5617% at (1376,256)
frm 415: diff from frm 416 = 30.1787% at (1376,256)
frm 416: diff from frm 417 = 28.9698% at (1376,288)
frm 417: diff from frm 418 = 28.5543% at (1376,288)
frm 418: diff from frm 419 = 0.2552% at (1152,192)
frm 419: diff from frm 420 = 26.5110% at (1344,256)
frm 420: diff from frm 421 = 30.6857% at (1536,480)
frm 421: diff from frm 422 = 32.9737% at (1504,448)
frm 422: diff from frm 423 = 31.5272% at (1504,448)
frm 423: diff from frm 424 = 30.4106% at (1504,480)
frm 424: diff from frm 425 = 32.0570% at (1504,480)
frm 425: diff from frm 426 = 30.6986% at (0,544)
frm 426: diff from frm 427 = 32.5723% at (0,800)
frm 427: diff from frm 428 = 28.9686% at (32,704)
frm 428: diff from frm 429 = 31.9486% at (0,768)
frm 429: diff from frm 430 = 31.7694% at (0,736)
frm 430: diff from frm 431 = 29.0342% at (64,704)
frm 431: diff from frm 432 = 28.7413% at (32,768)
frm 432: diff from frm 433 = 29.0770% at (32,736)
frm 433: diff from frm 434 = 27.8117% at (32,704)
frm 434: diff from frm 435 = 26.6286% at (96,704)
frm 435: diff from frm 436 = 28.1051% at (224,480)
frm 436: diff from frm 437 = 26.7333% at (64,736)
frm 437: diff from frm 438 = 26.0065% at (64,704)
frm 438: diff from frm 439 = 25.0923% at (64,704)
frm 439: diff from frm 440 = 24.3351% at (96,736)
frm 440: diff from frm 441 = 25.3266% at (128,672)
frm 441: diff from frm 442 = 24.4465% at (256,480)
frm 442: diff from frm 443 = 23.9960% at (96,672)
frm 443: diff from frm 444 = 0.2556% at (1504,608)
frm 444: diff from frm 445 = 29.6090% at (1696,480)
frm 445: diff from frm 446 = 26.1478% at (1696,480)
frm 446: diff from frm 447 = 23.0352% at (1376,384)
frm 447: diff from frm 448 = 22.5706% at (160,640)
frm 448: diff from frm 449 = 21.9818% at (128,672)
frm 449: diff from frm 450 = 21.2820% at (128,640)
frm 450: diff from frm 451 = 20.2664% at (1696,352)
frm 451: diff from frm 452 = 20.4226% at (1696,352)
frm 452: diff from frm 453 = 21.2517% at (1344,384)
frm 453: diff from frm 454 = 29.4294% at (448,480)
frm 454: diff from frm 455 = 20.6745% at (1408,384)
frm 455: diff from frm 456 = 18.1865% at (1696,416)
frm 456: diff from frm 457 = 17.9559% at (160,576)
frm 457: diff from frm 458 = 17.4609% at (160,576)
frm 458: diff from frm 459 = 20.4405% at (1664,352)
frm 459: diff from frm 460 = 21.7865% at (1664,352)
frm 460: diff from frm 461 = 20.7222% at (1664,352)
frm 461: diff from frm 462 = 20.5452% at (1376,384)
frm 462: diff from frm 463 = 18.4687% at (1376,416)
frm 463: diff from frm 464 = 18.9636% at (1632,512)
frm 464: diff from frm 465 = 17.5229% at (1632,512)
frm 465: diff from frm 466 = 16.8771% at (1664,384)
frm 466: diff from frm 467 = 15.9196% at (1664,384)
frm 467: diff from frm 468 = 0.4014% at (352,896)
frm 468: diff from frm 469 = 15.5132% at (1280,416)
frm 469: diff from frm 470 = 17.1376% at (1280,416)
frm 470: diff from frm 471 = 17.6367% at (1600,512)
frm 471: diff from frm 472 = 17.3687% at (1344,416)
frm 472: diff from frm 473 = 17.8158% at (1600,544)
frm 473: diff from frm 474 = 18.9590% at (1600,544)
frm 474: diff from frm 475 = 17.8487% at (1600,544)
frm 475: diff from frm 476 = 16.0726% at (1600,544)
frm 476: diff from frm 477 = 14.2811% at (1344,544)
frm 477: diff from frm 478 = 14.1028% at (1344,544)
frm 478: diff from frm 479 = 14.6817% at (1248,416)
frm 479: diff from frm 480 = 16.0493% at (1312,416)
frm 480: diff from frm 481 = 15.9230% at (1312,416)
frm 481: diff from frm 482 = 14.2383% at (1312,416)
frm 482: diff from frm 483 = 17.0254% at (1408,416)
frm 483: diff from frm 484 = 14.2507% at (1536,448)
frm 484: diff from frm 485 = 13.8651% at (1536,448)
frm 485: diff from frm 486 = 13.2675% at (1504,544)
frm 486: diff from frm 487 = 13.2534% at (1504,544)
frm 487: diff from frm 488 = 12.4771% at (1504,544)
frm 488: diff from frm 489 = 13.1200% at (1440,544)
frm 489: diff from frm 490 = 14.3671% at (1440,544)
frm 490: diff from frm 491 = 16.0721% at (1440,544)
frm 491: diff from frm 492 = 16.6539% at (1440,544)
frm 492: diff from frm 493 = 0.5045% at (416,320)
frm 493: diff from frm 494 = 17.3396% at (1440,544)
frm 494: diff from frm 495 = 16.6955% at (1440,544)
frm 495: diff from frm 496 = 15.7650% at (1440,544)
frm 496: diff from frm 497 = 15.5552% at (1536,544)
frm 497: diff from frm 498 = 14.7507% at (1440,544)
frm 498: diff from frm 499 = 13.5123% at (1440,512)
frm 499: diff from frm 500 = 13.4836% at (1440,512)
frm 500: diff from frm 501 = 13.8427% at (1440,512)
frm 501: diff from frm 502 = 13.6507% at (1440,512)
frm 502: diff from frm 503 = 12.9126% at (1440,512)
frm 503: diff from frm 504 = 12.8678% at (1408,544)
frm 504: diff from frm 505 = 13.6852% at (1408,544)
frm 505: diff from frm 506 = 13.3128% at (1408,544)
frm 506: diff from frm 507 = 12.9272% at (1408,544)
frm 507: diff from frm 508 = 12.1268% at (1408,544)
frm 508: diff from frm 509 = 11.5621% at (1408,544)
frm 509: diff from frm 510 = 11.1478% at (1408,544)
frm 510: diff from frm 511 = 11.3165% at (1408,544)
frm 511: diff from frm 512 = 11.1220% at (1408,512)
frm 512: diff from frm 513 = 11.7782% at (1408,512)
frm 513: diff from frm 514 = 14.2923% at (1440,448)
frm 514: diff from frm 515 = 9.8246% at (1408,512)
frm 515: diff from frm 516 = 8.6104% at (1440,416)
frm 516: diff from frm 517 = 0.3736% at (480,224)
frm 517: diff from frm 518 = 9.5928% at (1440,416)
frm 518: diff from frm 519 = 9.3388% at (1440,416)
frm 519: diff from frm 520 = 10.3117% at (1216,576)
frm 520: diff from frm 521 = 7.6446% at (1152,544)
frm 521: diff from frm 522 = 8.1159% at (1344,448)
frm 522: diff from frm 523 = 9.0255% at (1344,448)
frm 523: diff from frm 524 = 8.5750% at (1376,544)
frm 524: diff from frm 525 = 7.8453% at (1152,448)
frm 525: diff from frm 526 = 8.2197% at (1216,448)
frm 526: diff from frm 527 = 7.8698% at (1376,544)
frm 527: diff from frm 528 = 7.9575% at (1216,448)
frm 528: diff from frm 529 = 7.4348% at (1376,544)
frm 529: diff from frm 530 = 7.7256% at (1376,544)
frm 530: diff from frm 531 = 12.7435% at (1408,416)
frm 531: diff from frm 532 = 8.6465% at (1408,448)
frm 532: diff from frm 533 = 6.4262% at (1376,544)
frm 533: diff from frm 534 = 6.1540% at (1376,544)
frm 534: diff from frm 535 = 5.9225% at (1376,544)
frm 535: diff from frm 536 = 5.0736% at (1376,544)
frm 536: diff from frm 537 = 5.1882% at (1376,544)
frm 537: diff from frm 538 = 5.0432% at (1376,544)
frm 538: diff from frm 539 = 4.1244% at (1440,480)
frm 539: diff from frm 540 = 3.9648% at (1376,544)
frm 540: diff from frm 541 = 0.2053% at (832,288)
frm 541: diff from frm 542 = 3.9848% at (1376,512)
frm 542: diff from frm 543 = 4.6156% at (1376,512)
frm 543: diff from frm 544 = 3.5277% at (1376,512)
frm 544: diff from frm 545 = 3.0760% at (1024,544)
frm 545: diff from frm 546 = 3.0568% at (1376,512)
frm 546: diff from frm 547 = 3.0327% at (1312,576)
frm 547: diff from frm 548 = 3.2538% at (1376,576)
frm 548: diff from frm 549 = 5.3665% at (1408,544)
frm 549: diff from frm 550 = 4.0326% at (1408,544)
frm 550: diff from frm 551 = 5.2901% at (1376,576)
frm 551: diff from frm 552 = 4.3908% at (1408,544)
frm 552: diff from frm 553 = 3.7247% at (1440,544)
frm 553: diff from frm 554 = 5.5477% at (1440,544)
frm 554: diff from frm 555 = 5.5485% at (1440,544)
frm 555: diff from frm 556 = 4.7058% at (1440,544)
frm 556: diff from frm 557 = 5.7247% at (1440,544)
frm 557: diff from frm 558 = 5.3054% at (1472,576)
frm 558: diff from frm 559 = 8.5206% at (1472,576)
frm 559: diff from frm 560 = 6.5176% at (1472,576)
frm 560: diff from frm 561 = 5.4097% at (1472,576)
frm 561: diff from frm 562 = 5.4185% at (1472,576)
frm 562: diff from frm 563 = 3.8680% at (1408,544)
frm 563: diff from frm 564 = 5.7376% at (1504,576)
frm 564: diff from frm 565 = 4.5042% at (1504,576)
frm 565: diff from frm 566 = 0.3029% at (1152,960)
frm 566: diff from frm 567 = 6.3223% at (1440,544)
frm 567: diff from frm 568 = 7.9126% at (1440,544)
frm 568: diff from frm 569 = 7.5731% at (1440,544)
frm 569: diff from frm 570 = 9.5832% at (1440,544)
frm 570: diff from frm 571 = 6.0647% at (1440,544)
frm 571: diff from frm 572 = 5.8893% at (1472,576)
frm 572: diff from frm 573 = 7.0583% at (1472,576)
frm 573: diff from frm 574 = 7.4501% at (1472,576)
frm 574: diff from frm 575 = 8.4737% at (1472,576)
frm 575: diff from frm 576 = 6.3327% at (1472,576)
frm 576: diff from frm 577 = 5.7048% at (1472,576)
frm 577: diff from frm 578 = 6.2724% at (704,480)
frm 578: diff from frm 579 = 7.2839% at (1056,480)
frm 579: diff from frm 580 = 8.9108% at (896,480)
frm 580: diff from frm 581 = 9.0588% at (1152,480)
frm 581: diff from frm 582 = 10.8544% at (1056,448)
frm 582: diff from frm 583 = 13.3448% at (1120,416)
frm 583: diff from frm 584 = 15.7700% at (896,416)
frm 584: diff from frm 585 = 19.9090% at (960,416)
frm 585: diff from frm 586 = 17.3288% at (544,416)
frm 586: diff from frm 587 = 29.6896% at (704,256)
frm 587: diff from frm 588 = 0.8511% at (1536,576)
frm 588: diff from frm 589 = 0.2128% at (1184,416)
frm 589: diff from frm 590 = 0.2128% at (1184,416)
frm 590: diff from frm 591 = 0.0266% at (1792,1056)
frm 591: diff from frm 592 = 0.0332% at (1376,0)
frm 592: diff from frm 593 = 0.0665% at (736,1056)
frm 593: diff from frm 594 = 0.0532% at (736,1024)
frm 594: diff from frm 595 = 0.0889% at (1888,352)
frm 595: diff from frm 596 = 0.0864% at (704,1056)
frm 596: diff from frm 597 = 0.1330% at (736,160)
frm 597: diff from frm 598 = 0.1330% at (736,224)
frm 598: diff from frm 599 = 0.0931% at (288,96)
frm 599: diff from frm 600 = 0.1729% at (1184,800)
frm 600: diff from frm 601 = 0.1729% at (1184,800)
frm 601: diff from frm 602 = 0.0898% at (1152,1024)
frm 602: diff from frm 603 = 0.0432% at (1664,64)
frm 603: diff from frm 604 = 0.0017% at (576,160)
frm 604: diff from frm 605 = 0.0241% at (896,896)
frm 605: diff from frm 606 = 0.0266% at (1728,1056)
frm 606: diff from frm 607 = 0.1168% at (1760,0)
frm 607: diff from frm 608 = 0.1064% at (1312,256)
frm 608: diff from frm 609 = 0.1064% at (1760,0)
frm 609: diff from frm 610 = 0.0241% at (896,896)
frm 610: diff from frm 611 = 0.0266% at (352,1056)
frm 611: diff from frm 612 = 0.0079% at (480,256)
frm 612: diff from frm 613 = 0.0266% at (352,1056)
frm 613: diff from frm 614 = 0.0440% at (0,32)
frm 614: diff from frm 615 = 0.0033% at (1472,64)
frm 615: diff from frm 616 = 0.0000% at (0,0)
frm 616: diff from frm 617 = 0.0000% at (0,0)
frm 617: diff from frm 618 = 0.0000% at (0,0)
frm 618: diff from frm 619 = 0.0000% at (0,0)
frm 619: diff from frm 620 = 0.0532% at (544,1056)
frm 620: diff from frm 621 = 0.0266% at (608,1056)
frm 621: diff from frm 622 = 0.0532% at (544,1056)
frm 622: diff from frm 623 = 0.0266% at (608,1056)
frm 623: diff from frm 624 = 0.0000% at (0,0)
frm 624: diff from frm 625 = 0.0266% at (1056,1056)
frm 625: diff from frm 626 = 0.0266% at (1120,1056)
frm 626: diff from frm 627 = 0.0000% at (0,0)
frm 627: diff from frm 628 = 0.0532% at (544,1056)
frm 628: diff from frm 629 = 0.0033% at (1472,64)
frm 629: diff from frm 630 = 0.0532% at (544,1056)
frm 630: diff from frm 631 = 0.0017% at (896,1056)
frm 631: diff from frm 632 = 0.0000% at (0,0)
frm 632: diff from frm 633 = 0.0004% at (1536,1056)
frm 633: diff from frm 634 = 0.0000% at (0,0)
frm 634: diff from frm 635 = 0.0033% at (1472,64)
frm 635: diff from frm 636 = 0.0116% at (1600,512)
frm 636: diff from frm 637 = 4.5549% at (960,352)
В конце много кадров с 0%, это чернота, но ведь все их удалять нельзя. Опять я в тупике. Помогите!
|
|
|