Образование

Как добавить субтитры с помощью FFmpeg (руководство по работе из командной строки)

от LoudSpeaker Marketing 12 мин. чтения
В этой статье

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

Основные выводы

  • FFmpeg поддерживает два типа субтитров: «мягкие» субтитры, которые представляют собой включаемые и выключаемые дорожки, и «жесткие» субтитры, которые навсегда встроены в видео
  • Файлы SRT используют простой формат временных меток, тогда как файлы ASS/SSA позволяют применять расширенные стилевые настройки с использованием шрифтов, цветов, расположения и эффектов
  • Обработка встроенных субтитров требует перекодирования видео, что занимает больше времени и требует больших ресурсов процессора
  • «Мягкие» субтитры часто можно добавить при копировании исходных видео- и аудиопотоков, что позволяет избежать повторного кодирования видео
  • В версии FFmpeg 8.0 был добавлен опциональный аудиофильтр Whisper для автоматической транскрипции, однако его поддержка зависит от того, как был скомпилирован бинарный файл FFmpeg, и требует наличия совместимой модели
  • SRT обеспечивает широкую совместимость с различными инструментами для работы с субтитрами, проигрывателями и платформами
  • Файлы ASS/SSA обеспечивают широкие возможности управления стилями, включая анимированные текстовые эффекты и подсветку в стиле караоке
  • «Мягкие» субтитры позволяют сохранить исходное качество видео при копировании видеопотока без повторного кодирования

Разбираемся с форматами субтитров: SRT, VTT и ASS/SSA

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

Что такое файл SRT?

SRT (SubRip Text) является одним из наиболее широко используемых форматов субтитров благодаря своей простоте. Его структура имеет следующий строгий формат:

1

00:00:01,000 –> 00:00:03,500

Это первый подзаголовок.

2

00:00:03,500 –> 00:00:06,000

Это второй подзаголовок.

Каждая запись содержит порядковый номер, диапазон временных меток и отображаемый текст. Файлы SRT можно создавать и редактировать в любом текстовом редакторе — подойдут как «Блокнот», так и TextEdit или VS Code. Формат поддерживает базовые разрывы строк, но имеет ограниченные встроенные возможности форматирования.

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

  • SRT (SubRip): Текст в формате Plain с временными метками, широкой совместимостью и ограниченными возможностями форматирования
  • VTT (WebVTT): Формат, ориентированный на веб-использование, с настройками синхронизации и базовым стилем, который обычно применяется в видеоплеерах HTML5
  • ASS/SSA (Advanced SubStation Alpha): Широкие возможности настройки стиля, включая шрифты, цвета, расположение элементов, тени и анимацию

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

Настройка FFmpeg: установка и основы использования

FFmpeg запускается из командной строки, то есть вам нужно будет вводить команды в Терминале в macOS или Linux, либо в командной строке или PowerShell в Windows. Порядок установки зависит от операционной системы:

Windows: Посетите Страница загрузки FFmpeg и перейдите по одной из ссылок на совместимую сборку для Windows. Распакуйте файлы, а затем добавьте сборку корзина добавьте папку в переменную среды PATH.

Mac: Откройте терминал и выполните команду brew install ffmpeg если вы используете менеджер пакетов Homebrew.

Linux: Запустить sudo apt install ffmpeg в Ubuntu или Debian, либо sudo pacman -S ffmpeg в дистрибутивах на базе Arch.

Проверьте правильность установки, введя:

ffmpeg -version

При успешной настройке отображается информация о версии и конфигурации сборки. Для встроенных субтитров проверьте, включает ли конфигурация –enable-libass, либо запустить ffmpeg — фильтры и подтвердить, что субтитры фильтр указан в списке.

Основная структура команд FFmpeg

Каждая команда FFmpeg имеет единый формат:

ffmpeg -i input.mp4 [параметры] output.mp4

Сайт -i Флаг указывает входной файл, параметры определяют настройки обработки, а последний аргумент указывает имя выходного файла. Понимание этой структуры облегчает чтение даже сложных команд.

Мягкие субтитры: добавление внешних дорожек субтитров к видео

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

Объединение файлов SRT без перекодирования видео

Основная команда для добавления мягких субтитров в файлы MP4:

ffmpeg -i video.mp4 -i subtitles.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4

Рассмотрим это подробнее:

  • -i video.mp4: Исходное видео
  • -i subtitles.srt: Ваш файл субтитров
  • -c копировать: Копировать совместимые входные потоки без их повторного кодирования
  • -c:s mov_text: Преобразовать дорожку субтитров в формат, совместимый с MP4 mov_text формат
  • -metadata:s:s:0 language=eng: Пометьте первую дорожку субтитров как «английский»

Обработка обычно происходит гораздо быстрее, чем рендеринг встроенных субтитров, поскольку FFmpeg может копировать видео- и аудиопотоки, конвертируя при этом только поток субтитров. Для команд, которым необходимо создать файлы субтитров перед их встраиванием, Sonix может автоматически создавать файлы SRT на основе аудио- или видеозаписей.

Работа с субтитрами на нескольких языках

Для контента, требующего наличия нескольких языковых версий:

ffmpeg -i video.mp4 -i english.srt -i spanish.srt -map 0 -map 1 -map 2 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=spa output.mp4

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

Жесткое встраивание субтитров: запись субтитров непосредственно в видео

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

Использование фильтра «Субтитры» для постоянных субтитров

Основная команда для тестирования на выгорание:

ffmpeg -i video.mp4 -vf “subtitles=subtitles.srt” -c:v libx264 -c:a copy output.mp4

Сайт -vf Параметр «video-filter» применяет фильтр субтитров, накладывая текст непосредственно на кадры видео. Поскольку фильтр работает с декодированными кадрами, видео необходимо перекодировать. -c: копия Эта опция сохраняет исходный аудиопоток, если он совместим с выходным контейнером.

Настройка внешнего вида субтитров

Белый текст в формате Plain не всегда соответствует эстетике профессионального видео. В FFmpeg’s force_style Этот параметр позволяет переопределить свойства стилей ASS:

ffmpeg -i video.mp4 -vf “subtitles=subtitles.srt:force_style=’FontName=Roboto,FontSize=18,BackColour=&H40000000,BorderStyle=3′” -c:v libx264 -c:a copy output.mp4

При этом создаются подписи с частично прозрачным фоном. Параметры стилизации Available включают:

  • Название шрифта: Имя шрифта, поддерживающего формат available
  • Размер шрифта: Значение размера шрифта ASS; размер при отображении зависит от масштабирования субтитров и видео
  • Основной цвет: Цвет текста в ASS &HAABBGGRR нотация
  • Цвет фона: Цвет фона или тени, включая прозрачность
  • BorderStyle: Как правило, 1 для плана или 3 для фона в рамке
  • План: Ширина контура в единицах скрипта ASS
  • Тень: Глубина тени в единицах скриптов ASS

Поддержка шрифта avail зависит от системы и сборки FFmpeg. Для обеспечения переносимости рабочих процессов может потребоваться указать каталог со шрифтами через параметр фильтра fontsdir опция.

Распространенные проблемы и их устранение

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

“Такого фильтра нет: субтитры”: Возможно, в вашей сборке FFmpeg отсутствует поддержка libass. Проверьте ffmpeg — фильтры, установите сборку, в которую входит этот фильтр, или скомпилируйте FFmpeg с –enable-libass.

Неразборчивые символы: Возможно, в файле субтитров используется неверная кодировка символов. Сохраните его заново в формате UTF-8. При работе с другой кодировкой используйте фильтр субтитров charenc опция, если она поддерживается.

Несинхронизация субтитров: Использование -itsoffset перед вводом субтитров для сдвига всего потока субтитров. Положительные значения задерживают субтитры, а отрицательные — ускоряют их отображение.

Огромный размер выходного файла: Встроенные субтитры требуют повторного кодирования видео. При выводе в формате H.264 качество и размер можно регулировать с помощью кодировщика, поддерживающего параметр CRF, например -c:v libx264 -crf 23. Чем ниже значение CRF, тем, как правило, выше качество и тем больше размер файлов.

Конкретные примеры команд FFmpeg для типичных сценариев

Добавление SRT к видео в формате MP4 (программный способ)

ffmpeg -i interview.mp4 -i captions.srt -c copy -c:s mov_text output.mp4

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

Запись VTT в формат MKV (сложный способ)

ffmpeg -i webinar.mkv -vf “subtitles=captions.vtt” -c:v libx264 -c:a copy output.mkv

Сайт -c: копия Эта опция позволяет сохранить исходный аудиофайл без повторного кодирования, если кодек совместим с выходным контейнером.

Стильные подписи для социальных сетей

ffmpeg -i clip.mp4 -vf “subtitles=captions.srt:force_style=’FontName=Arial,FontSize=24,PrimaryColour=&H00FFFFFF,BackColour=&H80000000,BorderStyle=3,Alignment=2′” -c:v libx264 -preset veryfast -c:a copy output.mp4

Выравнивание=2 располагает субтитры внизу по центру в соответствии со стандартными правилами выравнивания ASS. -предустановка «veryfast» опция ускоряет libx264 кодирование за счет некоторого снижения эффективности сжатия.

Продвинутые методы работы с субтитрами в FFmpeg

Настройка синхронизации субтитров

Когда субтитры не полностью совпадают с аудио:

ffmpeg -i video.mp4 -itsoffset 2.5 -i subtitles.srt -c copy -c:s mov_text output.mp4

Это приводит к задержке потока субтитров на 2,5 секунды. Чтобы ускорить его, используйте отрицательное значение, например -itsoffset -1,5.

Использование ASS для создания сложных визуальных эффектов

Файлы ASS открывают возможности, которые файлы plain SRT изначально не поддерживают:

  • Анимационные текстовые эффекты, такие как плавное появление и исчезновение и перемещение
  • Выделение текста в стиле караоке
  • Несколько одновременных позиций текста
  • Оформление по символам или по словам

Создайте файлы ASS с помощью программы для создания субтитров, а затем примените их с помощью фильтра ASS в FFmpeg:

ffmpeg -i video.mp4 -vf “ass=styled_captions.ass” -c:v libx264 -c:a copy output.mp4

Создание субтитров с помощью фильтра Whisper в FFmpeg

В версии FFmpeg 8.0 был добавлен опциональный аудиофильтр Whisper, способный генерировать транскрипцию, в том числе файлы субтитров. Однако не все бинарные версии FFmpeg 8.x включают его.

Сначала проверьте, поддерживает ли ваша сборка данный фильтр:

ffmpeg -filters | grep whisper

В Windows PowerShell можно использовать:

ffmpeg -filters | Select-String whisper

Вам также понадобится совместимый файл модели Whisper. Типичная структура команды выглядит следующим образом:

ffmpeg -i input.mp4 -af “whisper=model=/path/to/model.bin:language=auto:destination=output.srt:format=srt” -f null –

Конкретные параметры могут варьироваться в зависимости от версии и сборки FFmpeg. Совместимые сборки могут использовать поддерживаемые бэкэнды GPU, однако степень ускорения зависит от подключенной библиотеки Whisper, аппаратного обеспечения available, драйверов и конфигурации сборки.

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

FFmpeg и программы для редактирования видео: преодоление разрыва

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

Когда использовать FFmpeg, а когда — специализированные программы для редактирования видео

Выбирайте FFmpeg в следующих случаях:

  • Обработка десятков или сотен видеороликов
  • Запуск автоматизированных пакетных заданий
  • Добавление субтитров с помощью повторяемых скриптов
  • Работа с конвейерами CI/CD или в серверных средах

Выбирайте программу для монтажа видео в следующих случаях:

  • Визуальная точная настройка синхронизации отдельных субтитров
  • Создание сложных анимированных подписей
  • Работа над проектами, требующими размещения элементов в определённых кадрах
  • Необходимость визуального предварительного просмотра в режиме реального времени при корректировке субтитров

Экспорт субтитров, сгенерированных с помощью FFmpeg, для программ нелинейного монтажа

FFmpeg может извлечь или преобразовать совместимый встроенный поток текстовых субтитров:

ffmpeg -i video.mp4 -map 0:s:0 subtitles.srt

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

Оптимизация рабочих процессов создания субтитров с помощью Sonix

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

Sonix использует иной подход к процессу создания субтитров, применяя искусственный интеллект и браузерные инструменты на этапах, предшествующих окончательному кодированию:

  • Автоматическая транскрипция преобразует аудио и видео в редактируемый текст с отметками времени
  • Поддержка нескольких языков предоставляет услуги транскрипции в 54 и более языков
  • Редактирование в браузере сочетает в себе синхронизированное воспроизведение с возможностью управления текстом и временем отображения субтитров
  • Экспорт субтитров включает SRT, VTT, TTML, FCPXML и другие поддерживаемые форматы для производства
  • Идентификация спикера автоматически маркирует разных говорящих в поддерживаемых рабочих процессах транскрипции

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

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

Sonix также Сертифицировано по стандарту SOC 2 Type II, при этом данные шифруются при передаче с помощью протокола TLS, а при хранении — с помощью алгоритма AES-256. Организациям, работающим с материалами, подпадающими под регулирование, все же следует оценить конкретный продукт, план, конфигурацию и договорные требования, применимые к их сценарию использования.

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

Окончательный вывод: выбор между FFmpeg и профессиональными платформами для транскрипции

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

Выбирайте FFmpeg, если вам нужно:

  • Detailed: управление параметрами кодирования и отображения субтитров
  • Пакетная обработка для автоматизированных конвейеров обработки видео
  • Интеграция с существующими рабочими процессами, использующими командную строку
  • Инструмент с открытым исходным кодом, не требующий регулярных платежей за подписку на программное обеспечение
  • Этапы обработки мультимедиа, поддерживающие скрипты и повторяемость

Выбирайте профессиональную платформу для транскрипции, если вам нужно:

  • Автоматическое преобразование речи в текст без ручного создания стенограммы
  • Редактирование в браузере с синхронизированным воспроизведением
  • Многоязычная транскрипция и перевод
  • Совместная работа в команде и рабочие процессы рецензирования
  • Идентификация и маркировка динамиков
  • Документированные функции безопасности и администрирования

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

Часто задаваемые вопросы

В чём заключается разница между «мягкими» и «жесткими» субтитрами?

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

Может ли FFmpeg автоматически создавать субтитры на основе аудио?

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

Как с помощью FFmpeg изменить шрифт или цвет встроенных субтитров?

Используйте force_style параметр в фильтре субтитров. Например, -vf “subtitles=captions.srt:force_style=’FontName=Arial,FontSize=20,PrimaryColour=&H0000FFFF'” применяет шрифт Arial с цветом ASS. Цвета ASS используют &HAABBGGRR обозначение, где AA обозначает альфа. Также можно указать Цвет фона, BorderStyle, План, Тень, а также свойства выравнивания.

Какие форматы субтитров поддерживает FFmpeg?

FFmpeg может считывать, записывать, конвертировать или обрабатывать множество форматов субтитров, включая SRT, WebVTT, ASS/SSA, а также несколько форматов субтитров на основе изображений. Точная поддержка зависит от сборки FFmpeg, входного формата, выходного контейнера и выбранного кодека субтитров. Для встроенных субтитров в MP4, -c:s mov_text часто используется. Контейнеры Matroska могут хранить текстовые кодеки, такие как SRT и ASS, в более прямой форме, тогда как в рабочих процессах с жесткими субтитрами обычно используется субтитры или задница фильтры для поддерживаемых текстовых форматов.

Как обеспечить идеальную синхронизацию субтитров с видео?

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

Получите точную транскрипцию за считанные минуты

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