20+ команд FFmpeg для начинающих
Учебное пособие по FFmpeg с примерами
В этом руководстве я объясню, как использовать мультимедийную платформу FFmpeg для выполнения различных операций перекодирования и преобразования аудио, видео, на примерах. Я собрал более 20 наиболее часто используемых команд FFmpeg для начинающих.
Я буду продолжать обновлять это руководство, время от времени добавляя новые примеры. Пожалуйста, добавьте это руководство в закладки и вернитесь через некоторое время, чтобы проверить наличие обновлений. Давайте начнем, ладно?
Установите FFmpeg в Linux
Если вы еще не установили FFmpeg в своей системе Linux, обратитесь к следующему руководству.
- Установить FFmpeg в Linux
Команды FFmpeg с примерами
Типичный синтаксис команды FFmpeg:
ffmpeg [global_options] {[input_file_options] -i input_url} ...
{[output_file_options] output_url} ...
Теперь мы рассмотрим некоторые важные и полезные команды FFmpeg.
1. Получение информации об аудио/видео файле
Чтобы отобразить сведения о медиафайле, запустите:
ffmpeg -i video.mp4
Пример вывода:
ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181127
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.20.100
Duration: 00:00:28.79, start: 0.000000, bitrate: 454 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], 318 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019.
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019.
At least one output file must be specified
Как вы видите в приведенном выше выводе, FFmpeg отображает информацию о медиафайле вместе с деталями FFmpeg, такими как версия, сведения о конфигурации, уведомление об авторских правах, параметры сборки и библиотеки и т. д.
Если вы не хотите видеть баннер FFmpeg и другие сведения, а только информацию о медиафайле, используйте флаг -hide_banner
, как показано ниже.
ffmpeg -i video.mp4 -hide_banner
Пример вывода:
Просмотр информации об аудио- и видеофайлах с помощью FFmpeg
Видеть? Теперь он отображает только сведения о медиафайле.
Рекомендуется прочитать:
- Отображение информации о медиафайлах в Linux с помощью MediaInfo
2. Преобразование видеофайлов в разные форматы
Поскольку FFmpeg — это многофункциональный и мощный конвертер аудио и видео, можно конвертировать медиафайлы в разные форматы. Скажем, чтобы преобразовать файл mp4
в файл avi
, выполните:
ffmpeg -i video.mp4 video.avi
Точно так же вы можете конвертировать медиафайлы в любой формат по вашему выбору.
Например, чтобы преобразовать видео YouTube в формате flv
в формат mpeg
, выполните:
ffmpeg -i video.flv video.mpeg
Если вы хотите сохранить качество исходного видеофайла, используйте параметр '-qscale 0'
:
ffmpeg -i input.webm -qscale 0 output.mp4
Чтобы проверить список поддерживаемых форматов FFmpeg, запустите:
ffmpeg -formats
3. Преобразование видеофайлов в аудиофайлы
Чтобы преобразовать видеофайл в аудиофайл, просто укажите выходной формат: .mp3
или .ogg
или любой другой аудиоформат.
Приведенная выше команда преобразует видеофайл input.mp4
в аудиофайл output.mp3
.
ffmpeg -i input.mp4 -vn 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
.
Приведенная выше команда отобразит предупреждающее сообщение, как показано ниже.
[libmp3lame @ 0x5589ed539240] Bitrate 320 is extremely low, maybe you mean 320k
The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Это связано с тем, что мы указали 320
бит/секунду в качестве битрейта, который очень низок. Это создаст выходной файл меньшего размера. Для получения наилучшего качества используйте значение битрейта 320k
вместо просто 320
.
4. Изменить громкость аудиофайлов
FFmpeg позволяет нам изменять громкость аудиофайла с помощью опции "фильтр громкости"
.
Например, следующая команда уменьшит громкость вдвое.
ffmpeg -i input.mp3 -af 'volume=0.5' output.mp3
Аналогичным образом мы можем увеличить громкость, как показано ниже:
ffmpeg -i input.mp3 -af 'volume=1.5' output.mp3
5. Изменить разрешение видеофайлов
Если вы хотите установить определенное разрешение для видеофайла, вы можете использовать следующую команду:
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
Приведенная выше команда установит разрешение данного видеофайла на 1280x720
.
Аналогично, чтобы преобразовать указанный выше файл в размер 640x480
, запустите:
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
Этот трюк поможет вам масштабировать видеофайлы на устройствах меньшего размера, таких как планшеты и мобильные телефоны.
6. Сжатие видеофайлов
Всегда полезно уменьшить размер медиафайлов до меньшего размера, чтобы сэкономить место на диске.
Следующая команда сожмет и уменьшит размер выходного файла.
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Обратите внимание, что вы потеряете качество, если попытаетесь уменьшить размер видеофайла. Вы можете снизить значение crf
до 23
или ниже, если 24
слишком агрессивен.
Вы также можете немного перекодировать звук и сделать его стерео, чтобы уменьшить размер, включив следующие параметры.
-ac 2 -c:a aac -strict -2 -b:a 128k
7. Сжатие аудиофайлов
Как и при сжатии видеофайлов, вы также можете сжимать аудиофайлы, используя флаг -ab
, чтобы сэкономить место на диске.
Допустим, у вас есть аудиофайл с битрейтом 320
кбит/с. Вы хотите сжать его, изменив битрейт на любое более низкое значение, как показано ниже.
ffmpeg -i input.mp3 -ab 128 output.mp3
Список различных доступных аудиобитрейтов:
- 96 кбит/с
- 112 кбит/с
- 128 кбит/с
- 160 кбит/с
- 192 кбит/с
- 256 кбит/с
- 320 кбит/с
8. Удаление аудиопотока из видеофайла
Если вам не нужен звук из видеофайла, используйте флаг -an.
ffmpeg -i input.mp4 -an output.mp4
Здесь 'an'
указывает на отсутствие аудиозаписи. Другими словами, эта опция отключит звук.
Приведенная выше команда отменит все флаги, связанные со звуком.
9. Удаление видеопотока из медиафайла
Аналогично, если вам не нужен видеопоток, вы можете легко удалить его из медиафайла, используя флаг 'vn'
. vn означает отсутствие записи видео. Другими словами, эта команда преобразует данный медиафайл в аудиофайл.
Следующая команда удалит видео из данного медиафайла.
ffmpeg -i input.mp4 -vn output.mp3
Вы также можете указать битрейт выходного файла, используя флаг '-ab'
, как показано в следующем примере.
ffmpeg -i input.mp4 -vn -ab 320 output.mp3
10. Извлечение изображений из видео
Еще одна полезная функция FFmpeg — мы можем легко извлекать изображения из видеофайла. Это может быть очень полезно, если вы хотите создать фотоальбом из видеофайла.
Чтобы извлечь изображения из видеофайла, используйте следующую команду:
ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
Здесь,
-r
— установить частоту кадров. То есть количество кадров, которые необходимо извлечь в изображения в секунду. Значение по умолчанию —25
.-f
— указывает выходной формат, то есть в нашем случае формат изображения.image-%2d.png
— указывает, как мы хотим назвать извлеченные изображения. В этом случае имена должны начинаться так:image-01.png
,image-02.png
,image-03.png
и т. д. . Если вы используете%3d
, то имена изображений будут начинаться так:image-001.png
,image-002.png
и так далее.
11. Обрезка видео
FFMpeg позволяет обрезать медиафайл в любом размере по вашему выбору.
Синтаксис обрезки видеофайла приведен ниже:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
Здесь,
input.mp4
— исходный видеофайл.-filter:v
— указывает видеофильтр.обрезка
– указывает фильтр обрезки.w
— ширина прямоугольника, который мы хотим обрезать из исходного видео.h
— высота прямоугольника.x
– x координата прямоугольника, который мы хотим обрезать из исходного видео.y
— координата y прямоугольника.
Допустим, вам нужно видео с шириной 640
пикселей и высотой 480
пикселей, из позиция (200,150
), команда будет такой:
ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
Обратите внимание, что обрезка видео повлияет на качество. Не делайте этого, если в этом нет необходимости.
12. Конвертируйте определенную часть видео
Иногда вам может потребоваться преобразовать в другой формат только определенную часть (длительность) видеофайла. Скажем, например, следующая команда преобразует первые 10
секунд данного файла video.mp4 в формат video.avi.
ffmpeg -i input.mp4 -t 10 output.avi
Здесь мы указываем время в секундах. Также можно указать время в формате чч.мм.сс
.
13. Установите соотношение сторон для видео
Вы можете установить соотношение сторон видеофайла, используя флаг -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
14. Добавление изображения постера в медиафайлы
Вы можете добавить изображения постеров в свои файлы, чтобы изображения отображались во время воспроизведения аудио- или видеофайлов. Это может быть полезно для размещения аудиофайлов на видеохостингах или веб-сайтах обмена.
ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
15. Обрезать медиафайл, используя время начала и остановки
Чтобы обрезать видео до меньшего размера, используя время начала и остановки, мы можем использовать следующую команду.
ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
Здесь,
--s
— указывает время начала видеоклипа. В нашем примере время начала – 50-я секунда.-t
— указывает общую продолжительность времени.
Это очень полезно, если вы хотите вырезать часть аудио- или видеофайла, используя время начала и окончания.
Аналогичным образом мы можем обрезать аудиофайл, как показано ниже.
ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
16. Разделите аудио/видео файлы на несколько частей.
Некоторые веб-сайты позволяют загружать видео только определенного размера. Например, WhatsApp разрешит использовать только видео продолжительностью 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-й секунды и будет продолжаться до конца исходного видеофайла.
Recommended Download - Free Guide: "How to Start Your Own Successful Podcast"
17. Объедините аудио и видео файлы
Чтобы объединить аудиофайл и видеофайл с перекодированием звука, запустите:
ffmpeg -i inputvideo.mp4 -i inputaudio.mp3 -c:v copy -c:a aac output.mp4
Приведенная выше команда объединит файл inputvideo.mp4
с inputaudio.mp3
в output.mp4
. Он также перекодирует аудиофайл.
Здесь я предполагаю, что аудио- и видеофайлы имеют одинаковую длину, а видеофайл не имеет аудиопотока.
Если ваш аудио- или видеопоток длиннее, вы можете добавить параметр -shortest
, чтобы ffmpeg прекратил кодирование после завершения одного файла.
Если входное видео уже содержит звук и вы хотите его заменить, вам нужно указать ffmpeg, какой аудиопоток использовать, как показано ниже:
ffmpeg -i inputvideo.mp4 -i inputaudio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
Опция -map
заставляет ffmpeg использовать для выходного файла только первый видеопоток с первого входа и первый аудиопоток со второго входа.
Если вы хотите объединить аудиофайл с видеофайлом. без перекодирования звука просто скопируйте оба файла, как показано ниже:
ffmpeg -i inputvideo.mp4 -i inputaudio.mp3 -c copy output.mkv
18. Объединение или слияние нескольких аудио/видео частей в одну
FFmpeg также объединит несколько частей видео и создаст один видеофайл.
Создайте файл join.txt
, содержащий точные пути к файлам, к которым вы хотите присоединиться. Все файлы должны быть одного формата (того же кодека). Путь ко всем файлам должен быть указан один за другим, как показано ниже.
file /home/sk/myvideos/part1.mp4
file /home/sk/myvideos/part2.mp4
file /home/sk/myvideos/part3.mp4
file /home/sk/myvideos/part4.mp4
Теперь объедините все файлы с помощью команды:
ffmpeg -f concat -i join.txt -c copy output.mp4
Если вы получите сообщение об ошибке, подобное приведенному ниже;
[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4'
join.txt: Operation not permitted
Добавьте "-safe 0"
:
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
Приведенная выше команда объединит файлы part1.mp4
, part2.mp4
, part3.mp4
и part4.mp4
. в один файл с именем "output.mp4"
.
Альтернативно вы можете использовать следующую однострочную команду для объединения всех файлов в каталоге. Перейдите в каталог, в котором находятся файлы, и выполните следующую команду, чтобы объединить файлы с именами audio1.mp3
, audio2,mp3
и audio3.mp3
в output.mp3
.
ffmpeg -i "concat:audio1.mp3|audio2.mp3|audio3.mp3" -c copy output.mp3
19. Добавьте субтитры в видеофайл
Мы также можем добавить субтитры к видеофайлу с помощью FFmpeg. Загрузите правильный субтитр для своего видео и добавьте его в свое видео, как показано ниже.
fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
20. Предварительный просмотр или тестирование видео или аудио файлов
Возможно, вам захочется выполнить предварительный просмотр, чтобы проверить или проверить, правильно ли перекодирован выходной файл. Для этого вы можете воспроизвести ее со своего терминала с помощью команды:
ffplay video.mp4
Воспроизведение видеофайлов с помощью ffplay
Аналогичным образом вы можете протестировать аудиофайлы, как показано ниже.
ffplay audio.mp3
Воспроизведение аудиофайлов с помощью ffplay
21. Увеличение/уменьшение скорости воспроизведения видео.
FFmpeg позволяет регулировать скорость воспроизведения видео.
Чтобы увеличить скорость воспроизведения видео, запустите:
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
Команда удвоит скорость видео.
Чтобы замедлить видео, вам нужно использовать множитель больше, чем 1
. Чтобы уменьшить скорость воспроизведения, запустите:
ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
22. Увеличение/уменьшение скорости воспроизведения звука.
Чтобы увеличить или уменьшить скорость воспроизведения звука, используйте аудиофильтр "atempo"
. Следующая команда удвоит скорость звука.
ffmpeg -i input.mp4 -filter:a "atempo=2.0" -vn output.mp4
Для аудио можно использовать любое значение от 0,5
до 2,0
.
23. Создать анимированный GIF
Мы используем изображения GIF практически во всех социальных и профессиональных сетях для различных целей. Используя FFmpeg, мы можем легко и быстро создавать анимированные видеофайлы.
В следующем руководстве объясняется, как создать анимированный файл GIF с помощью FFmpeg и ImageMagick в Linux и Unix-подобных системах.
- Как создать анимированный GIF-файл в Linux
Рекомендуется прочитать:
- Gifski – кроссплатформенный высококачественный кодировщик GIF
24. Создание видео из PDF-файлов
За прошедшие годы я собрал множество PDF-файлов, в основном учебных пособий по Linux, и сохранил их на своем планшетном ПК. Иногда мне лень читать их с планшета.
Итак, я решил создать видео из файлов PDF и посмотреть его на устройствах с большим экраном, таких как телевизор или компьютер. Если вы когда-нибудь задавались вопросом, как создать файл фильма из коллекции PDF-файлов, вам поможет следующее руководство.
- Как создать видео из PDF-файлов в Linux
25. Поворот видео
Если у вас есть видеофайлы с разной ориентацией (книжная или альбомная), вы можете повернуть их, как описано в следующем руководстве.
- Как повернуть видео с помощью FFMpeg из командной строки
26. Конвертируйте видео в формат видео WhatsApp.
WhatsApp не поддерживает некоторые видео. Вы не можете поделиться ими со своими контактами или установить для них статус WhatsApp. Не беспокойся! Мы можем легко конвертировать видео в формат видео, поддерживаемый WhatsApp, с помощью FFmpeg, как описано по следующей ссылке.
- Конвертируйте видео в формат видео WhatsApp с помощью FFmpeg
27. Увеличение и уменьшение масштаба видео
FFmpeg имеет множество полезных фильтров для выполнения конкретной задачи. Один из них — зумпан. Используя фильтр масштабирования, мы можем легко периодически увеличивать и уменьшать масштаб каждые X секунд.
Для получения более подробной информации перейдите по следующей ссылке:
- Как увеличивать и уменьшать масштаб видео с помощью FFmpeg
28. Получение помощи
В этом руководстве я рассмотрел наиболее часто используемые команды FFmpeg. У него гораздо больше возможностей для выполнения различных расширенных функций. Чтобы узнать больше об этом, обратитесь к странице руководства.
man ffmpeg
Связанное чтение:
- Руководство по YouTube-dl с примерами для начинающих
Заключение
В этом руководстве мы обсудили, что такое FFmpeg, как установить FFmpeg в различных дистрибутивах Linux. Затем мы предоставили вам список часто используемых команд FFmpeg с примерами для начала работы с FFmpeg.
Ресурс:
- Документация FFmpeg