Как сделать фильм 60 fps

Рекомендуем почитать:

Xakep #239. Вскрыть и изучить

  • Подписка на «Хакер»

В технических дискуссиях часто возникает вопрос: какую частоту кадров считать достаточной для видео. Некоторые говорят, что вполне хватит 24 кадров/с для кинофильмов и 30 кадров/с для игр, а всё остальное — ненужное излишество.

С этим утверждением в корне не согласен исследователь Саймон Кук (Simon Cooke) из Xbox Advanced Technology Group. Он опубликовал аргументированную статью с доказательствами, почему человеческий глаз предпочитает больший фреймрейт.

Ясному ответу на этот вопрос мешает тот факт, что глаз — исключительно сложная конструкция, которая осуществляет предварительную обработку изображения до его передачи в мозг. Это не какой-то аналог камеры, просто фиксирующей изображение. Глаз постоянно изменяет свою чувствительность к цвету, освещению, движению объектов. Во многих случаях воспринимаемая мозгом картина — это иллюзия, специально сконструированная для обмана, а генерация такой картинки осуществляется по сложным и не до конца понятным алгоритмам.

Проведённые эксперименты показывают, что при показе видеороликов с разной частотой кадров люди всегда предпочитают больший фреймрейт, и это правило соблюдается даже на частотах выше 60 fps. Согласно теории Саймона Кука, причина в физической подвижности сетчатки глаза, на поверхности которой и регистрируется изображение. Медицинские исследования показали, что глаз совершает непроизвольные колебания (микротремор) со средней частотой 83,68 Гц, изменяя положение сетчатки на 150-250 нм. Это расстояние примерно соответствует размеру 1-3 фоторецепторов в сетчатке.

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

Если это правда, то получается, что глаз как бы искусственно повышает детализацию изображения перед отправкой мозг (upsampling), прямо как это делают компьютерные видеокарты.

Учитывая эту особенность, становится понятной польза от повышения частоты кадров. Частота кадров почти всегда ниже, чем частота микротремора (83,69 Гц). Поэтому чем больше кадров в секунду мы показываем, тем больше дополнительной информации извлечёт глаз.

Нужно учитывать ещё и то, что повышение фреймрейта с 30 fps до 40 fps субъективно воспринимается как более заметное, чем повышение с 40 fps до 60 fps.

Согласно теории Кука, повышение частоты кадров на видеоматериале с низким разрешением субъективно может обеспечить лучшее качество восприятия, чем HD-картинка на 30 fps. То есть разработчикам игр лучше бы сосредоточиться на повышении фреймрейта, а не разрешения. К сожалению, многие не прислушиваются к его доводам и продолжают «тупо» гнаться за размером картинки.

Для сравнения игровых видеоматериалов 30 fps и 60 fps есть специальный сайт.

Как это работает
Установка
fpska — для новичков
fpska — для продвинутых
Видеоинструкция
Примеры

Технология 60fps (60 кадров в секунду) позволяет улучшить восприятие видео. Хотя нет, не так, лучше сказать, что видео с частотой 60 кадров в секунду смотрится совершенно по другому. А уж лучше или хуже — это зрителю решать 🙂 Движения кажутся плавными без подергиваний. Особенно сильно эффект от перевода видео в 60fps наблюдается на сценах с панорамированием, когда камеру ведут, чтобы охватить, как можно больше сцены или на видео снятого с короткой выдержкой, когда весь видеоролик превращается в быстрое, мерцающее слайд-шоу (при короткой выдержке нет смаза, поэтому переход от кадра к кадру идет не плавно). Тут сразу следует оговориться про терминлогию. Почему 60fps, а не 50fps? Проще говоря, когда видео стало широко входить в массы было 2 типа частоты кадров: 25 кадров в секунду (25fps) и 30 кадров в секунду (30fps). В Европе и в Росси были распространены 25, в США — 30.



25/30 fps
А теперь, когда появилось мощное оборудование, экраны телевизоров перестали мазать люминофором с обратной стороны (шутка), появились 50fps и 60fps. То есть 25fps перешло в 50fps, а 30fps в 60fps. Для простоты мы будем придерживаться термина 60fps, подразумевая что есть видео 50fps. Сейчас наблюдается тенденция ухода в сторону 60fps. Многие современные видеокамеры могут записывать видео в формате 1080p, 60fps, что уж говорить про профессиональные. Но что делать тем у кого в архиве видео снятое на старый-добрый 25/30fps? Им как быть? Можно все оставить, как есть и не переводить в 60fps. Но если уж захочется, то можно и попробовать 🙂

Как это работает

Существует много технологий перевода видео в формат 60fps. Можно сказать, перевод видео в формат с удвоенной частотой кадров. Но все они сводятся к одному и тому же, нужно между соседними кадрами «втиснуть» еще один. Вопрос в том, откуда этот кадр взять? И вот тут начинается самое интересное. Кто-то предложил в качестве этого кадра взять предыдущий и просто показать его 2 раза. А кто-то предложил этот кадр выстроить заново, взяв за основу предыдущий и последующий кадры старого видео, что оказалось, вобщем-то нетривиальной задачей. А кто-то предложил полукадры интерлейсного видео достроить до полного кадра и тем самым удвоить частоту. Многое что предалагали.

Fpska не показывает видео с удвоенной частотой кадров. Она создает новое видео с удвоенной частотой кадров на основе оригинального.



fpska не показывает, а «перерабатывает» видео из одного формата в другой
Конвертацию нужно сделать только один раз, а дальше можно залить на Youtube, загрузить в телефон и так далее. Конвертация заточена под максимальное качество. Для разных типов видео можно подобрать такие параметры создания промежуточных кадров, чтобы процесс пошел быстрее. Но так как заранее не известно какой тип движения будет в кадре, то все настройки выкручены на Max. Можно сказать, что «из пушки по воробьям», зато не надо каждый раз думать про подбор параметров.

Fpska понимает самые распространенные форматы/контейнеры avi, mkv, mp4, mov, 3gp, flv.
Mts, m2v — не подходят.

Пример удвоения частоты для видео с 24 кадрами в секунду (воспроизведите видео один раз, чтобы оно полностью поместилось в память, а затем нажмите Play еще раз, чтобы сравнить 24fps и 48fps):
24fps

48fps

Еще примеры

24fps

48fps

30fps

60fps

24fps

48fps

Для перевода видео в 60fps мы будем вставлять промежуточный кадр между двумя соседними. Для этого воспользуемся широко известной библиотекой от команды SVP-Team. В завимости от требуемого качества процесс расчета промежуточного кадра может быть очень трудоемким с точки зрения затрачиваемого процессорного времени и памяти. Fpska настроена на максимальное качество поэтому процесс конвертирования может занимать очень много времени. Поэтому если у вас 30-50 минутное видео то лучше оставить скрипт на ночь к утру все будет готово.

Пример восстановленного кадра

Кадр 1

Восстановленый кадр

Кадр 2

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

Удваивать частоту лучше для progressiv видео. Честно говоря непонятно имеет ли смысл удваивать частоту для interlaced video. Поэтому, если планируете удваивать частоту для видео со старой VHS камеры или запись с телеэфира, то сначала избавьтесь от «гребенки».

Установка

  1. Скачиваем архив fpska.zip и распаковываем его:


    Разархивироанная fpska

    НЕ ИСПОЛЬЗУЙТЕ РУССКИХ БУКВ В НАЗВАНИЯХ ДИРЕКТОРИЙ И ФАЙЛОВ!
  2. Устанавливаем Avisynth из архива distr\AviSynth_260.exe (устанавливаем, как обычное приложение, следуем инструкциям инсталлятора, настройки не меняем, соглашаеимся с тем, что предложат):


  3. Копируем dll’ку distr\avisynth.dll в папку (это многопоточная версия Avisynth библиотеки, специально собранная для работы сплагином svpflow): c:\Windows\SysWOW64\ (в случае Windows 64) c:\Windows\System32 (в случае Windows 32)

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


  4. Скачиваем библиотеку svpflow (http://www.svp-team.com/files/gpl/svpflow-4.0.0.128.zip):


    распаковываем архив, файлы svpflow-4.0.0.128\lib-windows\avisynth\x32\svpflow1.dll и svpflow2.dll копируем в папку fpska\svpflow. Внимание, берем именно 32-битные файлы.


    Если svpflow1.dll и svpflow2.dll не будут скопированы в папку fpska\svpflow, то при запуске конвертирования будет сообщение об ошибке: «—————————» Net biblioteki svpflow1.dll svpflow\readme.txt — instruktsiya po ustanovke «—————————»

60 fps для продвинутых

Навыки работы с командной строкой дают больше преимуществ при работе с fpsk’ой, чем работа из проводника в быстром старте.
Методика работы в этом случае выглядит следующим образом.

    1. Запускаем любимый file manager (например, Far) и преходим в папку с установленной fpsk’ой.
    2. Копируем в эту папку видеоролик, который надо перевести в 60fps.
    3. Запускаем конвертирование: fpska.bat <файл с видео> <режим> <число процессоров>

      режим: «fast», «slow»:
      fast — проверка установки и настроек,
      slow — чистовое конвертирование

      число процессоров: — тесты показали, что при использовании 6-и процессоров увеличение скорости ковертирования равно 4. То есть эффективность распараллеливания не такая высокая, как хотелось бы. Тем не менее, выгоднее задействовать, как можно больше процессоров в системе.

      Со скриптом поставляется тестовый видеоролик video.mov, запуск перекодирования будет выглядеть так:

      Hi-Quality (высокое качество)

      fpska.bat video.mov slow 2

      Медленно рассчитывает промежуточные кадры и медленно кодирует, зато качество видео максимальное.

      Low-Quality (низкое качество)

      fpska.bat video.mov fast 2

      Этот режим используется для проверки установки всего пакета.

      После того, как процесс кодирования закончится в текущей папке появится файл 60fps.mkv — это и будет результирующее видео.

      Важно убедиться, что антивирусное программа не блокирует скрипты и не запускает их в отдельной «песочнице». Я долго разбирался со скриптом, который запускал процесс кодирования, но результирующего файла не появлялось в рабочей папке. Все дело было в Comodo Firewall, который запускал fpsk’у в изолированном пространстве.

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

Как улучшить качество видео. Увеличиваем частоту кадров с 24 FPS до 60 FPS

Каким бы качественным ни казалось воспроизведение видео, его всегда можно улучшить. Способов оптимизации видео существует довольно много, но одним из самых важных является настройка плавности. Причины, по которым воспроизведение может показаться недостаточно плавным, могут быть различны, но, как правило, это связано с недостатками производительности компьютера и его графической подсистемы, неправильным порядком чередования полей интерлейсного видео, а также несовпадением частоты кадров и частоты обновления экрана.

Большинство видеофайлов, которое сейчас можно скачать в интернете, имеют частоту 24 FPS. Этот стандарт был принят ещё в 1932 году как компромисс между качеством воспроизведения и расходом киноплёнки. Воспроизведение видео с частотой 24 кадра в секунду можно было бы сделать более плавным, если снизить частоту обновления экрана до 24 Гц. Но сделать это можно только для экранов телевизоров, если же вы откроете настройки монитора компьютера или ноутбука, скорее всего доступными окажутся только два параметра: 50 Гц и 60 Гц. Дисплеи с поддержкой 24p встречаются редко, но если ваш монитор является одним из них, считаете, что вам повезло.

А вот что делать всем остальным? Пойти обратным путём. Если частоту обновления монитора нельзя снизить до частоты кадров видео, то увеличить частоту кадров видео до существующей частоты обновления экрана очень даже возможно. Как?

Методом интерполяции соседних кадров. Суть его заключается в добавлении в видеоряд промежуточных кадров, сгенерированных на основе двух «настоящих» соседних кадров. Для этого мы предлагаем использовать специальную программу SmoothVideo Project или сокращенно SVP. Принцип её работы хорошо демонстрирует рисунок, взятый с официального сайта проекта.

Главное преимущество этой программы в том, что она не нуждается в дополнительных настройках, а поэтому может быть использована даже новичками. SVP включает в себя два основных модуля: SVPflow и SVP Manager. Первый модуль отвечает за расчёт и добавление кадров в видеопоток, второй обеспечивает доступ к настройкам параметров программы. Скачать полную (не Core) версию пакета можно с официального сайта www.svp-team.com/wiki/Download/ru. Для корректной работы SVP вам также понадобится видеоплеер с поддержкой внешних фильтров DirectShow. Лучше всего для этих целей подойдет 32-разрядный(!) Media Player Classic Home Cinema (MPC-HC). По умолчанию MPC-HC уже входит в инсталляционный пакет SVP, поэтому самым разумным будет установить его стандартную версию с теми параметрами, которые предлагает мастер и не мучиться впоследствии с настройками фильтров. Компонент рендер MadVR для работы SVP не является обязательным, но можно отметить и его.

Если MPC-HC уже установлен

Если у вас уже имеется Media Player Classic Home Cinema, галочку в окне мастера установщика SVP можно снять, но при этом сам плеер придётся немного настроить, в частности, добавить в него компоненты ffdShow и Avisynth. Для этого переходим в настройки плеера,

В левой колонке находим «Внешние фильтры», жмём «Добавить».

И в открывшемся окошке выбираем «ffdshow raw video filter».

Возвращаемся в окно настроек и устанавливаем для добавленного фильтра галочку «Предпочесть». Для добавления Avisynth открываем в MPC-HC любой видеофайл, переходим в системный трей, находим там значок ffdshow и двойным кликом по нему открываем настройки ffdshow raw video decoder configuration.

Отыскиваем в левой колонке пункт Avisynth и отмечаем его галочкой.

Если же MPC-HC устанавливался вместе с SVP, ничего настраивать не нужно. SVP достаточно умна и все необходимые настройки производит сама с учетом конфигурации конкретного компьютера, и чтобы преобразовать видео 24 FPS в 60 FPS, достаточно просто запустить в MPC-HC на воспроизведение любой видеофайл. При этом в нижней левой части окна плеера у вас должна появиться строка «SVP: Воспроизведение 23.976 * (18:7) = 61.653 fps Автоподрезка: «.

У вас соотношение сторон и FPS могут отличаться, но это не важно. Если такая строка появилась, считайте что всё сделано правильно и плавность воспроизведения вам обеспечена.

Особенности работы SVP

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

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *