FFmpeg | Обрезка части видео или изображения (crop)
от aNNiMON
Кроме обрезки видео по времени, может понадобиться обрезать часть изображения на видео.
Содержание
- Обрезка от центра
- Константы
- Автоопределение размера обрезки (cropdetect)
Для обрезки применяется фильтр crop:
-vf crop=ширина:высота:x:y
x, y — координаты верхней левой точки, откуда будет произведена обрезка.
В параметрах поддерживаются математические выражения, а также некоторые константы (о них ниже).
Точка 0:0 находится в самом верхнем левом углу видео.
Дальнейшие примеры я буду проводить с этой картинкой, но всё то же самое работает и для видео.
⚠️ Многие видеокодеки не поддерживают нечётные размеры, поэтому не забывайте при обрезке указывать ширину и высоту кратными двум.
Обрезать до размера 300:220
Обрезать часть с позиции 50:30 до 300:220
Оба варианта делают одно и то же, но во втором случае не пришлось самому вычислять координаты.
Обрезка от центраЕсли не указывать x и y, то обрезка будет происходить от центра:
-vf crop=ширина:высота
Возьмём тот же пример с размером 300:220
КонстантыКонстанты, доступные для использования в фильтре:
iw, in_w — ширина исходного видео
ih, in_h — высота исходного видео
ow, out_w — ширина обрезанного видео
oh, out_h — высота обрезанного видео
a — отношение ширины и высоты iw/ih
Вырезать верхний левый угол видео до центра:
Вырезать верхний правый угол:
Вырезать нижний левый угол:
Вырезать нижний правый угол:
Вырезать центральную треть видео:
Обрезать 5 пикселей сверху, 10 справа, 15 снизу и 20 слева
Обрезать видео до высоты в 240 пикселей с сохранением пропорций:
Автоопределение размера обрезки (cropdetect)Если у видео есть чёрные полосы или оно заключено в тёмную рамку, можно воспользоваться фильтром cropdetect для того, чтобы ffmpeg подсказал размеры для обрезки:
В консоль будет выведена информация о координатах:
Останется только подставить значение:
Следующая статья →Содержание
- Обрезка от центра
- Константы
- Автоопределение размера обрезки (cropdetect)
Для обрезки применяется фильтр crop:
-vf crop=ширина:высота:x:y
x, y — координаты верхней левой точки, откуда будет произведена обрезка.
В параметрах поддерживаются математические выражения, а также некоторые константы (о них ниже).
Точка 0:0 находится в самом верхнем левом углу видео.
Дальнейшие примеры я буду проводить с этой картинкой, но всё то же самое работает и для видео.
⚠️ Многие видеокодеки не поддерживают нечётные размеры, поэтому не забывайте при обрезке указывать ширину и высоту кратными двум.
Обрезать до размера 300:220
- ffmpeg -i ffmpeg_crop_sample.jpg -vf crop=300:220:0:0 out1.jpg
- ffmpeg -i ffmpeg_crop_sample.jpg -vf crop=250:190:50:30 out2.jpg
- ffmpeg -i ffmpeg_crop_sample.jpg -vf crop=300-50:220-30:50:30 out2a.jpg
Обрезка от центраЕсли не указывать x и y, то обрезка будет происходить от центра:
-vf crop=ширина:высота
Возьмём тот же пример с размером 300:220
- ffmpeg -i ffmpeg_crop_sample.jpg -vf crop=300:220 out3.jpg
КонстантыКонстанты, доступные для использования в фильтре:
iw, in_w — ширина исходного видео
ih, in_h — высота исходного видео
ow, out_w — ширина обрезанного видео
oh, out_h — высота обрезанного видео
a — отношение ширины и высоты iw/ih
Вырезать верхний левый угол видео до центра:
- ffmpeg -i in.mp4 -vf crop=iw/2:ih/2:0:0 crop_ul.mp4
- ffmpeg -i in.mp4 -vf crop=iw/2:ih/2:iw/2:0 crop_ur.mp4
- ffmpeg -i in.mp4 -vf crop=iw/2:ih/2:0:ih/2 crop_bl.mp4
- ffmpeg -i in.mp4 -vf crop=iw/2:ih/2:iw/2:ih/2 crop_br.mp4
Вырезать центральную треть видео:
- ffmpeg -i in.mp4 -vf crop=1/3*in_w:1/3*in_h crop_center.mp4
Обрезать 5 пикселей сверху, 10 справа, 15 снизу и 20 слева
- ffmpeg -i in.mp4 -vf crop=iw-10-20:ih-5-15:20:5 out.mp4
Обрезать видео до высоты в 240 пикселей с сохранением пропорций:
- ffmpeg -i in.mp4 -vf crop=a*oh:240 out.mp4
- ffmpeg -i in.mp4 -vf crop=a*240:240 out.mp4
Автоопределение размера обрезки (cropdetect)Если у видео есть чёрные полосы или оно заключено в тёмную рамку, можно воспользоваться фильтром cropdetect для того, чтобы ffmpeg подсказал размеры для обрезки:
- ffmpeg -i in.mp4 -vf cropdetect -f null -
- [Parsed_cropdetect_0 @ 00000000003d4740] x1:0 x2:399 y1:17 y2:232 w:400 h:208 x:0 y:22 pts:127488 t:9.960000 crop=400:208:0:22
- ffmpeg -i in.mp4 -vf crop=400:208:0:22 out.mp4
Ускорить или замедлить аудио/видео