Как работать с ffmpeg в windows

Информация для тех, кто хотел бы научиться на своём компьютере/ноутбуке редактировать записи вебинаров через специальную программу!

Информация для тех, кто хотел бы научиться на своём компьютере/ноутбуке редактировать записи вебинаров через специальную программу!

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

1. Изменить формат и качество записи;
2. Изменить разрешение и битрейт для видео и аудио;
3. Нарезать фрагменты записи на отдельные записи;
4. Замедлить и ускорить воспроизведение видео и аудио;
5. Склеить видео и аудио в единый файл;
6. Удалить аудио из видео, а также извлечь аудио из видео.

(Более подробную информацию см. в шаге №5).


С ЧЕГО НАЧАТЬ?

Шаг №1. Скачиваем программу на Windows

Для начала Вам необходимо перейти на официальный сайт разработчиков и скачать файл программы. Ссылка на скачивание программы: https://yadi.sk/d/_ybZxA8VN2pBmQ

Шаг №2. Установка программы

Этот шаг требует особого внимания, так как работа с FFMPEG происходит через командную строку, поэтому разберём по пунктам алгоритм установки FFMPEG:

1. Вы скачали архивный файл и Вам необходимо его открыть;
2. Открываем скачанный архивный файл и находим папку «bin», внутри которой располагается файл-приложение «ffmpeg.exe»;

Примечание! Если у Вас нет архиватора для открытия файла, то можно скачать архиватор WinRar на официальном сайте разработчиков.
Ссылка на скачивание: https://winrar-pro-download.com

pymxzcqr6dy

zgakvfxg9la

3. Извлекаем файл «ffmpeg.exe» в заранее созданную папку «ffmpeg» на корневом диске (как правило, это диск «C»);

fmdibh4iqxe

y81jsa6nx-m

4. Далее заходим в проводник (иконка «лупа») и находим «Мой компьютер». Нажимаем на него правой кнопкой мыши и выбираем «свойства», после чего появится следующее окно:

y8h_zk7bq_m

%d0%b1%d0%b5%d0%b7%d1%8b%d0%bc%d1%8f%d0%bd%d0%bd%d1%8b%d0%b9

5. Нажимаем на «Дополнительные параметры системы» и заходим в «переменные среды»;

kg0byuk-jh0

6. Находим в окошке «системные примененные» пункт «Path», нажимаем «изменить»;

uu7ln5kvcqq

7. В появившемся окне нажимаем на кнопку «создать» и указываем путь к файлу ffmpeg. Для этого переходим в папку с ffmpeg и кликаем на строчку, выделенную красным (см. на картинке), после чего нажмите сочетание клавиш Ctrl+C;

alsokr3uyce

tsw5ewb0cv0

8. После того, как нажали клавишу «Создать» (1), вставляем скопированное в строку (2) и нажимаем на «Ок» (3).

6swtiav37ug


Шаг №3. Запускаем программу

1) Если вы используете ОС Windows10, то вам достаточно нажать на значок «поиск»(лупа) и ввести английскими буквами «cmd»:

80vzrx8dcwi

(Прим. Если же Вы используете более ранние версии Windows (7,8), то Вам нужно зайти в меню «пуск» и строка «поиск» будет в самом низу).

2) Далее, заходим в командную строку и проверяем – работает ли программа. Для этого вводим: ffmpeg, после чего нажимаем кнопку Enter. Если Вы всё сделали правильно, у Вас будет примерно следующий отклик в командной строке:

aqd8fvhao8w

(Прим. Если же у Вас появляются строки красного цвета, то вероятно – Вы сделали что-то не так. Попробуйте повторить алгоритм по новой).


Шаг №4. Используемые файлы

Для начала работы с видео-файлом необходимо, чтобы файл находился в директории доступных дисков. Например: имеется видео-файл «Testovii File.mp4». Я расположил его прямо на диск D.

adewyi-9jq

Таким же образом разместите остальные файлы, с которыми вы собираетесь работать в ffmpeg.

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

(Прим. Рекомендуется использовать английские буквы в названии файлов, с которыми собираетесь работать)

Теперь с файлами можно работать.

Запускаем командную строку. Как правило, по умолчанию в командной строке указан путь к корневой папке, например:

mtnqxyasbxi

Чтобы начать обрабатывать файл, необходимо указать тот диск, где расположен нужный файл. В нашем случае, это Диск D. Для смены диска, в строке прописываем команду: D:

После чего нажимаем Enter и видим, что теперь у нас отображается Диск D:

5ru6wyjoyvu 0c4bdd1ycay

Теперь мы можем начать работать с файлами. Любая команда начинается со слова ffmpeg в строке:

yfzwtulib1g

Далее будет представлен ряд простых команд, где input.mp4 – название исходного видео-файла; input.mp3 – название исходного аудио-файла; output.format – название полученного файла; а ключ «–i» -это то, что необходимо прописывать перед обрабатываемым файлом (input.mp4/input.mp3).

Шаг №5. Основные команды

1) Для того, чтобы перевести видео в другой видеоформат:

ffmpeg –i Zinput.avi output.mp4

(Прим. – Z — путь к файлу input.avi, пример: выбираем нужный файл в папке (1), кликаем на него, затем кликаем на строку с его расположение (2), и копируем правой кнопкой мышки; также следует помнить, что при попытке форматирования из более легкого файла(Mp4) в более тяжелый(avi) – полученный файл будет в более плохом качестве)

2) Для того, чтобы перевести видео в аудио:

ffmpeg –i Zinput.mp4 output.mp3

(Прим. – Если появляется красная строка при нажатии ENTER, то попробуйте поместить input.mp4 в Кавычки – «input.mp4»)

3) Для того, чтобы вырезать фрагмент из видео:

Способ : 1 – обрезать концовку.

ffmpeg -i input.mp4 –t 00:00:00 output.mp4

(Прим. -t 00:00:00 – указывается время продолжительности видео от начала)

Способ : 2 – вырезать кусок из любой точки.

ffmpeg -ss 00:00:00 -i input.mp4 -t 00:00:00 output.mp4

(Прим. –ss 00:00:00 – указывается время начала желаемого куска; -t 00:00:00 – указывается время продолжительности желаемого куска;

Если появляется красная строка, то попробуйте поместить input.mp4 в Кавычки – «input.mp4»)

P.S Применимо как к видео, так и к аудио файлам!

4) Команда для склеивания пустого видео файла и аудио файла:

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

(Прим. Если вы используете разные по длительности файлы, то у них вседа будет совпадать начало, а длительность конечного файла будет равна самому длинному исходному файлу, пример:

Аудиофайл.mp3 – длительность 00:05:00 + Видеофайл.mp4 – длительность 00:03:00 = финальный файл.mp4 – длительность 00:05:00)

5) Команда для удаления аудио из видео:

ffmpeg -i input.avi -vcodec copy –an output.avi

6) Команда для ускорения/замедления видео:

ffmpeg –i input.avi -vf setpts=X*PTS output.avi

(Прим. X больше 1 – замедление; X меньше 1 — ускорение)

7) Команда для ускорения/замедления аудио:

Ffmpeg –I input.mp3 -filter:a «atempo=X» –vn output.mp3

(Прим. X значение больше нуля – ускорение; X значение меньше нуля (0.5;0.8) – замедление)

8) Команда для ускорения/замедления файла с аудио и видео:

ffmpeg -i input.mp4 -filter_complex «[0:v]setpts=X*PTS[v];[0:a]atempo=Y[a]» -map «[v]» -map «[a]» output.mp4

(Прим. X больше 1 – замедление; X меньше 1 – ускорение;

Y значение больше нуля – ускорение; Y значение меньше нуля (0.5;0.8) – замедление)

9) Для того, чтобы изменить параметр «качество»:

Для AVI:

ffmpeg -i input.avi -q X output.avi

(Прим. X от 23 до 50, где 50 – минимальное качество; данная опция помогает уменьшить размер файла)

Для Mp4:

ffmpeg -i input.mp4 -crf X output.mp4

(см. Прим. Выше)

10) Для того, чтобы изменить Битрейт:

Для аудио: ffmpeg -i input.mp4 -b:a 128k output.mp4

(Прим. Где 128k– цифра, обозначающая размер битрейта)

Для видео: ffmpeg -i input.mp4″ -b:v 1000k output.mp4

11) Для того, чтобы изменить разрешение видео:

ffmpeg -i input.mp4 -s X output.mp4

(Прим. X – разрешение, например: «-s 800×600»)

Для общего сжатия видео:

13) ffmpeg -i input.mp4 -codec:a copy -vcodec libx264 -preset fast -crf 32 output.mp4

В заключении:

В этой статье были рассмотрены:

— Способ установки ffmpeg для Windows

— Была представлена выжимка из самых распространённых команд, которая позволит использовать программу «ffmpeg» для решения, пусть не самых сложных, но всё-же возникающих задач.

Команды в программе ffmpeg не ограничиваются тем списком, что был представлен в данной статье. Как было сказано выше, в интернете существует более 200 страниц со всевозможными командами, призванными проводить манипуляции с видеоаудио-файлами, которыми, как правило, пользуются продвинутые пользователи.

Мы же предоставили краткий мануал по основным возможностям, и надеемся, что этот материал окажется полезным для наших пользователей!

Всем привет! Сегодня я хочу открыть
серию статей по изучению FFmpeg libav с нуля.

Сразу уточню, что в основном статьи направлены на программирование, используя библиотеки libav*, где в качестве языка выступит С++.

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

Знакомство (небольшая предыстория)

Несколько месяцев назад у меня появилась необходимость познакомиться с основами работы с аудио и видео файлами посредством языка С++ и библиотек libav*. Под libav* я подразумеваю libavformat, libavcodec, libavutil и другие.

За время, посвящённое изучению, я понял, что в интернете довольно мало актуальной информации на данную тему. Мне удалось найти лишь несколько статей, которые более менее раскрывают природу библиотек, но и они уже успели устареть, поэтому я хочу делиться собственным опытом со всеми, кто только ступает на эту тернистую тропу.

Важные основы

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

Введение в FFmpeg

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

Основные преимущества FFmpeg:

  • Открытый исходный код, удобный для ознакомления и модификации;

  • Кроссплатформенность;

  • В большинстве случаев редактирование медиа файлов выполняется без потери качества;

  • Поддержка огромного количества кодеков для различных форматов медиа файлов.

Мы же будем использовать библиотеки FFmpeg (libav*) для разработки на С++, подробнее обо всём можно почитать на официальном сайте (промотайте в самый низ, если вас интересует список библиотек и их предназначение).

Подготовка рабочего окружения (по желанию)

Данный раздел предназначен для каждого, кого интересует простая настройка рабочего окружения на Windows. Я пользуюсь редактором кода Visual Studio Code, менеджером пакетов MSYS2 и компилятором GCC из группы компиляторов mingw-w64.

  1. Скачиваем и устанавливаем менеджер пакетов с официального сайта.

  2. Запускаем MSYS2 и обновляем основные системные пакеты: $ pacman -Syu

  3. Перезапускаем MSYS2 и обновляем остальные пакеты: $ pacman -Su

  4. Устанавливаем mingw-w64 и некоторые вспомогательные пакеты (make, pkgconf):
    $ pacman -S --needed base-devel mingw-w64-x86_64-toolchain

  5. Устанавливаем пакет FFmpeg:
    $ pacman -S mingw-w64-x86_64-ffmpeg

  6. Настраиваем Visual Studio Code. По его настройке довольно много информации на официальном сайте, поэтому покажу лишь основное:

    1. Добавить путь к заголовочным файлам (FFmpeg libav*) в "includePath" .
    2. Добавить путь к компилятору (mingw-w64 gcc) в "compilerPath".

    c_cpp_properties.json

    c_cpp_properties.json

Начало работы с libav*

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

Полный код программы можно найти здесь.

Первым делом необходимо открыть входной файл, путь к которому мы укажем аргументом в командной строке.

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        av_log(NULL, AV_LOG_ERROR, "Usage: <input file>n");
        return ARGUMENTS_ERROR;
    }
    const char* input_file = argv[1];

    return EXIT_SUCCESS;
}

Далее прочитаем файловый заголовок и сохраним информацию о найденных форматах в структуру AVFormatContext . Для удобства все манипуляции будут производиться в отдельной функции.

Подробнее ознакомиться с AVFormatContext и его полями можно на официальном сайте.

Итак, для начала выделим память для нашего format_context , сделать это можно с помощью функции avformat_alloc_context() . Далее посредством функции avformat_open_input() прочитаем заголовок и заполним наш компонент минимальной информацией о формате. Следующим шагом получим информацию обо всех потоках в файле, это делает функция avformat_find_stream_info() .

int open_input_media_file(AVFormatContext** format_context, const char* input_file)
{
    int response;

    *format_context = avformat_alloc_context();
    if(!(*format_context))
    {
        av_log(NULL, AV_LOG_ERROR, "Could not allocate memory for the input format context.n");
        return ALLOCATE_FORMAT_CONTEXT_ERROR;
    }

    response = avformat_open_input(format_context, input_file, NULL, NULL);
    if(response != 0)
    {
        av_log(NULL, AV_LOG_ERROR, "Could not open the input file: %s.n", input_file);
        return OPEN_INPUT_FILE_ERROR;
    }

    response = avformat_find_stream_info(*format_context, NULL);
    if(response < 0)
    {
        av_log(NULL, AV_LOG_ERROR, "Could not find the input stream information.n");
        return FIND_STREAM_INFO_ERROR;
    }

    return EXIT_SUCCESS;
}

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

Подробнее ознакомиться с av_dump_format() и её параметрами можно на официальном сайте.

Осталось инициализировать структуру AVFormatContext и добавить вызов ранее созданной функции open_input_media_file() в main() .

Ну и, конечно же, не стоит забывать про очистку памяти. Для этого мы напишем отдельную функцию clean_memory() и также добавим её вызов в main() .

void clean_memory(AVFormatContext* format_context)
{
    if(format_context != NULL)
    {
        avformat_close_input(&format_context);
        avformat_free_context(format_context);
    }
}
int main(int argc, char* argv[])
{
  	AVFormatContext* format_context = NULL;

    if(argc != 2)
    {
        av_log(NULL, AV_LOG_ERROR, "Usage: <input file>n");
        return ARGUMENTS_ERROR;
    }
    const char* input_file = argv[1];

    int response = open_input_media_file(&format_context, input_file);
    if(response != EXIT_SUCCESS)
    {
      	clean_memory(format_context);
        return response;
    }

    av_dump_format(format_context, 0, input_file, 0);

    clean_memory(format_context);
    return EXIT_SUCCESS;
}

Сборку и запуск программы можно осуществить как с помощью командной строки:
g++ 1.cpp -o out -lavformat -lavutil , так и с использованием Makefile (об этом довольно много информации в интернете).

После запуска программы мы увидим информацию, полученную из нашего медиафайла, обо всех его потоках.

av_dump_format

av_dump_format

Заключение

В рамках данной статьи мы немного познакомились с libav* и написали вводный пример. Далее будем переходить к более реальным вещам, например, декодированию, транскодированию, использованию фильтров и многому другому.

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

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

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

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

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

Установка FFmpeg.

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

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

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

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

или

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

В окне “Переменные среды пользователя” дважды кликните по строке Path, где создайте новую с указанием пути к папке с FFmpegbin содержащую ffmpeg.exe.

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

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

ffmpeg.exe -version

Если в консоли появилось сообщение о версии FFmpeg, значит программа работает! Если появляется сообщение: “ffmpeg.exe” не является внутренней или внешней
командой, исполняемой программой или пакетным файлом
, то стоит перезагрузить компьютер.

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

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

ffmpeg -i input.avi output.mp4

Эта команда сконвертирует видео из файла 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 позволяет обрезать или нарезать видео на фрагменты. Опция -ss задаёт начало обрезки, а опция -t продолжительность фрагмента. Время задаётся в формате “часы:минуты:секунды”.

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

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 – продвинутый конвертер видео и аудио файлов. У него нет графического интерфейса, управляется командами из консоли, зато функционал программы и качество итогового материала превосходят другие конвертеры.

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

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

FFmpeg выручит и там, где не справятся другие программы. Например, при конвертации видео из устаревшего DV в современный HD формат, FFmpeg преобразует чересстрочное (25i) видео в прогрессивное (50p), повысит частоту кадров, увеличит разрешение с 720×576 до 1920×1080 и при этом сохранит оригинальное качество картинки.

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

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

FFmpeg распространяется в исходных кодах, но на официальном сайте есть ссылки на собранные бинарники для MaxOS и Windows.

Как установить FFmpeg в Windows

Скачайте сборку FFmpeg для Windows.

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

В PowerShell выполните следующую команду.

c:"program files"ffmpegbinffmpeg.exe -version

Для cmd немного модифицированная команда.

"C:Program Filesffmpegbinffmpeg.exe" -version

Если в консоли появилось сообщение о версии FFmpeg, значит программа работает.

FFmpeg в PowerShell

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

  • перейдите в параметры Windows, в поиске введите Панель управления
  • перейдите в Панель управления – Система и безопасность – Система;
  • выберите пункт Дополнительные параметры системы;
  • нажмите кнопку Переменные среды;
  • в поле Системные переменные выберите значение Path и нажмите кнопку Изменить, чтобы добавить новое значение;
  • укажите путь к папке с FFmpeg содержащую ffmpeg.exe;
  • перезагрузите компьютер.
Переменная Path

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

ffmpeg

Как установить FFmpeg в MacOS

Самый простой способ установить FFmpeg на MacOS, это Homebrew.

brew install ffmpeg

Либо можно поставить FFmpeg вручную. Для этого, скачайте сборку FFmpeg для MacOS.

Перейдите в папку с загрузками, распакуйте скачанный архив, а затем переместите исполняемый файл ffmpeg в папку /usr/local/bin

sudo cp /путь/до/ffmpeg /usr/local/bin

Далее введите пароль и FFmpeg будет скопирован в директорию к остальным бинарникам.

Попробуйте выполнить следующую команду.

ffmpeg -version

Если в консоли появилось сообщение о версии FFmpeg, значит программа работает.

Как установить FFmpeg в Linux

Для Linux можно самостоятельно собрать FFmpeg из исходников, либо установить его, используя менеджер пакетов входящий в состав операционной системы.

Например, для Ubuntu это можно сделать через репозиторий mc3man ppa, поддерживаемый сообществом Ubuntu.

sudo apt-get install -y software-properties-common
add apt-repository ppa:mc3man/trusty-media
apt-get update
apt-get dist-upgrade
apt-get install ffmpeg

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

apt install ffmpeg

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

yum install epel-release -y
yum update -y

В CentOS 7 и RHEL 7 используйте следующую команду:

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

В CentOS/RHEL 6/5 команда отличается.

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm

Далее установите FFmpeg.

yum install ffmpeg ffmpeg-devel -y

После установки попробуйте выполнить следующую команду.

ffmpeg -version

Если в консоли появилось сообщение о версии FFmpeg, значит программа работает.

FFmpeg: быстрый старт

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

ffmpeg -i input.avi output.mp4

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

В примере выше параметры по умолчанию могут не обеспечить желаемые качество или результат. Поэтому параметры можно задавать явно. Однако не обязательно указывать все, в этом случае FFmpeg возьмет их из исходного файла (например частоту кадров) или значение используемое по умолчанию.

Ниже перечислены основные параметры FFmpeg:

  • -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, 1920×1080), так и буквенные обозначения (например, qcif, qvga);
Обозначение размеров:

sqcif – 128 × 96
qqvga – 60 × 120
uxvga – 1600 × 1200
qcif – 176 × 144
qvga – 320 × 240
qxga – 2048 × 1536
cif – 352 × 288
vga – 640 × 480
sxga – 1280 × 1024
4cif – 704 × 576
svga – 800 × 600
qsxga – 2560 × 2048
16cif – 1408 × 1152
xvga – 1024 × 768
hsxga – 5120 × 4096
  • -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 256K output.mp4

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

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

ffmpeg -i input.mkv -vcodec copy -acodec copy output.mov

или аналогичная (сокращенная запись)

ffmpeg -i input.mkv -c copy output.mov

Это может оказаться полезным, когда устройство, на котором вы хотите воспроизвести видео, не поддерживает исходный формат. Или, например программа видеомонтажа не умеет работать с каким либо форматом и не хочет импортировать его в проект (например Adobe Premiere не работает с mkv, хотя внутри – все тот же H.264). С помощью перепаковки проблема решиться.

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

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

Чтобы получить информацию о видеофайле, передайте FFmpeg название файла без дополнительных опций.

ffmpeg -i video.mp4

Каждый раз при запуске ffmpeg, программа показывает информацию о себе. С помощью опции -hide_banner лишнюю информацию можно скрыть.

ffmpeg -i video.mp4 -hide_banner

Чтобы получить информацию о ключах и параметрах FFmpeg.

ffmpeg -help

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

ffmpeg -formats

Список поддерживаемых кодеков.

ffmpeg -codecs

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

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

Выше уже был пример с перепаковкой файла, когда исходный поток остается не тронутым. Добавив пару опций, можно без пересжатия и потери качества обрезать или нарезать видео на фрагменты. Опция -ss задаёт начало обрезки, а опция -t продолжительность фрагмента. Время задаётся в формате «часы:минуты:секунды».

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

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

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

Файлы mp4 нельзя объединить напрямую с помощью concat, но можно предварительно преобразовать, например, MPEG-TS без перекодирования видео и звука.

ffmpeg -i video1.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts video1.ts
ffmpeg -i video2.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts video2.ts

А уже затем объединить в итоговый файл mp4.

ffmpeg -i "concat:video1.ts|video2.ts" -vcodec copy -acodec copy out.mp4

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

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

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

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

При конвертации видео контейнер выходного файла определяется его расширением (avi, mkv, mp4, mov и тд). По умолчанию кодек для кодирования, определяется автоматически, в зависимости от выбранного контейнера (например H.264 для mp4 и mkv, MPEG-2 для mpg). Однако вы можете изменить его, исходя из своих требований или стандартов.

Для видео популярные и широко поддерживаемые видеокодеки H.264, H.265, VP9, а самые известные аудио кодеки — это AAC и MP3.

Кодек и его параметры задаются опциями -c:v для видео, и -c:a для аудио. Для некоторых форматов (MPEG и DV) вместо указанных, используется опция -target.

Пример конвертации h.264 в h.265 без изменения аудиодорожки.

ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 -c:a copy output.mp4

Пример использования libx265 для видео и aac для аудио.

ffmpeg -i input.avi -c:v libx265 -c:a aac -b:v 15000k -b:a 320k output.mp4 

Пример использования libx264 для видео и aac для аудио.

ffmpeg -i input.avi -c:v libx264 -c:a aac -b:v 15000k -b:a 320k output.mp4

Пример использования vp9 для видео и mp3 для аудио.

ffmpeg -i input.avi -c:v vp9 -c:a libmp3lame -b:v 7000k -b:a 256k output.mp4

Вслед за кодеком указывается битрейт для видео и аудио потоков (опции -b:v и -b:a). Чем выше битрейт, тем выше качество, однако и больше размер файла.

Вместо битрейта можно указать опцию -crf (кофициент качества).

ffmpeg -i input.avi -c:v libx264 -preset medium -c:a aac -crf 15 output.mp4

Изменяется в пределах от 0 до 51. Чем ниже значение -crf, тем выше качество будет у выходного файла, однако, как и в случае с высоким битрейтом, увеличится его размер. При значениях 14-17 результат визуально почти неотличим от оригинала. Значение -crf равное 0, будет означать кодирование без потери качества.

У каждого кодека могут быть свои специфические параметры. Например, у H.264 и H.265 часто используется опция -preset влияющая на соотношение скорость кодирования/качество. Значения -preset могут быть: ultrafast, superfast, veryfast, faster, fast, medium (по умолчанию), slow, slower, veryslow. Для чернового варианта можно использовать «быстрые настройки» из категории fast, а для продакшена рекомендуется не ниже slow.

Для VP9 кодирование без потери качества задается опцией -lossless 1.

ffmpeg -i input.mp4 -c:v vp9 -lossless 1 output.webm

Подробнее с настройками кодеков H.264, H.265 и VP9 и можно ознакомится в документации.

Аппаратное ускорение

Владельцы видеокарт NVIDIA могут повысить скорость кодирования в H.264 за счет ресурсов GPU. Для этого попробуйте использовать кодек h264_nvenc.

ffmpeg -i input.mp4 -c:v h264_nvenc -c:a copy output.mp4

Сборка FFMpeg должна поддерживать кодек h264_nvenc и быть совместима с драйвером видеокарты.

Двухпроходное кодирование

При двухпроходном кодировании, на первом проходе кодек анализирует видео и пишет log-файл, а на втором сжимает видеозапись, используя полученную на первом проходе информацию. На простые (статические) сцены выделяется минимальное количество битрейта, а на сложные (динамические) — максимальное. Такой подход дает оптимальное распределение битрейта и соответственно лучшее качество картинки в сравнении с однопроходным кодированием.

Чтобы выполнить первый проход используйте следующую команду (с опцией -pass 1).

ffmpeg -y -i input.avi -c:v libx264 -b:v 17000K -pass 1 -f mp4 /dev/null

На первом проходе файл не создается, поэтому вместо него указанно /dev/null (или NULL если работаете в Windows).

На втором проходе (-pass 2), пример команды будет иметь следующий вид.

 ffmpeg -y -i input.avi -c:v libx264 -b:v 17000K -pass 2 -f mp4 -c:a aac -b:a 256K output.mp4

Двухпроходное кодирование удобно выполнять, используя скрипт. Примеры скриптов приведены в конце заметки, в разделе Пакетная обработка FFmpeg.

Конвертация для MPEG-совместимых устройств

Для устройств, работающих с форматом MPEG, параметры выходного файла рекомендуется задавать опцией -target. Значения могут быть следующими: vcd, svcd, pal-vcd, ntsc-svcd и должны иметь префикс pal-, ntsc- или film-. В этом случае битрейт, кодек и размер кадра будут подобраны автоматически в соответствии с указанным стандартом. При необходимости можно указать соотношение сторон экрана (опция -aspect), как правило 16:9 или 4:3.

Пример для DVD плееров.

ffmpeg -i input.avi -target pal-dvd -ps 2000000000 -aspect 16:9 output.mpeg

Опция -ps 2000000000 задает здесь максимальный размер конечного файла.

Пример для VCD (pal и ntsc).

ffmpeg -i input.avi -target pal-vcd output.mpg
ffmpeg -i input.avi -target ntsc-vcd output.mpg

Пример для SVCD (pal и ntsc).

ffmpeg -i input.avi -target pal-svcd output.mpg
ffmpeg -i input.avi -target ntsc-svcd output.mpg

Конвертация AVI в DV

Как и в случае с форматом MPEG, параметры для DV файла рекомендуется задавать опцией -target. Значения могут быть следующими: dv, dv50 и должны иметь префикс pal-, ntsc- или film-. В этом случае битрейт, кодек и размер кадра будут подобраны автоматически в соответствии со стандартом.

ffmpeg -i input.avi -target pal-dv output.dv

Однако параметры можно указать и явно.

ffmpeg -i input.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 output.dv

Конвертация в MJPEG

Если при монтаже привыкли использовать формат MJPEG, то следующая команда преобразует в него исходное видео. Опция -qscale 1 означает, что видео будет закодировано с максимальным качеством.

ffmpeg -i input.mp4 -vcodec mjpeg -qscale 1 -an output.avi

Конвертация AVI в DivX

Пример для некогда популярного формата DivX (mpeg4v2). Может пригодиться владельцам старых устройств.

ffmpeg -i input.avi -s 320x240 -vcodec msmpeg4v2 output.avi

Конвертация видео в формат PSP

ffmpeg -i input.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac output.mp4

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

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

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

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

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

Преобразовать 4K в 1080:

ffmpeg -i input4kvid.mp4 -vf scale=1920:1080 -c:a copy output1080vid.mp4

Для кадрирования изображения предназначен фильтр 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).

Но мне привычна, другая запись.

ffmpeg -i input.mp4 -vf crop=in_w-2*2:in_h-2*4 output.mp4

В данном примере видео будет обрезано на 4 пикселя сверху и снизу, а так же на 2 пикселя слева и справа.

Фильтры можно комбинировать.

ffmpeg -i input.mp4 -vf crop=in_w-2*2:in_h-2*4,scale=1280:720 output.mp4

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

Соотношение сторон устанавливаются опцией -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

Деинтерлейсинг

Для деинтерлейсинга в FFmpeg есть фильтр yadif (yet another deinterlacing filter).

ffmpeg -i input.mp4 -vf yadif output.mp4

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

Преобразование 25i в 50p

Чтобы не терять кадры при деинтерлейсинге и чересстрочное видео осталось таким же плавным как в оригинале, рекомендуется способ, при котором частота кадров удваивается, а недостающие строки в каждом поле восстанавливаются при помощи интерполяции. Видео 25i фактически будет преобразовано в 50p (30i в 60p соответственно).

Для преобразования используется уже знакомый фильтр yadif.

ffmpeg -i input.avi -vf yadif=1:-1:0 -r 50 output.mp4

Параметры 1:-1:0 переданные yadif выполнят деинтерлейсинг по методу описанному выше.

Полностью команда для преобразования чересстрочного широкоэкранного DV видео 25i в прогрессивное HD 50p будет выглядеть следующим образом.

ffmpeg -i input.dv -c:v libx264 -preset slow -b:v 20000K -aspect 16:9 -vf yadif=1:-1:0,crop=in_w-2*0:in_h-2*4,scale=1920:1080 -r 50 -c:a aac -b:a 256K output.mp4

Небольшое пояснение: crop я здесь использую, потому что во многих моих исходниках на DV видео есть артефакт в виде полоски внизу, от которой я избавляюсь, обрезая видео на 4 пикселя снизу и сверху.

Потоки

Для обращения к потокам (видео, аудио, субтитрам) используется опция -map.

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

ffmpeg -i video.mp4

Среди прочей информации о файле будет выдано примерно следующее:

Stream #0:0(und): Video …
Stream #0:1(ger): Audio …
Stream #0:2(eng): Audio …
Stream #0:3(rus): Subtitle …

Потоки обозначаются двойным номером, через двоеточие — 0:0, 0:1, 1:0, 2:1 и т.д. Цифра до двоеточия — номер по порядку каждого выходного файла, нумерация ведется с нуля. А номер после двоеточия обозначает номер потока внутри файла.

В примере выше, 0 перед двоеточием означает, что это первый по порядку файл — video.mp4. А номера после двоеточия означают номера внутренних потоков этого файла. 0:0 — видео дорожка, 0:1 — первая аудиодорожка на немецком языке, 0:2 — вторая аудиодорожка на английском языке, 0:3 — дорожка с русскими субтитрами.

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

Если аудиодорожка одна, изменить ее формат (битрейт/качество аудио по желанию), без перекодирования видео можно следующей командой:

ffmpeg -i input.mkv -c:v copy -c:a ac3 -b:a 320k output.mkv

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

ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v:0 copy -c:a:0 copy -c:a:1 copy -c:a:2 ac3 -b:a 320k output.mkv

Пояснение: в примере -map 0:0 это видеодорожка, к ней будет применена опция -c:v:0 copy, что означает, что видео не будет перекодироваться. -map 0:1 -map 0:2 -map 0:3 это 3 аудиодорожки. К первым двум будут применены -c:a:0 copy -c:a:1 copy, что означает, что дорожки останутся в оригинальном формате. А к 3 дорожке будет применена опция -c:a:2 ac3 -b:a 320k, что означает, что она будет сконвертирована в формат AC3 с битрейтом 320k.

Если какие-то дорожки не нужны, просто не указывайте к ним обращение. Например, чтобы убрать аужиодорожки с 4 по 6 из 7 доступных, воспользуйтесь примером ниже.

ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:7 -c:v:0 copy -c:a:0 ac3 -c:a:1 ac3 -b:a 320k -c:a:2 ac3 -b:a 320k -c:a:3 ac3 -b:a 320k -c:a:7 ac3 -b:a 320k output.mkv

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

Чтобы добавить звуковую дорожку в видеофайл используйте опцию -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). В новых версиях FFmpeg эти две опции можно не указывать, FFmpeg разберется сам.

Если звуковых дорожек несколько, чтобы сохранить отдельную звуковую дорожку из видеофайла (демультиплексация) воспользуйтесь опцией -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 -i video.avi -i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2 output.mkv

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

Для изменения громкости в 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 -i input.wav -ar 44100 -ac 2 -ab 192K -f mp3 output.mp3

Изменение скорости воспроизведения

Скорость воспроизведения видео и аудио изменяется раздельно.

Чтобы увеличить или уменьшить скорость видео, используется видеофильтр «setpts».

ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

Команда выше удвоит скорость видео.

Не очевидно, но чтобы замедлить видео, нужно использовать множитель больше 1. Команда ниже замедлит исходное видео в 4 раза.

ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4

Чтобы увеличить или уменьшить скорость аудио, используется аудиофильтр «atempo». Следующая команда удвоит скорость звука.

ffmpeg -i input.mp4 -af "atempo=2.0" -vn output.mp4

Допустимы значения от 0.5 до 2.0.

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

ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" output.mp4

Добавление субтитров

Ниже приведен пример добавления субтитров для файла формата MKV.

ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s copy output.mkv

В примере, к исходному видеофайлу video.mp4 будут добавлены субтитры из файла subtitles.srt. Опция -c copy означает, что видео и аудио потоки из video.mp4 будут скопированы как есть (без пересжатия), опция -c:s copy, означает, что титры будут вставлены без изменений.

Если нужно вставить несколько дорожек субтитров команда может выглядеть так.

ffmpeg -i input.mp4 -i ru_subtitles.srt -i en_subtitles.srt -map 0:0 -map 1:0 -map 2:0 -c:v copy -c:a copy -c:s copy output.mkv

Формат MKV, может использовать субтитры форматов srt, subrip, ssa или ass, за исключением mov_text.

ffmpeg -i input.mp4 -i subtitles.ass -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy -c:s copy output.mkv

В свою очередь MP4 поддерживает только один формат субтитров — mov_text. Прочие форматы можно использовать в качестве исходных, но обязательно укажите кодек для субтитров, чтобы на выходе сконвертировать их в mov_text (-c:s mov_text).

ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4

Пример для нескольких потоков субтитров.

ffmpeg -i input.mp4 -i ru_subtitles.srt -i en_subtitles.srt -map 0:0 -map 1:0 -map 2:0 -c copy -c:s mov_text output.mp4

FFmpeg умеет конвертировать субтитры из одного формата в другой.

ffmpeg -i subtitles.srt subtitles.ass

Чтобы извлечь субтитры из видеофайла можно использовать следующую команду.

ffmpeg -i input.avi -txt_format text output.srt

А если необходимо удалить субтитры используйте опцию -sn.

ffmpeg -i input.mkv -c copy -sn output.mkv

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

Следующая команда разобьет видео на кадры с именами image1.jpg, image2.jpg, image3.jpg и т.д.

ffmpeg -i video.mp4 image%d.jpg

В некоторых случаях, рекомендуют явно указывать выходной формат, опция -f image2 для изображений. В качестве конечного формата можно использовать jpg, jpeg, png и другие.

ffmpeg -i video.mp4 -f image2 image%d.jpg

После выполнения в конечной папке окажется огромное количество файлов изображений. Чтобы уменьшить их можно, понизить частоту кадров (опция -r).

ffmpeg -i video.mp4 -r 1 image%d.png

Собрать видео из изображений

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

ffmpeg -r 12 -f image2 -i image%d.jpg output.mpg

Создание превью

Следующая команда создаст графический файл в формате JPEG, взяв один кадр на 30 секунде.

ffmpeg -i video.mp4 -an -ss 30 -vframes 1 -s 340x180 -y -f mjpeg screenshot.jpg

А ниже приведен пример создания анимированного превью в формате GIF.

ffmpeg -i input.avi -an -pix_fmt rgb24 -ss 30 -vframes 64 -s 340x180 -loop_output 0 -f gif screenshot.gif

Опция -loop_output задает количество повторов, по умолчанию равен 1. Если указать 0, то анимация будет бесконечной.

Конвертировать FLV в видео (и наоборот)

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

ffmpeg -i video.flv video.mpg

Конвертацию можно выполнить и в обратную сторону.

ffmpeg -i video.mpg video.flv

Параметры можно указать явно.

ffmpeg -i video.mpg -ab 26k -f flv video.flv

Или более конкретно.

ffmpeg -i video.mpg -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video.flv

Преобразовать видео в GIF

Чтобы сконвертировать видео в гифку (без сжатия).

ffmpeg -i input.avi output.gif

Флеш-ролики тоже можно конвертировать.

ffmpeg -i input.flv output.gif

Оптимизация для WEB

Для потоковой передачи видео, может оказаться полезным перенести moov-атомы в начало файла. Это позволит при передачи по сети декодировать видео частями, и начать показ ролика, не заставляя пользователя ждать, пока он скачается целиком.

ffmpeg -i input.avi -c:v libx264 -c:a aac -movflags +faststart output.mp4

Пакетная обработка FFmpeg

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

Написание скриптов, тема для отдельной статьи, здесь же приведу примеры для Windows и MacOS, с помощью которых за раз можно сконвертировать всю папку с файлами.

Примеры скриптов FFmpeg для Windows

Создайте текстовый файл, с расширением .bat, поместите в него содержимое указанное ниже и скорректируйте по своему усмотрению.

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

@Echo off
Pushd "C:folder"
for %%f in (*.avi) do (
  ffmpeg -y -i "%%~f" -c:v libx264 -b:v 17000K -pass 1 -f mp4 NULL
  ffmpeg -y -i "%%~f" -c:v libx264 -b:v 17000K -pass 2 -f mp4 -c:a aac -b:a 256K "%%~nf.mp4"
)
PopD
Pause

Скрипт из примера возьмет все файлы из папки ( C:folder ) с расширением .avi и сконвертирует их (используя двухпроходное кодирование) в формат mp4, расширение выходных файлов так же будет mp4. Выходные файлы будут помещены в ту же папку, что и исходные.

Ниже приведен аналогичный пример для конвертации аудио. Cкрипт конвертирует файлы с расширением .wav в .mp3.

@Echo off
Pushd "C:folder"
for %%f in (*.wav) do (
	ffmpeg -y -i "%%~f" -ar 44100 -ac 2 -ab 320K -f mp3 "%%~nf.mp3"
)
PopD
Pause

Примеры скриптов FFmpeg для MacOS

Создайте текстовый файл, с расширением .sh, поместите в него содержимое указанное ниже и скорректируйте по своему усмотрению.

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

#!/bin/bash

input=avi
output=mp4
format=mp4
cd ~/Desktop/folder/

for i in *."$input";
do
   ffmpeg -y -i "$i" -c:v libx264 -b:v 17000K -pass 1 -f $format /dev/null;
   ffmpeg -y -i "$i" -c:v libx264 -b:v 17000K -pass 2 -f $format -c:a aac -b:a 256K "${i%.*}.$output";
done

Не забудьте сделать скрипт исполняемым.

chmod 755 YourScript.sh

Скрипт из примера возьмет все файлы из папки ( ~/Desktop/folder/ ) с расширением .avi и сконвертирует их (используя двухпроходное кодирование) в формат mp4, расширение выходных файлов так же будет mp4. Выходные файлы будут помещены в ту же папку, что и исходные.

Ниже приведен аналогичный пример для конвертации аудио. Cкрипт конвертирует файлы с расширением .wav в .mp3.

#!/bin/bash

input=wav
output=mp3
format=mp3
cd ~/Desktop/folder/

for i in *."$input";
do
   ffmpeg -y -i "$i" -ar 44100 -ac 2 -ab 320K -f $format "${i%.*}.$output";
done

Полезные ссылки

Официальный сайт FFmpeg
Документация FFmpeg
Документация по командам FFmpeg
Документация по фильтрам

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.

В 2000 году программист с ником Gerard Lantau выложил для всеобщего использования исходники проекта FFmpeg. За годы концепция осталась прежней:

  • Деление на программы FFmpeg для кодирования видео и FFserver для организации потокового вещания.
  • Максимально быстрое кодирование звука и видео.

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

FFmpeg прочно стоит на ногах — почти каждый день вносятся правки в исходный код. Добавляются новые компоненты. Например, плеер FFplay и утилита для получения информации FFprobe.

Где скачать FFmpeg и FFserver

FFmpeg разрабатывается под Linux. Если на сайте видите окошко с трансляцией видео — 9 шансов из 10, что оно работает благодаря FFmpeg и FFserver.

Версия FFmpeg (и FFserver) для Windows тоже существует, но часть функциональности будет недоступна. Впрочем, это не мешает работать видеоконвертеру MediaCoder (www.mediacoderhq.com) и плееру PotPlayer.

Версии для Linux найдете на ffmpeg.org, я же расскажу про FFmpeg для Windows. Она делится на две части: FFmpeg и FFserver.

FFmpeg для Windows вы найдете здесь: https://www.gyan.dev/ffmpeg/builds/

На выбор есть 32- и 64-битные версии. Рекомендую 64-битную (ffmpeg-release-full.7z).

Если нужно организовать видеотрансляцию с, например, IP-видеокамеры, желательна 32-битная версия FFmpeg, с 64-битной я заметил проблемы — программа закрывалась сама по себе. Возможно, потому что FFserver для Windows — 32-битный, есть несовместимость.

FFserver для Windows тоже существует, хотя об этом мало кто знает. Программу трудно скомпилировать, потому что используется много специфичного для Linux кода. Разработчики системы видеонаблюдения Xeoma оказались молодцы, потому что выложили свой FFserver для Windows на своем сайте: http://felenasoft.com/xeoma/ru/ffserver/ Не забудьте скачать cygwin1.dll оттуда же. Другой вариант запустить данную софтину — через WSL в Windows 10/11, тогда можно пользоваться самой актуальной версией для Linux.

Про FFserver в Интернете много инструкций. Например, эта: https://trac.ffmpeg.org/wiki/StreamingGuide.Они написаны на примере Linux-версии, но это не существенно, за исключением пары моментов:

  1. Файл ffserver.conf должен лежать не в папке /etc, а в одной папке с ffserver.exe, cygwin1.dll и ffmpeg.exe.
  2. Адреса устройств в Windows другие, придётся самостоятельно с этим разбираться.

Если что, я не специалист в стриминге и ФФсервер упоминаю только потому, что это часть ФФмпега.

[ig_notice style=»notice»]Обновление: ffserver устарел. Используйте альтернативы. Их список вы найдете здесь: github.com/krzemienski/awesome-video#streaming-server-and-storage[/ig_notice]

Как установить FFmpeg

1. Скачайте по ссылке выше Static-версию. Это архив, для распаковки потребуется программа 7-zip (7-zip.org).

2. Создайте на диске C: папку ffmpeg и распакуйте туда архив.

Для установки ffmpeg этого достаточно. Советую выполнить пункт 4 для удобства в будущем.

3. Если нужно настроить трансляцию, в папку c:ffmpegbin распакуйте ffserver и положите файлик cygwin1.dll.

4. Чтобы в командах не писать каждый раз полный путь к программе, можно добавить его в переменную PATH: Панель управления — Система — Дополнительные параметры системы — вкладка Дополнительно — Переменные среды — в конце строки переменной Path добавьте «;c:ffmpegbin» без кавычек. Если там было пусто (что не совсем нормально), то «c:ffmpegbin«, т.е. без точки с запятой в начале.

Потом перезагрузите компьютер, чтобы изменения вступили в силу.

Вы можете пропустить четвертый шаг, но потом вместо команд ffmpeg и ffserver придется писать полный путь «c:ffmpegbinffmpeg.exe» и «c:ffmpegbinffserver.exe».

Как пользоваться FFmpeg

На главной странице FFmpeg красуется надпись:

Converting video and audio has never been so easy (Перевод: Никогда конвертирование видео и звука не было таким простым)

Converting video and audio has never been so easy (Перевод: Никогда конвертирование видео и звука не было таким простым)

Человек, не знакомый с командной строкой, будет в ступоре. Куда вводить команду?

FFmpeg хорош для тонких задач, но, если не хотите заморачиваться, воспользуйтесь бесплатной XMedia Recode или платной Movavi Video Converter. .

В папке ffmpegdoc собрано много примеров по использованию компонентов, все команды можно посмотреть там.

Примеры

Имена файлов у вас будут свои. Если есть пробелы или на русском — обрамляйте имена в кавычки.

Отобразить информацию о файле:

ffmpeg -i video.mp4

или ffprobe video.mp4

Пережать видео avi в mp4:

ffmpeg -i video.avi video.mp4

Пережать mov в flv и изменить разрешение:

ffmpeg -i video.mov -s 640x360 -b 1700k -vcodec flv -ar 44100 video.flv

Пережать видео в webm среднего качества, звук формата OGG:

ffmpeg -i video.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis video.webm

Пережать видео кодеком MPEG4, звук — mp3, контейнер — avi:

ffmpeg -i video.mp4 -vcodec mpeg4 -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 100 -qscale 3 -acodec libmp3lame -ac 2 -ab 128k -y video.avi

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

ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 zvyk.mp3

Добавить звуковую дорожку к видео («-acodec libmp3lame» можно выкинуть, тогда ffmpeg сам решит, как кодировать звук):

ffmpeg -i zvyk.mp3 -i video.mp4 -acodec libmp3lame video_final.mp4

Добавить звуковую дорожку без перекодирования видео (сохраняет качество, работает быстро):

ffmpeg -i zvyk.mp3 -i video.mp4 -acodec libmp3lame -vcodec copy video_final.mp4

Пережать видео в формат

Сохранить кадр на второй секунде как отдельную картинку:

ffmpeg -ss 00:00:02 -i video.mp4 -f image2 -vframes 1 thumb.jpg

Убрать дрожание камеры и сохранить в out.mp4:

ffmpeg -i video.mp4 -vf deshake out.mp4

Структура

Как видно из примеров, команды ffmpeg имеют структуру:

ffmpeg -опции -еще_опции -можно_опции_с_параметрами_например 1 -i "имя файла.расширение" -опции_кодирования -еще опции +опции_кодека "имя_результирующего_файла.расширение"

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

Команды

Информационные (чтобы узнать возможности установленной версии)

-L
Показать текст лицензии.

-h, -?, -help, —help
Список доступных команд.

-version
Узнать версию ffmpeg.

-formats
Показать список доступных форматов контейнеров (не кодеков!).

В Windows не хватит строк в командной строке для показа всего списка, для исправления откройте свойства окна и на вкладке «Расположение» поставьте высоту буфера экрана в 500. В списке буквы D и E означают поддержку декодирования и кодирования.

-codecs
Список доступных кодеков. Кроме интуитивно понятных D и E (Decoder для «чтения» и Encoder для кодирования), видны следующие обозначения:
V — кодек для видео, A — для звуковых дорожек, S — субтитров, I — только для кодирования I-фреймов, L — кодек сжимает с потерями данных (большинство), S — без потери данных (сохраняет качество, сжимает слабо).

-bsfs
Показать поддерживаемые bitstream filters (фильтр потока данных), которые нужны в ряде случаев для правильной обработки потока данных.
-protocols
Показать доступные протоколы. Из выдаваемого списка понятно, что в качестве входных данных может использоваться RTMP поток (видеотрансляция) и многое другое, не только файлы. Как выходные — тоже.
-filters
Доступные фильтры видео и аудио. В FFmpeg их громадное количество. Кроме банальных поворота и настроек яркости, в FFmpeg есть расширение стереобазы, генерирование фракталов и прочее, прочее. Подробные инструкции — в doc/ffmpeg-filters.html.

-pix_fmts
Доступные цветовые форматы. FFmpeg понимает громадное количество цветовых пространств. Полезно для тех, у кого оборудование выдает странные цвета.

Основные опции

-loglevel значение или -v значение

Уровень логгирования. От минимума — quiet до максимально подробного debug. Полный список: quiet, panic, fatal, error, warning, info, verbose, debug. Полезно, если в процессе кодирования видео происходят ошибки и нужно узнать подробности.

-f значение (mp4, avi, mkv, gif и т.д.)

Указать определенный формат (контейнер) файла. Обычно FFmpeg выбирает по расширению выходного файла, но можно переназначить.

-i путь_до_файла

Команда для указания входящего файла или потока (например, rtmp://адрес для захвата потокового видео).

-y
Перезаписывать уже существующий выходной файл без запроса.

-ss время

Указывает, с какого времени нужно кодировать видео/аудио. Формат в виде «чч:мм:сс». Подробнее: https://trac.ffmpeg.org/wiki/Seeking

-t время

Указать, до какого времени нужно кодировать видео/аудио. Вместе с предыдущей командой удобно использовать для вырезания отрезка видео.

-fs размер
Лимит выходного файла. Например, при -fs 10M кодирование останавливается, как только выходной файл станет 10 Мб размером. Поддерживаются K, M, G (килобайты, мегабайты и гигабайты).

Опции кодирования видео

-b значение
Устанавливает битрейт видео. Выше битрейт — лучше качество и больше размер файла. Указывайте в конце цифры K или M, чтобы программа понимала, в килобитах/сек или мегабитах/сек значение.

-vframes значение

Количество кадров, которые нужно кодировать.

-r значение
Указание частоты кадров.

-s размер

Указание, в каком разрешении кодировать видео. Например, 1920×1080 для FullHD видео на выходе. FFmpeg понимает буквенные сокращения (vga, hd480, hd720, hd1080 и другие).

-aspect соотношение_сторон

Указать соотношение сторон видео (4:3, 16:9 or 1.3333, 1.7777 и т.д.). Как известно профессионалам, в видео пиксели могут быть прямоугольными.

-croptop значение, -cropbottom значение, -cropleft значение, -cropright значение

Обрезка количества пикселей видео сверху, снизу, слева или справа.

-padtop значение, -padbottom значение, -padleft значение, -padright значение 

Добавление границы видео сверху, снизу, слева или справа.

-padcolor hex_color

Цвет границы в шестнадцатеричном формате (#000000 — черный, #FF0000 — красный и т.д.).

-vn
Не кодировать видео.

-bt значение

Значение задает максимальное отклонение от указанного битрейта. Может не работать, в зависимости от кодека.

-maxrate битрейт

Указывает максимальное значение битрейта. Требует указания размера буфера через -bufsize.

-minrate битрейт

Минимальный битрейт у видео. Часто используется для принудительного задания определенного битрейта:

ffmpeg -i video.avi -b 4000K -minrate 4000K -maxrate 4000K -bufsize 1835k video-out.mp4

-bufsize размер

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

-vcodec кодек

Выбор кодека (см. команду -codecs для списка кодеков). Можно указать copy, тогда FFmpeg будет копировать видеопоток без перекодирования.

-sameq

Сохранять качество исходной картинки/звука. Это не то же самое, что -vcodec copy. Сохраняется качество видео, кодек может быть любым, видеодорожка перекодируется.

-pass n

Для многопроходного кодирования видео. Указывает, какой делать проход (1 или 2). Префикс имени файла со статистикой указывается командой -passlogfile значение.

Можно отключить обработку звука при первом проходе, чтобы экономить время и ресурсы:
ffmpeg -i video.mp4 -vcodec libxvid -pass 1 -an -f rawvideo -y NUL

Опции звука

-aframes количество

Сколько фреймов звука (да, у звука есть кадры!) нужно кодировать.

-ar частота

Указание частоты звука (по умолчанию 44100 Гц).

-ab битрейт

Битрейт (по умолчанию = 64K).

-aq значение

Указание качества (зависит от кодека, применяется при переменном битрейте).

-ac число

Количество аудиоканалов (по умолчанию 1).

-an

Не кодировать звук.

-acodec кодек

Указание кодека для звука. Значение copy позволяет копировать звуковую дорожку без перекодирования

-newaudio

Добавление еще одной звуковой дорожки. Ее параметры указываются до команды -newaudio:

ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio

Субтитры

-scodec кодек

Кодек для субтитров (copy — для прямого копирования).

-newsubtitle

Добавление еще одних субтитров.

-slang код

Указание языка субтитров в стандарте ISO 639 (3 буквы).

-sn

Отключение субтитров.

Другие команды

-threads количество

Количество потоков для кодирования видео. Опцию следует применять только на многоядерных ПК и то с оглядкой, читая документацию к выбранному кодеку.

-vsync значение

Синхронизация кадров. Значения:

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

1 — кадры будут дублироваться или удаляться, чтобы сохранить требуемую частоту кадров.

2 — кадры будут пропускаться или удаляться, чтобы сохранить требуемую частоту кадров.

-1 — значение по умолчанию. FFmpeg выбирает сам между методами 1 и 2.

С помощью команды -map можно указать, что к чему будет подстраиваться. Подробности: https://trac.ffmpeg.org/wiki/Map

-async кадры_в_секунду

Выбор метода синхронизации звука. Чтобы звук и видео совпадали по времени, аудиодорожка может растягиваться и сжиматься. Значение 1 скорректирует звуковую дорожку только в самом начале по принципу «дальше будь что будет».

-copyts

Применяется для принудительного копирования всех временных меток из исходного файла. Полезно в случае, если начало видео — не 00:00, а что-то другое и это нужно сохранить.

-shortest

Когда самый короткий входящий файл закончился, прекращение кодирования.

Еще команд?

Команды для FFmpeg смотрите здесь:

http://help.ubuntu.ru/wiki/ffmpeg (на русском).

https://ffmpeg.org/ffmpeg.html (официальная документация).

Для кодирования кодеком x264 гляньте это:

http://wiki.rosalab.ru/ru/index.php/FFmpeg (на русском, есть примеры).

Почему команд так много?

Они нужны для полного контроля процесса обработки файлов с видео и звуком.

Большинство пользователей конвертируют видео, не понимая, что важен не только кодек для сжатия, но и его параметры. Есть нюансы, которые непросто осознать начинающим пользователям. Например, файл с расширением «mp4» не обязательно содержит в себе видео с кодеком MPEG4.

Если есть какие-то вопросы по FFmpeg — спрашивайте в комментариях. Помогу, чем смогу.

FFmpeg is a popular software for processing, converting, or manipulating video and audio files. The program is used for endless things like rotating videos, scaling videos, extracting information about videos, and many others. It is an open-source program that is simply awesome for video scaling, format transcoding, decoding, encoding, demuxing, streaming, filtering, converting audio files, recording live audio/video, handling video and other multimedia files. This multimedia framework is designed for command-line-based processing of multimedia files, and you can make basic edits with single-line commands.

While the program is simple to use, accessing FFmpeg to execute commands is a little confusing. Installing and using FFmpeg can take a lot of time as you need to manually open the FFmpeg folder within the command prompt or Power Shell terminal to access the FFmpeg executive file to execute relevant commands for basic editing. If you are stuck with installing and using FFmpeg on your machine, you are in the right place.

To make things simple, all you have to do is install FFmpeg and add the FFmpeg program to the Windows path using Environment variables. This way you can directly access FFmpeg from a Command prompt or Power Shell in any directory. In this article, we explain how to install FFmpeg on Windows in order to access FFmpeg directly from Command Prompt or PowerShell

Get the latest FFmpeg build from the official website here. You can either download the 32-bit version or the 64-bit version that suits your system. Click the Download Build button to start downloading.

The program doesn’t work directly on Windows 10. You need to add a program to the system path using Environment Variables.

So navigate to the downloaded folder where the FFmpeg zip file is a store. Right-click on the Zip folder and click extract from the drop-down menu.

Select the folder or drive where you want to extract.

Next, rename the extracted folder. To rename the folder, right-click on a folder and click Rename from the drop-down menu with title FFmpeg-20180424-d9706f7-win64-static to FFmpeg.

Copy the FFmpeg folder and navigate to C drive. Paste the folder to the root of C drive.

Once done, the next step is to enable FFmpeg using Command Prompt.

Add FFmpeg to Windows path using Environment variables

To use FFmpeg in Command Prompt, you need first to add the bin folder containing the FFmpeg executable file to your Windows  path

In the Windows search menu, type Edit the system environment variables and click Enter. This will open the system properties window.

Navigate to Advanced button and click Environment Variables at the bottom of the window.

In the Environment Variables window, Select the variable Path and click Edit to change the Path variable.

Click New and type the path of FFmpeg folder “C:ffmpegbin” and click OK.

Type the path directory according to the drive or folder where you have placed  FFmpeg folder.

Once done, the path gets added to the Environment variables. Click OK to apply changes.

Verify FFmpeg path in Command Prompt

Launch Command Prompt and type the command FFmpeg in the command prompt terminal and hit Enter.

If the FFmpeg is added properly to Windows Path, the command prompt will display the details about FFmpeg like its version number, configuration, etc.

How to install FFmpeg on Windows 10

If you weren’t successful, it only means that your command prompt did not recognize the commands. Cross-check to see if you have added the FFmpeg folder to the system path properly.

Read: Fix Audacity FFmpeg error on Windows PC.

That’s all!

FFmpeg is a popular software for processing, converting, or manipulating video and audio files. The program is used for endless things like rotating videos, scaling videos, extracting information about videos, and many others. It is an open-source program that is simply awesome for video scaling, format transcoding, decoding, encoding, demuxing, streaming, filtering, converting audio files, recording live audio/video, handling video and other multimedia files. This multimedia framework is designed for command-line-based processing of multimedia files, and you can make basic edits with single-line commands.

While the program is simple to use, accessing FFmpeg to execute commands is a little confusing. Installing and using FFmpeg can take a lot of time as you need to manually open the FFmpeg folder within the command prompt or Power Shell terminal to access the FFmpeg executive file to execute relevant commands for basic editing. If you are stuck with installing and using FFmpeg on your machine, you are in the right place.

To make things simple, all you have to do is install FFmpeg and add the FFmpeg program to the Windows path using Environment variables. This way you can directly access FFmpeg from a Command prompt or Power Shell in any directory. In this article, we explain how to install FFmpeg on Windows in order to access FFmpeg directly from Command Prompt or PowerShell

Get the latest FFmpeg build from the official website here. You can either download the 32-bit version or the 64-bit version that suits your system. Click the Download Build button to start downloading.

The program doesn’t work directly on Windows 10. You need to add a program to the system path using Environment Variables.

So navigate to the downloaded folder where the FFmpeg zip file is a store. Right-click on the Zip folder and click extract from the drop-down menu.

Select the folder or drive where you want to extract.

Next, rename the extracted folder. To rename the folder, right-click on a folder and click Rename from the drop-down menu with title FFmpeg-20180424-d9706f7-win64-static to FFmpeg.

Copy the FFmpeg folder and navigate to C drive. Paste the folder to the root of C drive.

Once done, the next step is to enable FFmpeg using Command Prompt.

Add FFmpeg to Windows path using Environment variables

To use FFmpeg in Command Prompt, you need first to add the bin folder containing the FFmpeg executable file to your Windows  path

In the Windows search menu, type Edit the system environment variables and click Enter. This will open the system properties window.

Navigate to Advanced button and click Environment Variables at the bottom of the window.

In the Environment Variables window, Select the variable Path and click Edit to change the Path variable.

Click New and type the path of FFmpeg folder “C:ffmpegbin” and click OK.

Type the path directory according to the drive or folder where you have placed  FFmpeg folder.

Once done, the path gets added to the Environment variables. Click OK to apply changes.

Verify FFmpeg path in Command Prompt

Launch Command Prompt and type the command FFmpeg in the command prompt terminal and hit Enter.

If the FFmpeg is added properly to Windows Path, the command prompt will display the details about FFmpeg like its version number, configuration, etc.

How to install FFmpeg on Windows 10

If you weren’t successful, it only means that your command prompt did not recognize the commands. Cross-check to see if you have added the FFmpeg folder to the system path properly.

Read: Fix Audacity FFmpeg error on Windows PC.

That’s all!


Загрузить PDF


Загрузить PDF

Из этой статьи вы узнаете, как использовать программу FFmpeg, чтобы конвертировать видео и аудио файлы в командной строке (Windows) или в терминале (Mac).

  1. Изображение с названием Use FFmpeg Step 1

    1

  2. Изображение с названием Use FFmpeg Step 2

    2

    Найдите видео или аудио файл, который хотите конвертировать. С помощью FFmpeg видеоролики и песни можно преобразовать в разные форматы (то есть песню можно преобразовать в аудиофайл другого формата, а видеоролик — в видеофайл другого формата).

    • Также видеофайлы можно конвертировать в аудиофайлы.
  3. Изображение с названием Use FFmpeg Step 3

    3

    Скопируйте видеоролик или песню. Выберите файл, а затем нажмите Ctrl+C.

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

    4

    Вставьте видео или песню на рабочий стол. Перейдите на рабочий стол компьютера, а затем нажмите Ctrl+V.

    • В этом случае файл будет находиться в легкодоступном месте.
  5. Изображение с названием Use FFmpeg Step 5

    5

    Выясните текущий формат файла. Для этого щелкните правой кнопкой мыши по файлу, в меню выберите «Свойства» и найдите формат в строке «Тип файла».

    • Необходимо знать текущий формат файла, чтобы сообщить FFmpeg, какой файл конвертировать.
  6. Изображение с названием Use FFmpeg Step 6

    6

    Определитесь, в какой формат конвертировать файл. Видео можно преобразовать в видеофайл, песню в аудиофайл и видео в аудиофайл. Доступные форматы в FFmpeg:[1]

    • Видео — MP4, MOV, WEBM, FLV, AIFF и AVI.
    • Аудио — MP3, WAV, WMA, M4A, AAC и OGG.
  7. Изображение с названием Use FFmpeg Step 7

    7

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

    • Рекомендуем переименовать файл и присвоить ему короткое и простое имя, чтобы облегчить процесс конвертации. Для этого щелкните правой кнопкой мыши по файлу, нажмите «Переименовать» и введите новое имя.
  8. Изображение с названием Use FFmpeg Step 8

    8

    Откройте командную строку. Она есть во всех версиях Windows. Для этого:

  9. Изображение с названием Use FFmpeg Step 9

    9

    Перейдите на рабочий стол в командной строке. Введите cd Desktop и нажмите Enter. В командной строке отобразятся все файлы, которые хранятся в папке «Рабочий стол».

  10. Изображение с названием Use FFmpeg Step 10

    10

    Введите команду преобразования. Введите ffmpeg -i, затем введите имя и расширение исходного файла, а затем введите имя и расширение конечного файла.

    • Например, чтобы преобразовать MP4-файл «Kitties» в WAV-файл «Cats», введите ffmpeg -i Kitties.mp4 Cats.wav.
    • Когда будете вводить имя файла, не забудьте про регистр букв (например, если в имени есть прописные буквы, вводите прописные буквы).
    • Если в имени файла есть пробелы, заключите имя и расширение файла в кавычки. Например, вместо YouTube Drama.mp4 введите "YouTube Drama.mp4" (не меняйте пробелы на знаки подчеркивания, если, конечно, их нет в имени файла).
  11. Изображение с названием Use FFmpeg Step 11

    11

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

    • На конвертирование файлов (особенно видеороликов) может уйти много времени. Если вы конвертируете большой видео или аудио файл, не закрывайте командную строку, пока в ней не отобразится «C:UsersNameDesktop>».
  12. Изображение с названием Use FFmpeg Step 12

    12

    Найдите преобразованный файл. Когда процесс завершится, преобразованный файл появится на рабочем столе под именем, которые вы ввели.

    Реклама

  1. Изображение с названием Use FFmpeg Step 13

    1

    Установите FFmpeg (если нужно). На компьютерах Mac программу FFmpeg проще установить как часть менеджера пакетов Homebrew, который можно быстро установить через терминал:[2]

    • Перейдите на страницу https://brew.sh/index_ru в веб-браузере.
    • Скопируйте код в разделе «Установка Homebrew». Для этого выделите код и нажмите Command+C.
    • Откройте Spotlight
      Изображение с названием Macspotlight.png

      , введите терминал и дважды щелкните по «Терминал».

    • Вставьте скопированный код. Для этого нажмите Command+V.
    • Нажмите Return и дождитесь, когда установка завершится.
    • Введите brew install ffmpeg и нажмите Return.
  2. Изображение с названием Use FFmpeg Step 14

    2

    Найдите видео или аудио файл, который хотите конвертировать. С помощью FFmpeg видеоролики и песни можно преобразовать в разные форматы (то есть песню можно преобразовать в аудиофайл другого формата, а видеоролик в видеофайл другого формата).

  3. Изображение с названием Use FFmpeg Step 15

    3

    Скопируйте видеоролик или песню. Выберите файл, а затем нажмите Command+C.

    • Сделайте это, чтобы получить резервную копию исходного файла на случай, если что-то пойдет не так.
  4. Изображение с названием Use FFmpeg Step 16

    4

    Вставьте видео или песню на рабочий стол. Перейдите на рабочий стол компьютера, а затем нажмите Command+V.

    • В этом случае файл будет находиться в легко доступном месте.
  5. Изображение с названием Use FFmpeg Step 17

    5

    Выясните текущий формат файла. Для этого щелкните по файлу, чтобы выбрать его, а затем нажмите «Файл» > «Свойства» и найдите расширение в конце имени файла (например, «.mp4»).

  6. Изображение с названием Use FFmpeg Step 18

    6

    Определитесь, в какой формат конвертировать файл. Видео можно преобразовать в видеофайл, песню в аудиофайл и видео в аудиофайл. Доступные форматы в FFmpeg:

    • Видео — MP4, MOV, WEBM, FLV, AIFF и AVI.
    • Аудио — MP3, WAV, WMA, M4A, AAC и OGG.
  7. Изображение с названием Use FFmpeg Step 19

    7

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

  8. Изображение с названием Use FFmpeg Step 20

    8

    Откройте терминал. Если вы закрыли терминал, когда установили FFmpeg, откройте его. Для этого нажмите «Spotlight»

    Изображение с названием Macspotlight.png

    , введите терминал и дважды щелкните по «Терминал»

    Изображение с названием Macterminal.png

    .

  9. Изображение с названием Use FFmpeg Step 21

    9

    Перейдите на рабочий стол в терминале. Введите cd Desktop и нажмите Return. В командной строке отобразятся все файлы, которые хранятся в папке «Рабочий стол».

  10. Изображение с названием Use FFmpeg Step 22

    10

    Введите команду преобразования. Введите ffmpeg -i, затем введите имя и расширение исходного файла, а затем введите имя и расширение конечного файла.

    • Например, чтобы преобразовать MP4-файл «Kitties» в WAV-файл «Cats», введите ffmpeg -i Kitties.mp4 Cats.wav.
    • Когда будете вводить имя файла, не забудьте про регистр букв (например, если в имени есть прописные буквы, вводите прописные буквы).
    • Если в имени файла есть пробелы, заключите имя и расширение файла в кавычки. Например, вместо YouTube Drama.mp4 введите "YouTube Drama.mp4" (не меняйте пробелы на знаки подчеркивания, если, конечно, их нет в имени файла).
  11. Изображение с названием Use FFmpeg Step 23

    11

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

    • На конвертирование файлов (особенно видеороликов) может уйти много времени. Если вы конвертируете большой видео или аудио файл, не закрывайте терминал, пока в нем не отобразится новая пустая строка.
  12. Изображение с названием Use FFmpeg Step 24

    12

    Найдите преобразованный файл. Когда процесс завершится, преобразованный файл появится на рабочем столе под именем, которые вы ввели.

    Реклама

Об этой статье

Эту страницу просматривали 23 043 раза.

Была ли эта статья полезной?

Logo: FFmpeg Flare

FFmpeg — это набор библиотек и утилит, (в основном) предназначенных для обработки видео, аудио и графических файлов. Пакет свободно распространяется в бинарном виде и в исходных кодах. На момент публикации данной статьи бинарные пакеты были доступны для платформ Linux, Windows и macOS. На базе библиотек FFmpeg построено множество свободных (например, VLC и HandBrake) и коммерческих (например, Гугл Хром и Ютуб) систем.

И, все-таки, почему FFmpeg?

Мои потребности совсем невелики:

  1. Вырезать фрагменты из существующего видео материала.
  2. Комбинировать их несложным образом.
  3. Добавлять небольшое количество собственного контента.
  4. Приводить результат в стандартный вид.
  5. По-возможности все это делать без особых усилий.

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

Надо отметить, что в обсуждениях ссылки на FFmpeg (чаще на Libav, но это одно и то же, см. подраздел «FFmpeg против Libav» ниже) появлялись с завидной регулярностью. Вначале отсутствие графического интерфейса FFmpeg/Libav мне казалось неустранимым препятствием, тем более, что большинство использованных мной утилит все равно базировались на одном из этих пакетов. Зачем пользоваться чем-то базовым и сложным, если работу уже сделали до меня?

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

Дополнение. Вводная статья о FFmpeg с сайта Softpedia (РАСКРЫТЬ)

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

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

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

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

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

Источник: Alexandru Pintilie (ed.), FFmpeg, Softpedia, 2021.
[Перевод (с небольшими сокращениями) мой.]

Что умеет FFmpeg?

  • Автоматически распознавать форматы медиа файлов.
  • Для контейнерных форматов, таких как видео файлы, извлекать их элементы (например, изображение, звук и субтитры) и оперировать ими как отдельными потоками.
  • Вырезать фрагменты видео и аудио с точностью до кадра/сэмпла (если вы не знакомы с этой проблемой, то удивитесь, какой редкостью является такая возможность).
  • Применять фильтры к видео и аудио, такие как видео масштабирование, изменение яркости и громкости, добавление эффекта затухания и многие-многие другие. На настоящий момент в стандартной библиотеке FFmpeg имеется около 400 различных фильтров.
  • Комбинировать потоки различными способами: соединять последовательно один за другим, возможно с различными эффектами перехода, накладывать один на другой в определенную пространственную и временную позицию и прочие.
  • Преобразовать видео в набор графических файлов (или в GIF формат) и обратно.
  • Создавать видео, аудио и графические файлы в заданном формате, используя промежуточные результаты обработки.
  • И еще многое другое.

Содержимое бинарного пакета

  • ffmpeg.exe — основная утилита, предназначенная для обработки файлов как описано в предыдущем подразделе.
  • ffplay.exe — медиаплеер с возможностями, специфичными для FFmpeg.
  • ffprobe.exe — утилита для анализа и отображения структуры и параметров медиа файлов.
  • вспомогательные файлы.

Простейший пример

Illustration: Angry girl

Проблема заключалась в том, что основные видео редакторы и возможности HTML не позволяют создать эффект окантовки вокруг букв. Однако такая возможность имеется в формате субтитров .ASS. Как справиться с задачей?

  1. Создаем файл субтитров с помощью пакета Aegisub.
  2. Налагаем созданные субтитры на графический файл с помощью FFmpeg.

Сложный пример

Все выполняется с помощью FFmpeg.

  1. Создаем из набора картинок анимацию няшки (см. начало видео).
  2. В конце анимации няшки делаем эффект затухания.
  3. Комбинируем анимацию няшки с графическим файлом, содержащим текст приглашения.
  4. Вырезаем из исходных видео файлов 1-секундные клипы.
  5. Подправляем их палитру так, чтобы они смотрелись одинаково хорошо.
  6. Собираем из клипов видео последовательность, при этом располагая каждый из них в своей части экрана.
  7. Создаем переходную анимацию между завершением анимации няшки и первым кадром последовательности клипов.
  8. Собираем общее видео в разрешении 4K и добавляем музыкальное сопровождение.

Установка FFmpeg

В данной статье обсуждение будет ограничено бинарным пакетом FFmpeg и операционной системой Windows 10. Тестировались версии пакета 4.3.1, 4.3.2 и 4.4. Исполнение FFmpeg утилит всегда производится или из командной строки Far Manager, или с помощью командного файла в формате Windows, запускаемого в Far Manager, или из среды Far Manager.

Установка пакета

  1. Идем на сайт FFmpeg.
    Нажимаем кнопку «Download».
    Пролистываем вниз до секции «Get packages & executable files».
    Нажимаем кнопку, на которой нарисована «Windows» картинка.
    В секции «Windows EXE Files» переходим по ссылке «Windows builds from gyan.dev».
    Скачиваем пакет «ffmpeg-release-full.7z».
  2. Создаем каталог в любом удобном месте у себя на компьютере. В дальнейшем мы будем считать, что это «C:Bin».
  3. Копируем в созданный каталог файлы «ffmpeg.exe», «ffplay.exe» и «ffprobe.exe» из «ffmpeg-release-full.7z».
  4. Копируем файл «C:WindowsFontscalibri.ttf» (или любой другой файл шрифтов по вашему усмотрению) в тот же каталог, он позже понадобится.

Версии бинарных пакетов

Бинарные пакеты FFmpeg могут компилироваться в разных вариантах. В некоторых случаях вы видите описание конкретной возможности в документации FFmpeg или ее обсуждение в специализированных блогах, но в вашем экземпляре бинарного пакета она будет отсутствовать. К сожалению, если возможность не включена в компиляцию, то FFmpeg полностью про нее «забывает» и вы скорее всего получите невнятное сообщение вроде «неизвестный параметр». Дальше вы должны угадать, то ли вы ошиблись в описании параметра, или его поддержка не была включена в компиляцию.

В FFmpeg имеется обширный набор опций для отображения списков поддержанных возможностей. Откройте раздел документации «5.2 Generic options» и ищите там слова «print» и «show».

🗈

Здесь и далее мы будем ссылаться на нумерацию разделов по документу ffmpeg-all «ffmpeg Documentation».

Дополнительные пакеты

Ни один из них не является принципиально необходимым — так, чтобы без какого-то из них FFmpeg не был способен исполнять свои собственные операции. Для выполнения дополнительных действий вы можете использовать как пакеты из списка ниже, так и те, которые вам более удобны и привычны. Также отсутствует необходимость в каких-то специальных настройках Windows.

  • Far Manager — консольный файловый менеджер. Вместо него для запуска утилит и командных файлов вы можете воспользоваться, например, PowerShell.
  • VLC — видео плеер. Он вам прежде всего понадобится для независимой проверки исходных и выходных аудио/видео файлов, сохранения скриншотов «на лету» и для проверки синхронизации субтитров, где возможности FFplay не очень удобны.
  • Paint.NET — графический редактор. Независимая проверка графических файлов и вычисление некоторых вспомогательных параметров, например для определения размера черной зоны вокруг видео или для исправления палитры.
  • Aegisub — редактор субтитров. Кроме собственно работы с субтитрами он удобен для подбора параметров синхронизации звука.

Интеграция FFmpeg в Far Manager

Мы будем использовать 2 возможности:

  • При нажатии Alt-F3 показать параметры аудио, видео или графического файла.
  • Alt-F3 командная строка для всех групп:

    C:Binffprobe -hide_banner -v info "!.!" 2>&1 | more

    Пример вывода параметров видео файла «Сложного примера» выше:

    Input #0, matroska,webm, from 'Sakuga Affection - Invitation-v3.mkv':
    Metadata:
    ENCODER         : Lavf58.29.100
    Duration: 00:00:35.01, start: 0.000000, bitrate: 15455 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 3840x2160, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
    Metadata:
    ENCODER         : Lavc58.54.100 libx264
    DURATION        : 00:00:35.011000000
    Stream #0:1: Audio: aac (LC), 96000 Hz, stereo, fltp (default)
    Metadata:
    ENCODER         : Lavc58.54.100 aac
    DURATION        : 00:00:34.982000000

    Пример вывода параметров аудио файла:

    Input #0, flac, from '01 - Lum no Love Song.flac':
    Metadata:
    ALBUM           : Urusei Yatsura Complete Music Box CD 1 [KTCR-9018]
    ARTIST          : Yuuko Matsutani
    DATE            : 1994
    GENRE           : Anime
    TITLE           : Lum no Love Song
    track           : 01
    TOTALDISCS      : 15
    Duration: 00:02:42.00, start: 0.000000, bitrate: 919 kb/s
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16

    Пример вывода параметров графического файла «Простейшего примера» выше:

    Input #0, image2, from 'Angry girl.jpg':
    Duration: 00:00:00.04, start: 0.000000, bitrate: 12515 kb/s
    Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 380x640 [SAR 96:96 DAR 19:32], 25 tbr, 25 tbn, 25 tbc

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

  • При нажатии F3 проиграть (показать) аудио, видео или графический файл.
  • F3 командная строка для группы видео:

    C:Binffplay -v error -y 540 -seek_interval 1 -vf "drawtext=text='%{pts:hms}':fontfile='C:\Bin\calibri.ttf':fontsize=h/24:box=1:boxborderw=8:y=8" "!.!"

    F3 командная строка для группы аудио:

    C:Binffplay -v error -y 540 -f lavfi amovie="!.!",asplit[a][out1];[a]showcqt=axis_h=0[out0]

    F3 командная строка для группы графики:

    C:Binffplay -v error -y 540 -vf "drawtext=text='%{eif:w:d}x%{eif:h:d}':fontfile='C:\Bin\calibri.ttf':fontsize=h/24:box=1:boxborderw=8:y=8" "!.!"

Откройте в Far Manager пункт меню Commands/File associations и поменяйте настройки Video, Audio и Image групп. Если у вас этих групп еще нет, создайте их (с помощью клавиши Ins).

Illustration: Far Manager - Video associations

Пример установок группы видео файлов в Far Manager

Не забудьте после завершения изменений сохранить настройки Far Manager с помощью Shift-F9.

Сравнение пакетов

FFmpeg против Libav

Большинство пользователей знакомо с Libav по его основной утилите avconv. Разработка пакета FFmpeg началась в 2000 году. В 2011-м часть команды отделилась, основав новый проект Libav, целью которого было кардинальное улучшение пользовательского интерфейса и качества кода. В 2015-м было принято решение об интеграции изменений, выполненных за прошедшие годы, в проект FFmpeg. Однако оно так и не воплотилось в реальность. В настоящий момент развитие проекта Libav практически полностью прекратилось.

На 2011 год проекты Libav и FFmpeg были идентичны по своим возможностям. Затем их разработка стала идти параллельно и в значительной степени независимо. На настоящий момент основные возможности Libav и FFmpeg продолжают совпадать. Однако:

  • FFmpeg с бо́льшей готовностью, чем Libav, исключал из своего пакета части по требованию правообладателей. В результате в стандартном бинарном пакете FFmpeg отсутствует поддержка некоторых возможностей, имеющихся в Libav.
  • В то же время темпы разработки новых возможностей FFmpeg были выше, чем у Libav, и ошибки исправлялись быстрей и с бо́льшей готовностью. В результате FFmpeg работает более надежно, в целом у него имеется больше возможностей и лучшая поддержка самых последних стандартов.

Информация приведена на основании статьи Википедии и обсуждений в специализированных блогах. Автор данной статьи не имеет существенного опыта работы с Libav и не может гарантировать достоверность вышеизложенного.

FFmpeg против MKVToolNix

  • С точки зрения основных возможностях FFmpeg позволяет сделать все то же, что и MKVToolNix, и несравненно больше.
  • Единственный выходной контейнер MKVToolNix — MKV (Матроска). Для исходных файлов MKVToolNix не имеет таких ограничений. FFmpeg поддерживает множество различных выходных контейнеров (например, AVI и MP4), включая Матроска.
  • MKVToolNix не умеет разрезать файлы на отрезки по времени, если они включают дорожки в популярном аудио формате FLAC. Любая конверсия такого видео может производиться только с целыми файлами.
  • MKVToolNix — активно развивающийся проект, исправляющий баги и поддерживающий самые последние возможности Матроска. FFmpeg поддерживает только основные возможности контейнера.
  • MKVToolNix гарантирует преобразование аудио и видео без потери качества. Работая с FFmpeg, вы должны предпринимать определенные усилия, не всегда очевидные для рядового пользователя, чтобы достичь того же эффекта.
  • MKVToolNix умеет разрезать дорожки субтитров по времени, FFmpeg — нет.
  • MKVToolNix имеет удобную графическую оболочку MKVToolNix GUI, в FFmpeg вы можете работать только из командной строки.

FFmpeg против HandBrake

  • HandBrake построен на базе FFmpeg и поэтому, теоретически, FFmpeg способен делать все то же, что и HandBrake, и несравненно больше. Однако код HandBrake содержит значительный know-how. Если вы не знаете, как достичь какого-то эффекта с помощью существующего пакета, его возможности для вас не представляют ценности.
  • Выходные файлы HandBrake практически всегда меньше по размеру, чем при использовании стандартных возможностей FFmpeg.
  • FFmpeg практически всегда выполняет быстрее (нередко в десятки и сотни раз) те же операции, что HandBrake.
  • HandBrake имеет удобную графическую оболочку, в FFmpeg вы можете работать только из командной строки.

Вторая часть статьи находится здесь.

Marple Mashu Marces AnimationОпубликовано 8 сентября 2020 г.

Последние изменения 1 марта 2021 г.

Понравилась статья? Поделить с друзьями:
  • Как работать с curl в windows
  • Как работать с bios на windows 7
  • Как работать с avz для windows 7
  • Как работать с aircrack ng windows
  • Как работать от имени администратора в windows 8