Библиотека сайта 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