Часто бывает, когда съемку делаю с рук, без помощи штатива на видео видны колебания кадров. Ffmpeg разработана система, позволяющая стабилизировать видео. Насколько это возможно.

Первым вступает в действие фильтр vidstabdetect. Его задача записать колебания. Запись идет в специальны файл с раширением trf. В дополнение записывается видео файл, на котором показывает колеблющиеся точки. Аргументы записываются через двоеточие.

ffmpeg.exe  -i Video.mp4   -vf vidstabdetect=shakiness=10:accuracy=15:result=»Video.trf»:show=1 Video_trf.mp4

Аргумент shakiness регулирует насколько сильно учитывать тряску. От 1 до 10. 1 слабые, 10 сильные. По умолчанию 5.

Аргумент result  указывает в какой файл будет записана информация.

Аргумент аccuracy отвечает за точность процесса. Значение может быть от одного до 15. 1 менее точное, 15 высокая точность.

Аргумент stepsize определяет минимальный регион вокруг которого отслеживают движение точки. Минимальны 1, максимальный 6. По умолчанию 5.  Используем значение по умолчанию, поэтому в командой стоке он отсутствует.

Аргумент show запишет в видео файл и покажет, как точки движутся. Если приравнять этот аргумент к нулю это отменит запись видео файла движения точек. Этот файл служит для наглядности.

Запускаем процесс, по окончании получаем файл .trf и видео с колебаниями точек.

Второй этап заключается в запуске фильтра vidstabtransform.

Строчка выглядит так:

ffmpeg.exe  -i Video.mp4   -vf vidstabtransform=zoom=20:input=»Video.trf»,unsharp Video_stab.mp4

Аргумент zoom —  в процессе стабилизации кадры смещаются друг относительно друга  и по краям их надо чем-то заполнить. Zoom кадрирует изображение. Чем больше значение, тем больше увеличение.

А можно так:

ffmpeg.exe  -i Video.mp4   -vf vidstabtransform=input=»Video.trf»:crop=keep,unsharp Video_stab.mp4

Здесь пустые места заполняются другим способом.
Аргумент crop может принимать сдедующие значения: black края от колебаний заполнит черными пикселями. Или keep тогда возмет пустые места с предыдущего кадра.

Фильтр unsharp — применяется для увеличения
эффекта ощущения большей резкости.