Часто используемые команды ffmpeg для обработки видео с фото-ловушки

Решил сделать для себя небольшой файл-заметку о том, какие команды запуска утилиты ffmpeg я использую наиболее часто.

Самый базовый интерфейс заключается в том, что бы в аргументе -i указать входной файл, а последним аргументом командной строки указать выходной файл. Например для конвертации из DSCF0001.AVI в DSCF0001.mp4 можно выполнить следующую команду:

ffmpeg -i DSCF0001.AVI DSCF0001.mp4

Изменение размера видео (масштабирование)

Фото-ловушка пишет видео в разрешении 3840 на 2160. Файлы получаются слишком большими, особенно для выкладывания их в сеть. Поэтому (перед тем как делиться видео) я уменьшаю разрешение видео.

Пример для 1920 на 1080:

ffmpeg -i DSCF0001.AVI -vf scale=1920x1080 DSCF0001.mp4

Пример для 1280 на 720:

ffmpeg -i DSCF0001.AVI -vf scale=1280x720 DSCF0001.mp4

Подробнее:

FFmpeg wiki: Scaling

Склеивание общего видео файла из нескольких фрагметнов

Предварительно необходимо сформировать файл, содержащий список путей файлов, из которых будет "склеено" результирующее видео. Пример содержимого файла для конкатенации файлов DSCF0001.AVI, DSCF0002.AVI и DSCF0003.AVI:

$ cat /tmp/files.txt                                                                                                     
file '/path/to/DSCF0001.AVI'
file '/path/to/DSCF0002.AVI'
file '/path/to/DSCF0003.AVI'

Команда последовательного объединения файлов DSCF0001.AVI, DSCF0002.AVI и DSCF0003.AVI в результирующий файл DSCF0001-3.mp4 будет выглядеть так:

ffmpeg -f concat -safe 0 -i /tmp/files.txt DSCF0001-3.mp4

Подробнее:

FFmpeg wiki: Concatenate

Вырезание фрагмента видео файла

Довольно часто нужно обрезать видео до момента, когда объект наблюдения полностью покинул кадр. Для этого нужно запомнить до какой секунды требуется оставить исходное видео. Это значение нужно подставить в опцию -to. Например для того, что бы оставить только первые 7 секунд видео нужно выполнить следующую команду:

ffmpeg -i DSCF0005.AVI -to 00:07 DSCF0005.mp4

Бывает и обратная ситуация, когда нужно оставить только конец видео, отбросив начало. Тут снова нужно определить с какой секунды требуется оставить исходное видео. Это значение нужно подставить в опцию -ss. Например для того, что бы отбросить первые 15 секунд видео можно выполнить следующую команду:

ffmpeg -i DSCF0005.AVI -ss 00:15 DSCF0005.mp4

Можно комбинировать опции -to и -ss в одном вызове, что бы вырезать интересующий кусок видео, указав с какой позиции и до какой требуется оставить материал.

Подробнее:

Documentation: 5.4 Main options

Удаление аудио

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

ffmpeg -i DSCF0001.AVI -an DSCF0001.mp4

Подробнее:

ffmpeg Documentation: 5.7 Audio Options