Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

20 команд FFmpeg для начинающих

Оригинал: 20 FFmpeg Commands For Beginners
Автор: SK
Дата публикации: 10 мая 2017 года
Перевод: А. Кривошей
Дата перевода: октябрь 2017 г.

В этом руководстве мы объясним, как использовать мультимедийный фреймвок FFmpeg для преобразования различных аудио и видео файлов.

Стандартный синтаксис команды FFmpeg:

ffmpeg [global_options] {[input_file_options] -i input_url} ...
 {[output_file_options] output_url} ...

Далее мы рассмотрим некоторые важные и полезные команды FFmpeg.

1. Получение информации об аудио/видео файле

Для этого используется следующая команда:

Как можно видеть из этого примера, FFmpeg отображает информацию о мультимедийном файле вместе с данными FFmpeg, такими как версия, сведения о конфигурации, уведомления об авторских правах, варианты сборки, библиотеки и т. д.
Если вы не хотите видеть баннер FFmpeg и другие данные, а только информацию о файлах мультимедиа, используйте флаг -hide_banner, как показано ниже.

$ ffmpeg -i video.mp4 -hide_banner

информация о мультимедийном файле

2. Конвертирование видеофайлов в различные форматы

FFmpeg - это мощный аудио и видео конвертер, позволяющий преобразовывать медиафайлы в различные форматы. Например, чтобы преобразовать файл mp4 в avi, выполните команду:

$ ffmpeg -i video.mp4 video.avi

Точно так же вы можете конвертировать медиафайлы в любой формат по вашему выбору.
Например, чтобы преобразовать видео в формате FLV из YouTube в формат mpeg, выполните:

$ ffmpeg -i video.flv video.mpeg

Проверить список поддерживаемых FFmpeg форматов можно с помощью следующей команды:

$ ffmpeg -formats

3. Конвертирование видео файлов в аудио

Чтобы преобразовать видео файл в аудио, просто укажите формат вывода, например .mp3 или .ogg, либо любой другой аудиоформат.
Приведенная ниже команда преобразует видео файл file.mp4 в file.mp3.

$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3

Также вы можете использовать различные опции конвертирования, как показано ниже:

$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3

Здесь:

-vn – говорит о том, что мы отключили запись видео в конечный файл.
-ar – задает частоту дискретизации звука конечного файла. Наиболее широко используются значения 22050, 44100, 48000 Гц.
-ac – задает количество аудиоканалов.
-ab – задает битрейт.
-f – формат конечного файла. В нашем случае это mp3.

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

Предположим, вы хотите задать для видео файла определенное разрешение, это делается с помощью следующей команды:

$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4

или

$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4

Приведенная выше команда задает разрешение видео 1280×720.

Аналогично, чтобы преобразовать этот файл к разрешению 640×480, выполните:

$ ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4

или

$ ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4

5. Сжатие видео

Всегда хочется уменьшить размер медиафайлов, чтобы освободить место на жестком диске.
Следующая команда сжимает видео и уменьшает размер файла.

$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4

Помните, что при сжатии ухудшается качество. Для его сохранения можно снизить значение crf до 23 или еще ниже.

6. Сжатие аудио.

Вы также можете сжимать аудио файлы с помощью флага -ab, чтобы освободить место на диске.
Предположим, что ваш файл имеет битрейт 320 кб/с. Вы можете сжать его, уменьшив битрейт.

$ ffmpeg -i input.mp3 -ab 128 output.mp3

Ниже список доступных битрейтов:

96kbps
112kbps
128kbps
160kbps
192kbps
256kbps
320kbps

7. Удаление из медиафайла аудиопотока.

Если вам не нужен звук в видео файле, вы можете удалить аудиопоток с помощью флага -an.

$ ffmpeg -i input.mp4 -an output.mp4

Приведенная выше команда отменяет все связанные с аудио флаги, потому что мы удаляем звук из input.mp4.

8. Удаление видеопотока из медиафайла.

Аналогично, если вам не нужен видеопоток, вы можете легко удалить его из медиафайла с помощью флага «vn». Другими словами, эта команда преобразует заданный медиафайл в звуковой файл.

Следующая команда удалит видео из медиафайла.

$ ffmpeg -i input.mp4 -vn output.mp3

Вы также можете задать битрейт конечного файла с помощью флага "ab", как показано ниже.

$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3

9. Извлечение изображений из видео

Еще одна полезная функция FFmpeg - извлечение изображений из видео файлов. Например, для создания фотоальбома.
Извлечение изображений из видео файла производится с помощью следующей команды:

$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png

здесь:

-r – задает фреймрейт, то есть количество извлекаемых фреймов в 1 секунде видео. Значение по умолчанию - 25.
-f – формат извлекаемого изображения.
image-%2d.png – задает названия для наших файлов изображений. В этом примере это имена image-01.png, image-02.png, image-03.png и так далее. Если вы зададите %3d, то получите имена image-001.png, image-002.png и так далее.

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

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

$ ffmpeg -i input.mp4 -croptop 100 -cropbottom 100 -cropleft 300 -cropright 300 output.mp4

Необходимо помнить, что обрезка видео отрицательно влияет на его качество.

11. Конвертирование части видео

Иногда нужно конвертировать в другой формат только часть видео файла. Например, приведенная ниже команда конвертирует первые 50 секунд файла video.mp4 в файл video.avi.

$ ffmpeg -i input.mp4  -t 50 output.avi

Здесь мы задаем время в секундах. Также можно задавать его в формате hh.mm.ss.

12. Установка соотношения сторон видео

Вы можете задать соотношение сторон видео файла с помощью флага -aspect, как показано ниже.

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

Обычно используются следующие соотношения:

16:9
4:3
16:10
5:4
2:21:1
2:35:1
2:39:1

13. Добавление постера в аудио файлы

Вы можете добавлять изображения постеров в ваши файлы, чтобы они показывались во время воспроизведения файла. Это может быть полезно при размещении их на видеохостингах или веб-сайтах.

14. Вырезание части видео файла

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

$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4

здесь

–s – указывает время, с которого начинается вырезание видео, в нашем примере с 50-й секунды.
-t – указывает продолжительность нашего клипа.

15. Разрезание видео файла на несколько частей

Некоторые сайты позволяют загружать видео файлы не больше определенного размера. В таком случае вы можете разрезать большой файл на части меньшего размера.

$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4

Здесь -t 00:00:30 показывает, что первая часть берется от начала видео до 30-й секунды. -ss 00:00:30 задает начальную точку для второй части. То есть вторая часть берется с 30-й секунды до конца оригинального видео.

16. Объединение нескольких видео файлов

FFmpeg также позволяет объединять несколько видео файлов в один.

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

/home/sk/myvideos/part1.mp4
/home/sk/myvideos/part2.mp4
/home/sk/myvideos/part3.mp4
/home/sk/myvideos/part4.mp4

Теперь вы можете объединить их с помощью команды:

$ ffmpeg -f concat -i join.txt -c copy output.mp4

17. Добавление субтитров в видео файл

С помощью FFmpeg мы также можем добавлять субтитры в видео файл. Это делается с помощью следующей команды:

18. Тестирование видео и аудио файлов

Если вам хочется проверить, правильно ли было произведено конвертирование файла, вы можете воспроизвести его в терминале с помощью команды:

$ ffplay video.mp4

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

$ ffplay audio.mp3

19. Ускорение/замедление воспроизведения видео

FFmpeg позволяет вам регулировать скорость воспроизведения. Для увеличения скорости воспроизведения используется команда:

$ ffmpeg -i inputvideo.mp4 -vf "setpts=0.5*PTS" outputvideo.mp4

Для замедления скорости воспроизведения:

$ ffmpeg -i inputvideo.mp4 -vf "setpts=4.0*PTS" outputvideo.mp4

20. Получение помощи

В этом руководстве мы показали только самые основные и часто используемые команды FFmpeg. На самом деле он имеет огромное количество различных опций для реализации разных продвинутых возможностей. Найти их описание можно на man-странице:

$ man ffmpeg