Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Turbo
Пол: Возраст: 43 Администратор Рега: 15.03.2006 Сообщения: 4307 Откуда: Зеленоград Страна: Россия
|
Добавлено: Ср Июн 11, 2008 10:12 am Заголовок сообщения: Видео с эффектом плавности движений (MVTools) |
|
|
Накопал обсуждение в интернете:
http://forum.ixbt.com/topic.cgi?id=62:12524
Сам правда ещё не экспериментировал, но выглядит многообещающе. Скопирую сюда несколько постов, что бы не шариться по всей теме.
Алгоритмы повышения плавности движений рассчитывают промежуточные кадры, помещаемые при проигрывании между исходными кадрами, создается эффект повышенной плавности движений. Все становится понятным при взгляде на следующую анимацию:
http://mag.irk.ru/msu_frc/animation.swf
Все началось с ТВ 100 Гц
Существует несколько технологий для увеличения плавности движений при просмотре видео на компьютере. Насколько мне известно, первые удачные результаты в этом направлении сделала фирма Philips с ее технологией Digital Natural Motion (DNM), которую применила в своих 100-герцовых телевизорах. В последствии эта технология была реализована в программном плеере WinDVD под названием Trimension DNM. Умельцы смогли заставить эту технологию работать не только в программном плеере WinDVD, и соответственно получили возможность производить постобработку результатов TrimensionDNM. Инструкция по настройке TrimensionDNM для Media Player Classic приводилась здесь.
Параллельно велись работы и других производителей телевизоров над подобной технологией. У Samsung эта технология называется True Motion. В числе разработчиков этой технологии присутствовала лаборатория MSU. Для компьютеров эта технология воплощена ими в фильтре Frame Rate Converter (MSU FRC). Описание: фильтр и настройки, минитест производительности и отличие от TrimensionDNM.
Исключительно для компьютера
Особо стоит отметить библиотеку функций MVTools с функцией MVFlowFps. Она имеет большое количество настроек, постоянно развивается, что делает ее наиболее перспективной. В разработке последних версий этой библиотеки активное участие принимает Fizick. Инструкция по применению представлена ниже.
Установка
1. Установить AviSynth.
2. Установить плагин MVTools (поместить mvtools.dll в C:\Program Files\AviSynth 2.5\plugins\).
3. Установить AviSynth MT:
3.1. поместить mt.dll в C:\Program Files\AviSynth 2.5\plugins\.
3.2. поместить avisynth.dll в C:\WINDOWS\system32\.
4. Установить пакет K-Lite Codec Pack Full, который содержит ffdshow, а заодно набор кодеков и Media Player Classic.
пункты 3, 3.1 и 3.2 обязательны только для многоядерных и многопроцессорных систем.
Настройка через AVS-скрипт и с буфером кадров Crystal Player
1. Создать AVS-файл рядом с Вашим видеофайлом. Внутри поместить один из кодов.
Для быстрого проигрывания в реальном времени (скрипт "MVTools_fast"):
Код: |
DirectShowSource("[имя Вашего видеофайла]")
backward_vec1 = MVAnalyse(isb = true, blksize=16, pel=1, chroma=false, searchparam=1, idx = 1)
forward_vec1 = MVAnalyse(isb = false, blksize=16, pel=1, chroma=false, searchparam=1, idx = 1)
last.MVFlowFps(backward_vec1,forward_vec1, num=2*FramerateNumerator(last), \
den=FramerateDenominator(last), mask=0, idx=1)
|
2. Отрыть этот созданный Вами AVS-файл в Crystal Player'e, сделав в нем настройки: максимальный буфер кадров в 50% (Options - Frame Buffer Size) и автоматическое заполение буфера при опустошении (Options - Speed Troubleshooting - Stop and Buffer).
3. Можно наблюдать за динамикой наполнения и опустошения буфера кадров, если нажать кнопку "S".
Для качественного преобразования частоты кадров предлагается другой скрипт (скрипт "MVTools_slow"):
Код: |
DirectShowSource("[имя Вашего видеофайла]")
backward_vec1 = MVAnalyse(isb = true, search=3, overlap=4, dct=2, idx = 1)
forward_vec1 = MVAnalyse(isb = false, search=3, overlap=4, dct=2, idx = 1)
last.MVFlowFps(backward_vec1,forward_vec1, num=2*FramerateNumerator(last), \
den=FramerateDenominator(last), idx=1)
|
Этот скрипт лучше использовать для предварительного преобразования видео и сохранения результата, чтобы посмотреть его потом. Преобразовать видео можно к примеру с помощью Virtual DUB, по любому туториалу.
Улучшение производительности скрипта
Там же после ряда тестов выложили версию скрипта, имеющую максимальную производительность на 2-ухядерной системе:
Код: |
SetMTMode(5,4)
fps=23.976
multi=3
newFPS=77
DirectShowSource("Transformers.HD.DVD.Remux.1080p-to-720p.x264.DD5.1.DTS.mkv",fps=fps)
num=FramerateNumerator(last)
den=FramerateDenominator(last)
SetMTMode(2,2)
backward_vec1 = MVAnalyse(isb = true, blksize=16, pel=1, chroma=false, searchparam=1, idx = 1)
forward_vec1 = MVAnalyse(isb = false, blksize=16, pel=1, chroma=false, searchparam=1, idx = 1)
last.MVFlowFps(backward_vec1,forward_vec1, num=multi*num, den=den, mask=0, idx=1)
assumeFPS(newFPS).timeStretch(tempo=100.0*newFPS*den/num/multi)
|
Открытие файла происходит в режиме SetMTMode 5 с 4-мя потоками, а дальнейшая обработка в режиме SetMTMode 2 c 2-мя потоками: в таком случае достигается максимальная производительность скрипта, загружающая оба ядра процессора на 100%.
fps - частота исходного видео-файла
multi - коэффициент увеличения частоты кадров путем расчета промежуточных кадров
newFPS - частота кадров, до которой необходимо растянуть/сжать клип
Последняя строчка - изменение частоты кадров путем растягивания/сжимания клипа с сохранением всех кадров. |
|
Вернуться к началу |
|
|
Endymion
Пол: Модератор Рега: 26.03.2007 Сообщения: 566
|
Добавлено: Ср Июн 11, 2008 5:38 pm Заголовок сообщения: |
|
|
Результат работы медленного скрипта.
Первый кадр:
Второй кадр:
Сгенерированный промежуточный кадр:
Еще один промежуточный кадр:
|
|
Вернуться к началу |
|
|
Aggressor
Пол: Модератор Рега: 07.03.2007 Сообщения: 2343 Откуда: Киев
|
Добавлено: Ср Июн 11, 2008 6:23 pm Заголовок сообщения: |
|
|
Да, это все фигня редкая, потому что для ее работы требуются идеальные условия. Похожий алгоритм давно реализован в АЕ, называется Pixel Motion. Еще есть плагин стороннего производителя под названием Twixtor, который чуть более продвинут, т.к. рассчитывает вектора движения для объектов, а не для пикселей. Но результат все равно настолько убогий, что лично я отказался от его использования. Хороший кадр сам по себе из двух соседних не появится, как ни крути, потому что соседние кадры не несут избыточной информации для формирования промежуточного. |
|
Вернуться к началу |
|
|
Turbo
Пол: Возраст: 43 Администратор Рега: 15.03.2006 Сообщения: 4307 Откуда: Зеленоград Страна: Россия
|
Добавлено: Ср Июн 11, 2008 7:25 pm Заголовок сообщения: |
|
|
Я не знаю, просто ищу способ смотреть без рывков, тоже аниме к примеру на большом телике. Эти рывки и дерганье просто задрали. Попробую сам работу в деле, потом отпишусь.
По поводу информации. Новой информации нет, но нам надо правильно сыграть на восприятие. Например если мы знаем что передвигается один статичный объект на фоне другого, то сформировать промежуточный кадр можно. |
|
Вернуться к началу |
|
|
Aggressor
Пол: Модератор Рега: 07.03.2007 Сообщения: 2343 Откуда: Киев
|
Добавлено: Ср Июн 11, 2008 8:27 pm Заголовок сообщения: |
|
|
Turbo писал(а): | Например если мы знаем что передвигается один статичный объект на фоне другого, то сформировать промежуточный кадр можно. |
Да, так можно. Это называется "идеальные условия", о которых я говорил У меня, например, очень красиво получилось сделать медленно падающий снег, снятый неподвижной камерой. Но идеальные условия встречаются в процентах 10 случаев, не больше. |
|
Вернуться к началу |
|
|
Бармалино
Пол: Желанный гость Рега: 15.01.2008 Сообщения: 526
|
Добавлено: Чт Июн 12, 2008 12:10 pm Заголовок сообщения: |
|
|
В редакторе время от времени создаются кадры с двоящимся изображением. А если все куски исходного материала перекодировать с fps 29,970 или 50,000, не будет-ли лучше? Кадр на котором у персонажа две нижних губы займёт на экране меньше времени. |
|
Вернуться к началу |
|
|
Endymion
Пол: Модератор Рега: 26.03.2007 Сообщения: 566
|
Добавлено: Чт Июн 12, 2008 4:15 pm Заголовок сообщения: |
|
|
Бармалино писал(а): | В редакторе время от времени создаются кадры с двоящимся изображением. |
Зависит от конкретного случая, но в целом это фича, которая должна отключаться.
Бармалино писал(а): | А если все куски исходного материала перекодировать с fps 29,970 или 50,000, не будет-ли лучше? |
Ты говоришь про изменение фпс со сменой скорости воспроизведения или без?
Если "с", то перекодировние для этого не нужно и ничего это не даст абсолютно. Если "без", то это тоже ничего не даст, а сделает только хуже. Бармалино писал(а): | Кадр на котором у персонажа две нижних губы займёт на экране меньше времени. |
Не понял какие такие две нижних губы? |
|
Вернуться к началу |
|
|
Бармалино
Пол: Желанный гость Рега: 15.01.2008 Сообщения: 526
|
Добавлено: Чт Июн 12, 2008 5:33 pm Заголовок сообщения: |
|
|
Цитата: | Не понял какие такие две нижних губы? |
Девушка широко открывает рот. Во время движения нижней губы вниз происходит её раздвоение, остальные детали статичные, не двоятся. Сейчас на другом компе, так бы скрин кинул. Вот как у тебя кадр с кривым самолётом, так и вегас "придумывает" недостающие кадры, только не по векторам, а скорее два крайних кадра накладываются как полупрозрачные слои в графредакторе. В проекте fps 29,970, в исходниках по разному, обычно меньше. А ещё скорость воспроизведения фрагмента регулировать нужно, камеру двигать. Вот и возникла после прочтения сабжа идея выравнивать fps в исходниках перекодированием без изменения скорости воспроизведения чтобы она была как в проекте, раз редактор часто некрасивые кадры "придумывает". Всё равно же в x264 исходный материал перекодирую чтобы с кучей форматов не заморачиваться, сложно ли несколько закорючек в скрипте дописать. |
|
Вернуться к началу |
|
|
Endymion
Пол: Модератор Рега: 26.03.2007 Сообщения: 566
|
Добавлено: Чт Июн 12, 2008 7:40 pm Заголовок сообщения: |
|
|
Бармалино
Ага понятно.
Вообще ФПС проекта должен быть такой же как фпс исходника, иначе редактор действительно или делает смешанные кадры, или просто пихает дубликаты (или же наоборот выкидывает кадры, если фпс понижается). Это должно настраиваться. Причем АЕ например может смешивать двумя способами. Аниме у нас 23.976. Очень удобно ускорять его до 24/25 кадров в секунду (стандарт). Зачем нужно 29.97 без ускорения мне лично не очень понятно, но возможно для очень четкой синхры таки надо...
Тогда насчет перекодирования. "дописать несколько закарючек в скрипте" - это использовать вот этот вот MVTools? Судя по результатам тестов, обычные смешанные кадры что делает редактор (или которые получаться в ависинте при стандартном преобразовании фпс) выглядят и то лучше.
Еще такой момент. ИМО если уж и применять ависинт, то не с перекодированием, а с переводом в lossless. Иначе тратится время на это самое кодирование и качество теряется. А с h264/AVC вообще туго, он очень ресурсоемкий.
Последний раз редактировалось: Endymion (Чт Июн 12, 2008 9:42 pm), всего редактировалось 2 раз(а) |
|
Вернуться к началу |
|
|
Aggressor
Пол: Модератор Рега: 07.03.2007 Сообщения: 2343 Откуда: Киев
|
Добавлено: Чт Июн 12, 2008 7:47 pm Заголовок сообщения: |
|
|
В Вегасе фрейм микс включен по умолчанию, в АЕ- отключен. |
|
Вернуться к началу |
|
|
Бармалино
Пол: Желанный гость Рега: 15.01.2008 Сообщения: 526
|
Добавлено: Пт Июн 13, 2008 10:55 am Заголовок сообщения: |
|
|
Тогда насчет перекодирования. "дописать несколько закарючек в скрипте" - это использовать вот этот вот MVTools?
Да нет, я прочно на менкодер подсел, он и для виндовса и для линукса скомпилирован, имеет множество опций и переведённую на русский документацию. А если что-то совсем непонятно, можно попросить "помощи у зала" в линукссообществе. В ответ услышать о лени читать маны, большая часть которых на буржуйском, и наконец, заветные "формулы" Из ависимплегуя прихватизировал статистику применения -REF 16, до этого использовал 12 из опасений что где-то плохо воспроизведётся.
Еще такой момент. ИМО если уж и применять ависинт, то не с перекодированием, а с переводом в lossless. Иначе тратится время на это самое кодирование и качество теряется. А с h264/AVC вообще туго, он очень ресурсоемкий.
Ависинт для кодирования не применяю, установлен для совместимости и нехай дальше стоит - выполняет секретную миссию. Есть проблема с перекодированием в лосслесс кодеки. После грубой нарубки и перекодирования материала в x264 получилось больше 2Гб "массы". Сколько материал занял бы в беспотерьных кодеках страшно и считать. Полгига на минуту видео с разрешением 704х400, у большей части материала разрешение больше. Но самое хреновое так это то что вегас не все лослесс кодеки понимает а в кодировщике тоже, скомпилирована поддержка не всех. Найти общий не удалось. Перекомпилировать самому (предварительно изучив вопрос) или искать другой кодировщик довольно нудно. А для перекодирования материала в x264 не нужны максимальные настройки, с теми что применяются в процессе, только виндовс тормозит, линуксовая многозадачность вполне справляется - аниме смотрится нормально. |
|
Вернуться к началу |
|
|
Бармалино
Пол: Желанный гость Рега: 15.01.2008 Сообщения: 526
|
Добавлено: Пн Июн 16, 2008 11:33 am Заголовок сообщения: |
|
|
У видео с fps 23-25 легко получить fps 50 применив цепочку фильтров для деинтерлейсинка с удвоением количества кадров. Если на входе fps 25, то скорость воспроизведения и длительность полученного видео не меняются. Некоторые фильтры для деинтерлейсинка хорошо работают и с прогрессивным видео. Реальный скрипт для такой обработки материала:
Код: | "E:\Program Files\MEncoder264 v1.1.9\mencoder" "y1.avi" -o "y1_w50.avi" -noskip -oac copy -ovc x264 -x264encopts frameref=16:subq=7:bitrate=22000:b_pyramid:weight_b:bframes=4 -vf hqdn3d,tfields=1:mcdeint=3 -ofps 50 -fps 50 |
Исходник был пожат иквидом и имел много "шевелящейся мути". Для её очистки и улучшения сжатия, в цепочку добавлен фильтр hqdn3d с настройками по умолчанию. Перекодировка 30 секундного исходника 640х480 заняла ~3 минуты. |
|
Вернуться к началу |
|
|
Endymion
Пол: Модератор Рега: 26.03.2007 Сообщения: 566
|
Добавлено: Вт Июн 17, 2008 2:36 pm Заголовок сообщения: |
|
|
Бармалино
Мы отклонаемся от темы.
И да, я понимаю что ты очень любишь mplayer, но пожалуйста, не надо его пихать в каждую тему. |
|
Вернуться к началу |
|
|
Turbo
Пол: Возраст: 43 Администратор Рега: 15.03.2006 Сообщения: 4307 Откуда: Зеленоград Страна: Россия
|
Добавлено: Вт Июн 17, 2008 7:35 pm Заголовок сообщения: |
|
|
Потестил слегка на Just For a Day реалтайм версию.
1) Почему-то этот плагин порет звку он становится как из унитаза.
2) В некоторых местах где идут резкие уезжания плана вверх и вниз, стало заметно лучше.
3) На медленных полустатичных плаанх вокруг объектов появляется трясущиеся контуры из-за несоврешенства алгоритмов.
Собственно пока первый и третий пункт перекрывают второй. Позже потестю и напишу ещё. |
|
Вернуться к началу |
|
|
shinetek
Пол: Возраст: 45 Прохожий Рега: 24.03.2008 Сообщения: 31 Откуда: Санкт-Петербург Страна: Россия
|
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
|