FFmpeg — мультимедийный комбайн, набор библиотек которые позволяют записывать, обрабатывать и конвертировать видео и/или аудио материалы в различные форматы. С помощью этого инструмента можно производить видео монтаж практически любой сложности. Его используют многие плееры, конвертеры, редакторы и библиотеки компьютерного зрения. В этой статье я поделюсь трюками и хитростями с FFmpeg, которые и сам часто использую в работе.
Довольно часто нужно вырезать с видео небольшой фрагмент с n по m секунды. Для этого нужно указать секунду, с которой вырезать и длительность.
ffmpeg -i i.mp4 -ss 00:01:00 -t 00:02:00 -c copy o.mp4
Параметр -ss
указывает на начальную точку, а -t
на длительность.
Важное замечание! Если длительность видео 5 минут, начальную точку укажем в 00:04:00, а длительность в 00:02:00, длительность конечного видео будет 1 минута.
Тут и далее по тексту статьи, i.mp4
– это путь к входному файлу, а o.mp4
– к выходному.
Предположим, у нас есть камера наблюдения, которая делала фото каждую минуту в течении суток, а мы хотим получить одно непрерывное видео.
Используя код ниже, можно превратить все фото с расширением .jpg с текущей папки в видео, с кадровой частотой 10 FPS, используя H.264 кодек.
ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' -c:v libx264 o.mp4
А теперь сделаем действие противоположное действию с предыдущего пункта — разобьем видео по кадрам на фотографии.
ffmpeg -i o.mp4 -r 1 -q:v 2 -f image2 img-3%d.jpeg
Для склейки множества видео в одно нам потребуется создать файл, например list.txt в котором по порядку перечислим пути к видео, которые хотим склеить, например:
file 'video1.mp4'
file 'video2.mp4'
file 'videoN.mp4'
А после этого выполним:
ffmpeg -f concat -i list.txt -c copy o.mp4
Создавать такой файл вручную не лучшая идея, можно его наполнить автоматически, например, так:
for f in ./*.mp4; do echo "file '$f'" >> list.txt; done
или так:
printf "file '%s'n" ./*.mp4> list.txt
Для удаления используем:
ffmpeg -i i.mp4 -c:v copy -an o.mp4
А для извлечения:
ffmpeg -i i.mp4 -vn 0.wav
В начале статьи я рассказал о способе обрезки видео по времени, но его также можно обрезать и по размеру кадра, например превратить 16:9 формат в 3:4, обрезав кадр слева и справа.
ffmpeg -i i.mp4 -filter:v "crop=w:h:x:y" o.mp4
В фильтре crop по очереди нужно указать ширину, высоту нового кадра, а также его смещение по координатам.
Перед тем, как мы это сделаем, есть пара моментов, которые нужно рассмотреть:
Видео должны иметь одинаковую высоту.
Видео должны иметь тот же формат пикселей.
Горизонтальное размещение:
ffmpeg -i i0.mp4 -i i1.mp4 -filter_complex hstack=inputs=2 o.mp4
Вертикальное размещение:
ffmpeg -i i0.mp4 -i i1.mp4 -filter_complex vstack=inputs=2 o.mp4
Сетка 2×2:
ffmpeg
-i i0.mp4 -i i1.mp4 -i i2.mp4 -i i3.mp4
-filter_complex
"[0:v][1:v]hstack=inputs=2[top];
[2:v][3:v]hstack=inputs=2[bottom];
[top][bottom]vstack=inputs=2[v]"
-map "[v]"
o.mp4
Сетка 3×2:
ffmpeg
-i i0.mp4 -i i1.mp4
-i i2.mp4 -i i3.mp4
-i i4.mp4 -i i5.mp4
-filter_complex
"[0:v][1:v][2:v]hstack=inputs=3[top];
[3:v][4:v][5:v]hstack=inputs=3[bottom];
[top][bottom]vstack=inputs=2[v]"
-map "[v]"
o.mp4
ffmpeg -i i.mp4 -vf "transpose=0" o.mp4
Параметр transpose в коде выше может принимать такие значения:
0 – Повернуть на 90 градусов против часовой стрелки и развернуть по вертикали. По умолчанию.
1 – Повернуть на 90 градусов по часовой стрелке.
2 – Повернуть на 90 градусов против часовой стрелки.
3 – Повернуть на 90 градусов по часовой стрелке и развернуть по вертикали.
FFmpeg очень мощный инструмент для обработки видео. С его помощью, имея шпаргалку по его возможностям, можно сэкономить много времени — куда быстрее ввести несколько команд, чтобы обработать видео, чем запускать редактор.
Если вы знаете еще полезные хитрости и трюки — милости прошу поделиться ими в комментариях. Спасибо!
Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…
Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…
Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…
У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…
24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…
27 июня Яндекс проведет гик-фестиваль Young Con для студентов и молодых специалистов, которые интересуются технологиями и хотят работать в IT.…