FFmpeg | Двухпроходная стабилизация видео (vidstab)
от aNNiMON
Двухпроходная стабилизация видео выполняется двумя фильтрами: vidstabdetect и vidstabtransform. Подробнее о них в этой статье (не забудьте посмотреть видео, там примеры нагляднее).
Содержание:
- vidstabdetect
- vidstabtransform
- Пример с подобранными параметрами
vidstabdetectНа первом этапе при помощи фильтра vidstabdetect анализируется трансформация изображения в видео.
В этом случае, ffmpeg не будет возвращать результат преобразования, что и делают параметры -f null -, но сам фильтр сохранит результаты анализа в файл transforms.trf.
Перед началом обработки, ffmpeg выведет информацию о текущих параметрах фильтра. Рассмотрим самые основные:
shakiness — принимает значения от 1 до 10, где 1 это минимальная тряска, а 10 — максимальная. По умолчанию используется значение 5.
stepsize — указывает, сколько пикселей будет использоваться в радиусе поиска трансформаций. По умолчанию имеет значение 6.
accuracy — влияет на точность и скорость обработки. 1 — быстрая неточная обработка и 15 — точная, используется по умолчанию.
result — позволяет задать имя результирующего файла трансформаций. По умолчанию это transforms.trf
show — задать режим наложения отладочной информации прямо на видео (значения от 0 до 2). При show=1 или show=2 уже придётся указать результирующий файл.
vidstabtransformНа втором этапе при помощи фильтра vidstabtransform проводится стабилизация видео.
Вот сравнение deshake (слева) и vidstabtransform с параметрами по умолчанию:
Основные параметры vidstabtransform:
smoothing — указывает, как сильно будет сглажено движение камеры. По умолчанию принимает значение 10, означающее, что для сглаживания будут использованы 10 кадров до и 10 кадров после текущего кадра.
Слева smoothing=2, справа smoothing=25
zoom — указывает, на сколько процентов будет увеличено или уменьшено изображение. Положительное значение позволит скрыть границы видео, из-за чего будет менее заметно, что применялась стабилизация. А отрицательное значение позволит стабилизировать видео без потери важных участков на границах.
Слева zoom=-10, справа zoom=25
crop — что делать с участками за пределами изображения. keep — использовать пиксели из прошлого кадра, black — закрасить пиксели чёрным.
input — позволяет задать имя входного файла трансформаций. По умолчанию это transforms.trf
Пример с подобранными параметрамиНа примере всё того же видео.
1. Минимизируем мелкую тряску.
2. Полученный результат стабилизируем с хорошим сглаживанием.
3. Сравниваем вариант по умолчанию с полученным результатом.
Слева стабилизация с параметрами по умолчанию, а справа то, что получилось в результате подбора значений:
Следующая статья →Содержание:
- vidstabdetect
- vidstabtransform
- Пример с подобранными параметрами
vidstabdetectНа первом этапе при помощи фильтра vidstabdetect анализируется трансформация изображения в видео.
- ffmpeg -i input.mp4 -vf vidstabdetect -f null -
Перед началом обработки, ffmpeg выведет информацию о текущих параметрах фильтра. Рассмотрим самые основные:
shakiness — принимает значения от 1 до 10, где 1 это минимальная тряска, а 10 — максимальная. По умолчанию используется значение 5.
stepsize — указывает, сколько пикселей будет использоваться в радиусе поиска трансформаций. По умолчанию имеет значение 6.
accuracy — влияет на точность и скорость обработки. 1 — быстрая неточная обработка и 15 — точная, используется по умолчанию.
result — позволяет задать имя результирующего файла трансформаций. По умолчанию это transforms.trf
show — задать режим наложения отладочной информации прямо на видео (значения от 0 до 2). При show=1 или show=2 уже придётся указать результирующий файл.
- ffmpeg -i input.mp4 -vf vidstabdetect=show=2 result.mp4
vidstabtransformНа втором этапе при помощи фильтра vidstabtransform проводится стабилизация видео.
- ffmpeg -i input.mp4 -vf vidstabtransform result.mp4
Вот сравнение deshake (слева) и vidstabtransform с параметрами по умолчанию:
- ffmpeg -i input.mp4 -vf split[v1][v2];[v1]deshake[v1];[v2]vidstabtransform[v2];[v1][v2]hstack result.mp4
Основные параметры vidstabtransform:
smoothing — указывает, как сильно будет сглажено движение камеры. По умолчанию принимает значение 10, означающее, что для сглаживания будут использованы 10 кадров до и 10 кадров после текущего кадра.
Слева smoothing=2, справа smoothing=25
zoom — указывает, на сколько процентов будет увеличено или уменьшено изображение. Положительное значение позволит скрыть границы видео, из-за чего будет менее заметно, что применялась стабилизация. А отрицательное значение позволит стабилизировать видео без потери важных участков на границах.
Слева zoom=-10, справа zoom=25
crop — что делать с участками за пределами изображения. keep — использовать пиксели из прошлого кадра, black — закрасить пиксели чёрным.
input — позволяет задать имя входного файла трансформаций. По умолчанию это transforms.trf
Пример с подобранными параметрамиНа примере всё того же видео.
1. Минимизируем мелкую тряску.
- ffmpeg -i input.mp4 -vf vidstabdetect=shakiness=3:accuracy=15 -f null -
- ffmpeg -i input.mp4 -vf vidstabtransform=smoothing=3:zoom=-3 step1.mp4
- ffmpeg -i step1.mp4 -vf vidstabdetect=shakiness=4:accuracy=15 -f null -
- ffmpeg -i step1.mp4 -vf vidstabtransform=smoothing=12:zoom=0 result.mp4
- ffmpeg -i input.mp4 -vf vidstabdetect=default.trf -f null -
- ffmpeg -i input.mp4 -i result.mp4 -filter_complex [0]vidstabtransform=input=default.trf[def];[def][1]hstack compare.mp4
Цветокоррекция