Как быстро и правильно перекодировать видео в 60fps

Тема 60fps сейчас в моде. Удвоение частоты кадров посредством вставки промежуточного кадра между соседними дает плавное видео. Предположим вы хотите перекодировать видеоролик из 30 fps в 60 fps. Именно перекодировать, а не просто посмотреть видео с удвоенной частотой кадров. Ибо для просмотра видео с частотой 60 fps в сети есть полно решений, а вот для перекодирования раз, два и обчелся, да и те имеют такое большое количество шагов в инструкции по использованию, что пока до 5-ого шага дойдешь уже в сон клонить начинает. Вообще, вся эта тема 60fps — это поиск неких идеальных настроек для программы расчета векторов движения и промежуточных кадров. Настроек, которые позволят не слишком много тратить процессорного времени на это и в тоже время получить приемлемый результат для данного типа движения в видео, так как вся сложность именно в этом самом движении и если его в кадре много, то и возиться с ним придется дольше. А так как пользователь нетерпелив и ждать не любит то создатели софта идут на всякие ухищрения, типа «вот здесь мы чуть-чуть сделаем погрубее, зато побыстрее будет работать», авось он это не увидит, зато потом будет говорить всем, что смотрел старое кино с перекодировкой в 60 fps «на лету» и нагрузка на процессор составила 30-50%. Здесь же я предлагаю способ, который будет отдавать все процессорное время на поиск векторов движения в видео и добавления промежуточных кадров, ни о каком просмотре «на лету» и речи быть не может. Зато на выходе получится правильный 60f ps. При этом будет использоваться бесплатный софт (впрочем, как и все на этом сайте), ну и командная строка, все перекодирование будет делаться из командной строки посредством запуска скриптов (под Windows их называют батниками). На этом вводная заканчивается и переходим к делу.

Для того, чтобы перекодировать видео в 60 fps с минимальными усилиями с вашей стороны и с максимальными усилиями для процессора нужно сделать всего 3 простых шага. Я постарался максимально упростить этот процесс, чтобы первый опыт знакомства с 60fps не оказался, каким-то запредельным по сложности. Все упрощено по максимуму и вся работа возложена на плечи процессора. Что нужно сделать:

  • скачиваем вот этот архив;
  • устанавливаем Avisynth из архива (AviSynth_260.exe);
  • в файлике 50_60fps.avs в строчке:
    ffmpegsource2(«видео.avi»)
    меняем видео.avi на то что вы собираетесь перекодировать в 60fps (не обязательно avi может быть и mp4 и вообще любой видеоформат);
    запускаем перекодирование пуском go.bat;

Идем пить чай.
Через какое-то время приходим и останавливаем работу кодировщика (Esc или Ctrl+C, затем Y) и в текущей папке смотрим файлик 50_60fps.avi — это перекодированное видео.

Скорость кодирования будет очень медленная. На Intel i7 для Full HD получилось 0.1-0.5 кадра в секунду. Это очень медленно, но зато все настройки выкручены на максимум и вам не нужно думать о них. Запускаете и идете пить чай, в любой момент можно нажать Esc и посмотреть, что там накодировалось. Сразу возникает правомерный вопрос, ну ладно медленно, но чтобы настолько медленно шло перекодирование, почему? Все дело в том, что алгоритмы вставки промежуточного кадра (именно они используются при переходе от 30fps к 60fps) очень чувствительны к типу движения в кадре. Например

yaht_320
яхта, идущая вдоль береговой линии

vozdushniy_shar_318
воздушные шары, медленно поднимающиеся над каньоном

water_320
потоки воды в обрушивающихся волнах

все это разные виды движения требующие разных подходов в добавлении промежуточного кадра. Естественно, потоки воды на последней картинке требуют максимальных усилий от процессора потому что движение идет по всему кадру. Наперед не известно какой тип видео будем перекодировать, поэтому закладываемся на максимально сложный вариант. В скриптах прописан тип движения по 3-ему варианту (потоки воды в волнах), поэтому кодирование идет медленно. Но для того, чтобы попробовать и погрузиться в мир 60 fps, я думаю, это самый удачный способ, подкупающий своей простотой, но в тоже время дающий превосходный результат.

Почитать еще