Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод команд происходит быстрее, чем перемещение курсора.Во-вторых, все процессы внутри консоли выполняются быстрее, поскольку процессор, память и видеокарта не создают дополнительной нагрузки на графическую оболочку. Поэтому в этой статье рассмотрим как пользоваться инструментом FFmpeg.
Графические оболочки FFmpeg
FFmpeg изначально является консольной утилитой. Но популярность его очень высока. Поэтому с появлением все новых и новых версий графической оболочки для FFmpeg доступ к инструменту имеют абсолютно всепользователи.
Эта консольная утилита объединяет более 300 видео/аудио/ графических кодеков, декодеров, мультиплексоров, демультиплексоров и фильтров в 1 двоичный файл для редактирования/ сжатия/ обработки аудио и видео. Универсальный комбайн FFmpeg обладает абсолютно всеми функциями, которые вы только можете себе представить, а документация самой утилиты не уступает Photoshop. Например, популярное бесплатное руководство по FFmpeg насчитывает более 1000 страниц. А еще там есть библиотеки, API и различные компоненты.
Расширенное руководство по оценке крутизны FFmpeg:
ffmpeg -y \ -ss 20 -t 60 -i bbb_sunflower_1080p_60fps_normal.mp4 \ -i train.jpg \ -ss 4 -i voice_recording.wav \ -filter_complex "[0:v]hue=h=80:s=1[main] ; [1:v]crop=w=382:h=304:x=289:y=227[train] ; [main][train]overlay=x=200:y=200,vignette=PI/4
; [2:a]volume=1.5,aecho=0.8:0.9:100:0.3[speech] ; [0:a][speech]amix=duration=shortest,asplit[audio1][audio2]" \ -map '
' -map '[audio1]' -metadata title="Editor's cut" bbb_edited.mp4 \ -map '[audio2]' bbb_edited_audio_only.wav
Эта команда делает в том числе следующее:
- Открывает файл.
- Вырезает фрагмент (
-ss 20 -t 60
). - Накладывает изображение
train.jpg
. - Обрезает наложенное изображение (
crop
). - Добавляет эффект виньетирования под углом PI/4.
- Накладывает фильтр для коррекции тона (
hue
). - Накладывает дополнительную звуковую дорожку
voice_recording.wav
. - Увеличивает громкость.
- Добавляет эхо.
- Экспортирует результат в разные форматы.
- Экспортирует оригинальную звуковую дорожку.
Одна команда в консоли заменяет десять минут редактирования в Premiere Pro!
Естественно, никто не может выучить и запомнить все возможные ключи и опции FFmpeg. Мы все просматриваем документацию. Но есть и другой вариант: используйте графическую оболочку, которая упрощает базовое редактирование в FFmpeg и снижает барьеры для входа.
FFmpeg Explorer
FFmpeg explorer — удобное средство для изучения функционирования разнообразных фильтров FFmpeg, где поддерживается богатый набор вариаций. Эти вариации представлены в виде различных видов спецэффектов, переходов и прочих возможностей изменения аудио и видео материалов.
Алгоритм простой:
- Добавляем фильтры из списка слева
Список фильтров в отдельном текстовом файле для справки. Официальная документация по фильтрам.
2. Щёлкаем по фильтрам в редакторе узлов, чтобы изменить параметры.
3. Нажимаем Render Preview. Результат отображается в браузере.
Естественно, вы имеете возможность загрузить ваш файл в интерфейс и внести необходимые изменения в него. Весьма жестокое видео было размещено с единственной целью — вызвать широкий интерес и волнение.
Для редактирования представленной ниже диаграммы, пожалуйста, нажмите кнопку «Заблокировать макет». После этого элементы диаграммы будут свободно перемещаться по полю, и вы сможете изменить связи между ними вручную. Кроме того, вы также сможете изменить порядок применения фильтров и прочие параметры в этом режиме.
Автор объявляет, что данный проект находится на стадии эксперимента, поэтому недостаточно стабилен и может часто вылетать (при этом требуется его перезагрузка). Кроме того, запуск приложения на мобильных устройствах не может быть гарантирован. Просьба сообщать об ошибках в репозитории GitHub.
FFMPEG UI
FFMPEG UI — это вообще не веб-приложение, а собственная программа, доступная в версиях для macOS, Windows и Linux. Разработчик сделал акцент на максимальном удобстве использования и понятном интерфейсе.
Просто открываем файл, указываем настройки видео для конвертации:
Также настройки звука:
И ждём обработки результата:
В целом, это не столько редактор, сколько простой конвертер на основе FFmpeg, если вам нужно конвертировать файл в другой формат. Что ж, такие инструменты тоже нужны.
Хотя с технической точки зрения здесь нет ничего интересного. Бинарный файл FFmpeg просто упакован в Electron и представляет собой файл с закрытым исходным кодом.
По возможностям эта графическая оболочка значительно уступает Staxrip и другим видеоредакторам на базе FFmpeg, перечисленным ниже. Ну что сказать, даже старый добрый ручник кажется удобнее.
VapourSynth
FFMPEG UI является превосходным инструментом для редактирования видео, представляющим собой видеоредактор на языке программирования python. Используя мощные возможности ffmpeg и предоставляя более простой интерфейс для редактирования видео, чем стандартная консольная среда, vapoursynth можно охарактеризовать как python-обертку для ffmpeg. В распоряжении этого инструмента имеется огромный выбор плагинов, значительно расширяющих функциональность исходного ffmpeg.
Существуют также специализированные видеоредакторы, основанные на базе ffmpeg, такие как LosslessCut .Они предназначены для выполнения быстрых операций по редактированию аудио и видео. Они могут быть полезны в таких случаях, как склеивание фрагментов, разделение на части или вырезание отдельных участков. Главной особенностью этих редакторов является то, что они не производят перекодирование. Благодаря этому, операции выполняются практически мгновенно и без потери качества, что отличает их от традиционных видеоредакторов, требующих длительного перекодирования.
LosslessCut
Стоит упоминания мощный видеоредактор Staxrip — вот уж где точно полноценный интерфейс для FFmpeg.
Staxrip
FFmpeg работает под управлением видеоредакторов с открытым исходным кодом Shotcut, KDEnlive и других. Все они в некотором смысле являются «графическими оболочками» базового движка.
FFmpeg 6.1
Тем временем сам FFmpeg продолжает расти и развиваться. Недавно вышла версия 6.1 Heaviside.
Некоторые нововведения:
- Возможность активации Vulkan API для аппаратного декодирования видео H264, HEVC и AV1.
- Добавлен видеокодер AV1 на основе VAAPI.
- Поддержка кодеков HEVC, VP9 и AV1 в потоках rtmp и файлах flv.
- Добавлен парсер, кодировщик и декодировщик медиаконтейнеров в формате EVC (Essential Video Coding), развиваемом рабочей группой MPEG в качестве стандарта MPEG-5.
- Реализована возможность использования параметров P_SKIP для ускорения видеокодирования библиотекой libx264.
- Добавлены новые видеофильтры, в том числе деинтерлейсинг BWDIF (Bob Weaver Deinterlacing Filter), nlmeans_vulkan (устранение шума на алгоритме Non-local means), xfade_vulkan (эффект затухания), apsnr (измеряет уровень сигнал-шум для звука).
А это основные оптимизации:
-
Реализация FFT, MDCT, DCT и DST для кодеков и фильтров полностью заменена на более быструю libavutil/tx. Это также привело к уменьшению размера скомпилированного бинарного файла, что особенно заметно в маленьких сборках.
-
Очень сильно сократилось общее количество выделений памяти на каждый кадр при декодировании видео, что уменьшило накладные расходы.
-
Объединены оптимизации RISC-V для многих частей DSP-кода. В основном, остались только большие декодеры.
-
Проведена работа по улучшению корректности временных меток и длительности кадров в каждом пакете, что повышает точность видео с переменной частотой кадров.
- ffmpeg-online
Веб-приложение ffmpeg-online использует не исходный ffmpeg, а приложение ffmpeg.wasm, производное от проекта webassembly/javascript. Однако, важно отметить, что функции ffmpeg изначально поддерживаются самим браузером. Это отличает наше приложение на совершенно новом уровне.
Практическое использование данной «графической оболочки» практически не отличается от работы в обычной консоли. Например, если нам необходимо вырезать и сохранить фрагмент видео с использованием ffmpeg, мы используем следующую команду:
ffmpeg -i test.mp4 -ss 00:00:00 -t 00:00:05 -vcodec copy -acodec copy output.mp4
В веб-приложении это выглядит примерно так же:
Выводы
Очистка кода являлась приоритетной задачей в моей профессиональной писательской карьере. Внедрение новых функций становилось все более сложным, поэтому я решил осуществить оптимизацию самого ffmpeg и всех его проектов. В результате работы графических оболочек и самого ffmpeg заметно ускорились, что позволило эффективнее выполнять все задачи.