Linux разбить видео на кадры

Обновлено: 06.07.2024

У многих пользователей Windows и без того полно приложений, чтобы скачивать, устанавливать, активировать ещё одно для работы с видео. Обойдёмся без этих трудностей!

FFmpeg – функциональный видео- и аудио- конвертер. У него нет графического интерфейса, поэтому выполнять операции необходимо из консоли. При этом функционал программы и качество работы её превосходит тот, что показывают привычные конвертеры.

Базовые возможности FFmpeg:

  • конвертация файлов;
  • изменение разрешения;
  • кадрирование;
  • обрезка и склейка файлов;
  • замена, добавление, извлечение аудиодорожек и субтитров;
  • наложение водяного знака;
  • кодирование или стриминг потокового видео.

FFmpeg на самом деле прост в использовании и будет полезен как профессионалам, работающим с видео, так и любителям, решившим обработать домашний видеоархив.

Установка FFmpeg.

Разархивируйте содержимое скачанного архива, например в Program Files или Windows или Windows\System32 (или в другую папку, где у вас могут храниться портативные программы).

  • Имя файла: ffmpeg.zip (прямая ссылка)
  • Версия: 4.3.2
  • Размер файла: 39,3 МБайт
  • Требование: OS Windows
  • MD5: 5183ac5b1886fe4df4f32d5939ce0df9

Чтобы каждый раз не прописывать длинный путь к программе, например: C:\Program Files\ffmpeg\bin\ffmpeg.exe рекомендую добавить её в системную переменную Path, для этого перейдите:

Пуск → Параметры → Система → О программе → Дополнительные параметры системы → Переменные среды

Запустите "Выполнить" нажатием win+R и выполните sysdm.cpl, затем перейдите во вкладку "Дополнительно", а там уже "Переменные среды".


Переменная среда Path

Теперь для того, чтобы вызвать FFmpeg используйте в консоли (PowerShell или CMD) следующую команду:

FFmpeg: конвертация видео.

После установки FFmpeg можно заниматься работой с медиа файлами, например, конвертируем видео в консоли.

Эта команда сконвертирует видео из файла input.avi в output.mp4. По умолчанию для файлов mov и mp4 используется кодек H.264. Размер кадра и fps будут взяты из исходного файла.

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

  • -i имя исходного файла, который предстоит сконвертировать, если файлов несколько перед каждым из них нужно указать -i;
  • -y ответит Да (yes) на все вопросы от FFmpeg, если они возникнут в процессе кодирования, например при для перезаписи файла, если тот уже существует;
  • -vcodec или кратко c:v – параметры видеокодека, либо copy (если перекодирование не требуется), либо пустой параметр (по умолчанию);
  • -f – формат контейнера;
  • -b:v (-vb, -b) – битрейт видео в килобитах или мегабитах в секунду задаётся буквой K или M;
  • -aspect – соотношение сторон картинки (4:3, 16:9, 1.3333, 1.7777);
  • -r – частота кадров;
  • -s — разрешение, поддерживаются как числовые значения (640×480) и буквенные обозначения (например, qcif, qvga);
  • -vf (или -filter:v) — опция со списком фильтров, которые будут применены к видео;
  • -c:a (или -acodec) – параметры аудиокодека, либо copy (если аудио дорожку нужно оставить как есть), либо пустой параметр (по умолчанию);
  • -f – формат аудио;
  • -af (или -filter:a) — опция со списком фильтров, которые будут применены к аудио;
  • -ab (или -b:a) – битрейт аудио;
  • -ar – частота дискредитации;
  • -ac – количество каналов.

Для примера рассмотрим следующую команду:

ffmpeg -y -i input.avi -c:v libx264 -preset medium -b:v 17000K -aspect 16:9 -r 25 -c:a aac -b:a 128K output.mp4

Данная команда перекодирует файл input.avi в output.mp4. В случае если в конечной папке будет содержаться файл output.mp4, он будет перезаписан (опция -y). В качестве кодека будет использован libx264 со среднем соотношением скорость/качество (-preset medium). Конечный битрейт 17000 kbps, соотношение сторон картинки 16:9, частота 25 кадров в секунду. В качестве аудиокодека будет использован AAC с битрейтом 128kbps.

FFmpeg: Полезные команды.

Чтобы получить информацию о видеофайле выполните: ffmpeg -i video.mp4

Чтобы получить информацию о ключах и параметрах: ffmpeg -help

Исходные и конечные файлы могут быть любого формата, FFmpeg работает почти со всеми из существующих. Список поддерживаемых форматов ffmpeg -formats

Список поддерживаемых кодеков: ffmpeg -codecs

Обрезка видео.

ffmpeg -i input.mp4 -ss 00:00:05 -t 00:05:15 -c copy output.mp4

Склейка видео.

ffmpeg -i "concat:file1.avi|file2.avi" -vcodec copy -acodec copy output.avi

Для склейки используется оператор concat. После двоеточия ему передаются входные файлы, разделённые вертикальной чертой. Соединяемые файлы обязательно должны быть одного формата (видео и аудио), их параметры должны совпадать.

Конвертация аудио.

ffmpeg -i input.wav -ar 44100 -ac 2 -ab 192K -f mp3 output.mp3

Аудио файлы можно конвертировать независимо от видео.

Изменение разрешения и кадрирование.

ffmpeg -i input.mp4 -s 1280x720 output.mp4

Чтобы изменить разрешение конечного видео можно воспользоваться опцией -s.

ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

Однако использование фильтра scale даст более качественный результат.

Для кадрирования изображения предназначен фильтр crop. Его параметры имеют следующий вид crop=w:h:x:y, где w — ширина прямоугольника, который нужно вырезать из исходного видео, h — высота прямоугольника, x и y — x координаты точки начала обрезки.

ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4

Команда выше вырежет из кадра прямоугольник шириной 640 и высотой 480 пикселей, начиная с позиции (200,150).

Соотношение сторон.

Соотношение сторон устанавливаются опцией -aspect.

ffmpeg -i input.mp4 -aspect 16:9 output.mp4

Ещё пример: ffmpeg -i input.mp4 -aspect 16:9 -vf scale=1280:720 output.mp4
Самые популярные соотношения сторон: 16:9 | 4:3 | 16:10 | 5:4 | 2:21:1 | 2:35:1 | 2:39:1.

Добавление, извлечение и удаление и аудио.

Чтобы добавить звуковую дорожку в видеофайл используйте опцию -i, в которой укажите путь к аудиофайлу.

ffmpeg -i noaudio.mpg -i audio.acc -vcodec copy -acodec copy output.mpg

Удалить из видеофайла звуковую дорожку можно с помощью опции -an (audio not).

ffmpeg -i input.mpg -vcodec copy -an noaudio.mpg

Сохранить аудиодорожку из видеофайла.

ffmpeg -i input.mpg audio.wav

Если требуется сохранить дорожку в определённый формат, укажите параметры явно:

ffmpeg -i input.avi -vn -ar 44100 -ac 2 -ab 192K -f mp3 audio.mp3

Опция -ar указывает частоту дискретизации, -ac — количество каналов, -ab — битрейт. Опция -vn означает, что видео информация будет отброшена, а опция -f указывает формат полученного файла (в примере — это mp3).

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

ffmpeg -i input.avi -map 0:2 audio.wav

В примере ниже показано, как добавить несколько звуковых дорожек в видеофайл (мультиплексация).

ffmpeg -i video.avi -i audio1.mp3 -i audio2.mp3 -map 0:0 -map 0:1 -map 0:2 output.mkv

Так как в примере выше только один выходной файл, 0 перед двоеточием можно опустить.

Изменение громкости.

Для изменения громкости в FFmpeg существует аудиофильтр volume.

Следующая команда в половину уменьшит громкость:

ffmpeg -i input.mp3 -af 'volume=0.5' output.mp3

Аналогично, громкость можно увеличить (в примере ниже в полтора раза):

ffmpeg -i input.mp4 -c:v copy -af 'volume=1.5' output.mp4

Возможности FFmpeg на этом не ограничиваются, поэтому подробнее можно ознакомиться с командами и фильтрами на официальном сайте.

Иногда требуется посмотреть видео не «как обычно», а покадрово, т.е. в виде отдельных кадров, где каждый из них был бы представлен отдельной картинкой. Для этого можно использовать утилиту ffmpeg . Если она еще не установлена, потребуется установка, например, при помощи команды:

sudo apt install ffmpeg

Потребуется ввести пароль и, конечно, нужен работающий интернет. После завершения установки в каталоге, где находится видео-файл, например, с именем video.mp4 , следует ввести команду:

ffmpeg -i video.mp4 image%d.jpg

Процесс раскадрирования продлится некоторое (небольшое) время, после чего в текущем каталоге появятся файлы с именами image1.jpg, image2.jpg, и т.д. С каждым их этих файлов можно работать, как с обычным графическим файлом формата jpg.

Как создать видео из отдельных картинок

Т.е. как объединить картинки в один цельный видеофайл. Например, команда создает видео в формате Flash (FLV):

ffmpeg -r 2 -i image%d.jpg -s 1080x1920 -y -an -r 24 videoOut.flv

-r 2 определяет частоту кадров во входном потоке (в данном случае - две картинки в секунду),

-i img%d.jpg определяет шаблон для имён файлов с отдельными кадрами, т.е. в текущем каталоге должны присутствовать графические файлы (картинки) с именами img1.jpg, img2.jpg, img3.jpg и т.д.

-s 1080x1920 масштабирует кадры (если изначально они имеют разный размер),

-y определяет перезапись видеофайла с результатом без подтверждения пользователя,

-an - не записывать звук,

-r 24 устанавливает частоту кадров в видеопотоке на выходе.

Если где-нибудь в середине команды добавить -sameq , то качество картинок будет максимально сохранено, насколько это возможно.

Следующая команда создает видео в формате mp4 :

ffmpeg -framerate 24 -i image%d.jpg videoOut.mp4

Если не использовать опцию -framerate , то как входной, так и выходной поток будет содержать по 25 кадров в секунду.

Как преобразовать видео в другой формат

Иногда требуется преобразовать видеофайлы из одного формата в другой. Скажем, в случае, если проигрыватель видеофайлов не поддерживает какой-либо формат, а видео представлено именно в нем. Например, команда

ffmpeg -i video.mp4 video1.avi

преобразует файл из формата mp4 в формат avi . Точнее, создает новый файл, содержащий то же самое видео в формате avi.

Заключение

Вообще, утилита ffmpeg в Linux – достаточно мощная, справка по ней ( man ) – очень объемная, там описано много разных опций и возможностей. Единственное неудобство – то, что эта утилита – консольная, т.е. конкретный вид команды, ее опции необходимо знать, методом «тыка» мышью работать не получится. Кроме того, при обновлении могут меняться опции и их функциональность.

Довольно часто, просматривая познавательные фильмы или просто любимое Вами кино в хорошем качестве, хочется выдернуть какой либо понравившейся Вам кадр и установить на заставку на Вашем ПК. Сейчас я покажу, как это сделать в моей любимой системе Ubuntu 10.10. И так, из репозитариев нам нужно будет доустановить пакет ffmpeg:

$ sudo aptitude install ffmpeg

Для получени я информации о файл е :

keiz@ekz:/media/xlamino/test_ffmpeg$ ffmpeg -i admin.mp4

FFmpeg version 0.6-4:0.6-2ubuntu6.3, Copyright (c) 2000-2010 the FFmpeg developers

built on Dec 21 2011 18:28:03 with gcc 4.4.5

WARNING: library configuration mismatch

libavutil 50.15. 1 / 50.15. 1

libavcodec 52.72. 2 / 52.72. 2

libavformat 52.64. 2 / 52.64. 2

libavdevice 52. 2. 0 / 52. 2. 0

libavfilter 1.19. 0 / 1.19. 0

libswscale 0.11. 0 / 0.11. 0

libpostproc 51. 2. 0 / 51. 2. 0

encoder : AMVsimple GUI 3.4_standard

Duration: 00:03:43.97, start: 0.000000, bitrate: 3422 kb/s

At least one output file must be specified

Чтобы разложить мультимедийный контент на кадры (кадры могут принимать следующие графические форматы: PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI):

keiz@ekz:/media/xlamino/test_ffmpeg$ ffmpeg -i admin.mp4 image%d.jpg

FFmpeg version 0.6-4:0.6-2ubuntu6.3, Copyright (c) 2000-2010 the FFmpeg developers

built on Dec 21 2011 18:28:03 with gcc 4.4.5

WARNING: library configuration mismatch

libavutil 50.15. 1 / 50.15. 1

libavcodec 52.72. 2 / 52.72. 2

libavformat 52.64. 2 / 52.64. 2

libavdevice 52. 2. 0 / 52. 2. 0

libavfilter 1.19. 0 / 1.19. 0

libswscale 0.11. 0 / 0.11. 0

libpostproc 51. 2. 0 / 51. 2. 0

encoder : AMVsimple GUI 3.4_standard

Duration: 00:03:43.97, start: 0.000000, bitrate: 3422 kb/s

Press [q] to stop encoding

frame= 5598 fps= 81 q=24.8 Lsize= -0kB time=223.92 bitrate= -0.0kbits/s

video:65254kB audio:0kB global headers:0kB muxing overhead -100.000033%

По завершению перейдя в каталог, к примеру через GUI интерфейс посредством любого файлового менеджера, можно обнаружить множество видеокадров этого видео:

На клавиатуре нажимаем «Alt + F2» для вызова диалогового окна «Выполнить программу» и набираем: «nautilus /media/xlamino/test_ffmpeg»

В этой статье я расскажу вам о том, как можно вырезать фрагмент из видео, склеить видео из фрагментов (частей), извлечь звук из видеозаписи и всё это делается буквально одной строчкой кода. Для этого мы будем использовать "программу" FFmpeg. И да - всё это очень просто и бесплатно. Ссылки на программу и рабочий пример будут в конце статьи.

Почему такая длинная статья и зачем всё это надо

Статья длинная потому что все объяснено очень подробно. Можно читать быстро и "между строк". Можно даже и не читать, а просто скачать пример и если возникнут вопросы смотреть статью.

Зачем это надо. Я показал основные операции с видео - это уже полезная информация.

Я показал операции в "цикле". Мы разрезаем видеофайл на фрагменты, разбиваем фрагмент покадрово, вырезаем звук. А потом всё обратно собираем. И вуаля - исходное видео.

Зачем мы это делаем? Дело в том, что теперь мы можем работать с изображениями. И некоторые нейросети это тоже могут. Итого после разбивки видео на кадры мы можем их изменить, обработать нейросетью, а потом заново собрать и получить интересный результат. И в следующей статье я это покажу. Итого: полезная и подробная информация о работе с FFmpeg и интересное применение данной программы.

Сразу к делу

Сначала я хотел написать вводную часть с кратким пояснением, что такое FFmpeg, преимущества данной программы и недостатки. Но кому это надо, когда есть Википедия? Поэтому скажу кратко и по существу - FFmpeg это программа, которая позволяет делать с видео почти что угодно. Программа не имеет графического интерфейса - работа идет из командной строки. Но намного удобнее создать cmd файлы, что мы и будем делать.

Итого наш краткий план действий.

2) Создать cmd файл с 1-2 строчками кода.

3) Запустить cmd файл и получить результат. Всё.

А можно ничего и не делать. Ведь я уже всё сделал за вас. Качаем мой архив "Пример", распаковываем (ссылка есть внизу статьи). Там всё уже есть. И FFmpeg и cmd файлы. А статью читаем в качестве пояснения. Для новичка так будет проще. Обратите внимание, мой пример работает для Windows x64.

Скачиваем FFmpeg

Первое, что нам нужно - это скачать FFmpeg. Ссылка есть в конце статьи (а можно и загуглить). Идем на официальный сайт, выбираем (если вдруг не выбралось автоматически) версию (Version - для начала можно любую), архитектуру (скорее всего у вас Windows x64), выбираем компоновку (Linking - Static) и нажимаем Download Build.

Читайте также: