В каком порядке следует использовать стабилизацию и сжатие с помощью ffmpeg?

В каком порядке следует использовать стабилизацию и сжатие с помощью ffmpeg?

Я снимаю видео футбольных матчей на Canon Vixia, которая записывает HD со скоростью 60 кадров в секунду и сжатием h264. С камеры получаются файлы размером 20 ГБ, которые я пережимаю (чтобы сэкономить место на диске и увеличить скорость загрузки) с помощью h265 с битрейтом, ограниченным 7000k и 60 кадрами в секунду, что является достаточно высоким качеством для моих нужд. Я использую кодер hevc_amf с видеокартой AMD, и он пережимает HD-видео длительностью 1 час 20 минут примерно за 40 минут (2x), что меня вполне устраивает.

Недавно я научился использовать vidstab, который действительно довольно хорошо очищает мое трясущееся видео. Так что теперь я хотел бы и стабилизировать с помощью vidstab, и перекомпрессировать в h265 перед архивацией. Я ищу некоторые рекомендации о том, как упорядочить рабочий процесс наиболее эффективным образом, при этом получая хорошие результаты. Должен ли я 1) сначала применить vidstab к своему исходному файлу 20G (как к проходам обнаружения, так и к проходам преобразования)? Или мне следует 2) перекомпрессировать с помощью аппаратно-ускоренного кодировщика hevc_amf, прежде чем выполнять стабилизацию?

  1. Если первый вариант, то дополнительный вопрос. Я запускаю vidstabtransform следующим образом:
ffmpeg.exe -i input.mp4 -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 outputstabilized.mp4

Это согласно документации ffmpeg.org. Кажется, он меняет битрейт с исходных 30 Мбит/с до примерно 10 Мбит/с. Почему так? Могу ли я это контролировать и сохранять исходный битрейт? Стоит ли? (И еще, нужна ли мне нерезкая маска? Это потому, что есть некое неотъемлемое масштабирование со стабилизацией?).

Недостатком этого подхода, по-видимому, является то, что вы получите лучшее сжатие с помощью h265.послестабилизация дает меньше движения в пикселях, но, возможно, это не большая разница.

  1. Если второй вариант, могу ли я по-прежнему контролировать битрейт на выходе стабилизации?

Если кто-то может порекомендовать какие-то другие рабочие процессы, я тоже буду очень внимателен. (Я думал о том, чтобы попробовать использовать сложные карты фильтров, но они кажутся... сложными :), и я не тратил время, чтобы вникнуть в них).

Заранее спасибо!

решение1

Запустите vidstabdetectфильтр на исходном файле.

Запустите vidstabtransformфильтр и на исходном файле, но используйте кодер HEVC для получения конечного вывода. Фильтры запускаются перед кодером, поэтому преобразование стабилизирует кадры из исходного ввода перед отправкой их в кодер.

Связанный контент