Как вшить субтитры в видео: софт-сабы, хард-сабы и что выбрать

ГАЙД

Как вшить субтитры в видео: софт-сабы, хард-сабы и что выбрать

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

«Вшить субтитры в видео» — три разных действия с разным результатом

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

Каждый раз причина одна и та же. Словом «вшить» называют минимум три разные вещи, и они по-разному переживают пересылку.

  • Отдельный файл рядом. subs.srt лежит в одной папке с video.mp4 и называется так же. Настольные плееры подхватывают такую пару сами. Стоит переслать одно видео без второго файла — субтитров нет.
  • Дорожка внутри контейнера — софт-сабы. Текст лежит в том же файле, что видео и звук, но отдельным потоком. Плеер рисует его поверх картинки на лету, зритель включает и выключает кнопкой.
  • Текст в самой картинке — хард-сабы. Буквы нарисованы на кадрах и стали их частью, как логотип телеканала в углу. Выключить нельзя, потерять нельзя, изменить — только перерисовав видео заново.
Одним глаголом называют три разные вещи. Пересылку они переживают по-разному, и путаница в задаче «вшей и пришли» начинается именно здесь.

По-английски это soft subs и hard subs, в русском обиходе — «софтсаб» и «хардсаб». Глагол «вшить» употребляют ко всем трём случаям — отсюда и путаница в задачах вида «вшей субтитры и пришли».

Что каждый маршрут забирает и что оставляет

На экране обе версии выглядят одинаково: белые буквы внизу кадра. Разница — в том, что с этим текстом может сделать зритель, площадка и вы сами через неделю.

Софт-саб оставляет текст текстом, хард-саб превращает его в изображение. Всё остальное — следствия этого выбора.

Софт-саб оставляет текст текстом: его выключают, выделяют, копируют, а площадка читает его и ищет по нему; с ним же работает перевод видео в текст. Хард-саб превращает текст в изображение — для любой программы это просто пиксели, ничем не отличающиеся от лица в кадре.

Что важноСофт-саб (дорожка)Хард-саб (в кадре)
Зритель может выключить текстестьнет
Видно в любом плеере и после пересылкинетесть
Площадка читает текст: поиск, переводестьнет
Правка без перекодирования видеоестьнет
Полный контроль над шрифтом и положениемнетесть
Качество картинки не меняетсяестьнет

Последняя строка — не придирка. Софт-саб кладётся в файл копированием потоков: видео не трогается вообще, секунды работы на любом ноутбуке. Хард-саб требует перекодирования — ролик разбирается на кадры, на них рисуется текст, и всё собирается заново. Это ещё один пережим поверх съёмки и монтажа, и часовое видео считается десятки минут.

Площадка решает за вас

Субтитры давно перестали быть только про доступность. В опросе Verizon Media и Publicis Media (апрель 2019 года, 5616 респондентов в США) 69 % сказали, что смотрят видео без звука в общественных местах, а 80 % — что скорее досмотрят ролик до конца, если есть субтитры. Четверо из пяти включают их не из-за слуха.

Вопрос, значит, не в том, нужен ли текст, а в том, доедет ли он до зрителя. Решает это площадка.

У видеохостингов с собственным плеером всё закрыто их же средствами. Справка YouTube перечисляет форматы загрузки прямо: из простых — SubRip (.srt) и SubViewer, из продвинутых — WebVTT (.vtt), TTML и DFXP. С важной оговоркой про оформление: у SRT стилевая разметка не читается вовсе, у WebVTT поддержано позиционирование, а из оформления — только полужирный, курсив и подчёркивание. Загрузить дорожку можно, задать ей свой вид — нет.

Выбор делает не автор, а площадка. Прежде чем вшивать, стоит проверить, читает ли она отдельную дорожку.

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

На своём сайте формат ровно один. Тег <track kind="subtitles" src="subs.vtt" srclang="ru"> рядом с <video> понимает WebVTT — и только его. SRT в атрибут src класть бесполезно: браузер его не разберёт, а плеер молча покажет видео без субтитров. Чем VTT отличается от SRT по строкам, разобрано отдельно: в каком виде забирать расшифровку.

Куда уходит роликОтдельная дорожкаЧто делать
Видеохостинг, свой каналестьЗагрузить SRT или VTT в кабинете — файл встанет дорожкой
Свой сайт, тег videoестьТолько WebVTT через track, SRT браузер не читает
Файл в мессенджере или на флешкенетВшивать: чужой плеер про дорожку может не знать
Соцсети и короткие вертикальные роликинетВшивать либо собирать текст в редакторе площадки
Видео внутри слайда или курсазависит от плеераПроверить на чужом устройстве до рассылки

Софт-сабы: как положить дорожку в файл

Если ролик должен остаться одним файлом, а текст вы ещё планируете менять, дорожка кладётся в контейнер. MKV хранит SubRip как есть, поэтому команда прямолинейная:

ffmpeg -i video.mp4 -i subs.srt -c copy -c:s srt -metadata:s:s:0 language=rus out.mkv

MP4 устроен иначе: формата SubRip внутри него не существует, текстовые субтитры лежат своим типом — mov_text. Поэтому кодек дорожки называют явно:

ffmpeg -i video.mp4 -i subs.srt -c copy -c:s mov_text -metadata:s:s:0 language=rus out.mp4

В обеих командах -c copy означает, что видео и звук переписываются потоками, без единого пережима: минута работы и никаких потерь качества. -metadata:s:s:0 language=rus подписывает дорожку языком — без этого плеер покажет её как «Track 1», а при двух языках зритель будет выбирать вслепую.

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

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

ffmpeg -i out.mkv -map 0:s:0 -c:s srt subs-back.srt

Главное свойство маршрута — обратимость. Нашли опечатку в имени, поменяли формулировку, добавили английскую дорожку к русской: правится файл субтитров, видео остаётся нетронутым, пересборка занимает те же секунды. Именно поэтому софт-саб стоит делать по умолчанию везде, где площадка его показывает.

Хард-сабы: как вжечь текст в кадр

Здесь работает библиотека libass — та же, что рисует субтитры в настольных плеерах. В ffmpeg это видеофильтр subtitles, и минимальная команда выглядит так:

ffmpeg -i video.mp4 -vf "subtitles=subs.srt" -c:v libx264 -crf 20 -preset medium -c:a copy out.mp4

Каждый кусок команды отвечает за конкретную неприятность. -vf включает отрисовку текста на кадрах. -c:v libx264 задаёт кодек: раз кадры меняются, видео придётся сжать заново. -crf 20 — качество: чем меньше число, тем лучше картинка и больше файл; 18–20 для ролика, который уже был сжат один раз, это разумный запас. -preset medium — компромисс между скоростью и размером. -c:a copy копирует звук как есть: перекодировать его незачем, а лишний пережим слышен на музыке.

Это и есть довод в пользу софт-саба по умолчанию. Хард-саб выбирают, когда иначе текст до зрителя не доедет, — и только после вычитки.

Голый SRT рисуется шрифтом по умолчанию и мелко. Внешний вид задаётся параметром force_style — он переопределяет стиль прямо в команде:

ffmpeg -i video.mp4 -vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=24,Bold=1,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Shadow=0,Alignment=2,MarginV=40'" -c:v libx264 -crf 20 -preset medium -c:a copy out.mp4

Значения читаются так: PrimaryColour — цвет букв, OutlineColour — цвет контура, оба в необычном порядке &HAABBGGRR, где первая пара — прозрачность (00 — полностью непрозрачно). BorderStyle=1 — контур вокруг букв, BorderStyle=3 — сплошная плашка под текстом. Outline=2 — толщина контура, Shadow=0 — тень выключена. Alignment=2 — низ по центру. MarginV=40 — отступ от нижнего края в пикселях.

Когда стилей нужно больше одного — реплики двух героев разными цветами, строка, поднятая выше из-за плашки в кадре, — субтитры переводят в ASS и правят стили в файле:

ffmpeg -i subs.srt subs.ass — а затем ffmpeg -i video.mp4 -vf "ass=subs.ass" -c:v libx264 -crf 20 -c:a copy out.mp4

В subs.ass есть секция [V4+ Styles], где те же поля лежат по-человечески и правятся текстовым редактором. Если стиль описан в самом ASS, force_style к нему уже не добавляют: он перебьёт работу, которую вы только что сделали.

Как должен выглядеть текст, чтобы его читали

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

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

Шрифт. Гротеск без засечек, полужирный. Засечки и тонкие штрихи съедаются сжатием видео первыми: там, где на макете аккуратная линия, в готовом ролике каша из квадратиков.

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

Контраст. Белые буквы без обводки исчезают на снегу, на небе, на белой стене переговорной. Два рабочих решения: чёрный контур толщиной 2 (BorderStyle=1, Outline=2) или полупрозрачная плашка под текстом (BorderStyle=3). Контур универсальнее, плашка надёжнее на пёстром фоне, но заметно тяжелее выглядит.

Положение. Низ по центру — стандарт, от которого отступают редко. Но прижимать строку к самому краю нельзя: внизу кадра живут панель плеера, подписи площадки и кнопки интерфейса. Отступ задаётся MarginV, и его подбирают, посмотрев ролик там, где он будет опубликован.

Длина строки и скорость. Отраслевой ориентир даёт руководство Netflix: около 42 знаков в строке, не больше двух строк на реплику, скорость чтения до 20 знаков в секунду для взрослого контента и 17 для детского. Строка, которую не успели дочитать, не существует.

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

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

Почему автосубтитры не вшивают без вычитки

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

Смотреть при этом нужно не весь текст подряд, а четыре вещи, которые в кадре заметны первыми.

  • Имена собственные. Фамилия спикера, название компании, продукта, города. Нажатие на строку проигрывает именно её — слышно, как имя произнесли на самом деле.
  • Числа, даты и суммы. «Пятнадцатого» и «пятидесятого», «тринадцать» и «тридцать» — пара букв разницы на слух и совсем другой смысл на экране.
  • Термины и аббревиатуры. Внутреннюю лексику компании удобно править поиском по тексту: одна замена расходится на все вхождения сразу.
  • Границы фраз. Точка решает, где разрежется строка, поэтому пунктуацию расставляют до разбивки — тогда субтитры лягут по смыслу, а не по ширине кадра.
Плеер под расшифровкой: нажатие на строку проигрывает именно эту реплику
Имена и цифры сверяют не глазами, а слухом: строка проигрывается с нужной секунды, и опечатка в фамилии ловится за один клик.

Отсюда порядок, который экономит часы: сначала вычитка — целиком, с проверкой имён и цифр по записи; потом разбивка на строки под ограничения из предыдущего раздела; и только потом вшивание. Разбитый на строки текст правится вдвое медленнее, а вшитый — не правится вообще.

Откуда взять сам файл субтитров

Все команды выше начинаются с готового subs.srt. Собрать его руками — значит набрать текст с экрана и вручную расставить тайминги к каждой реплике; на десятиминутном ролике уходит вечер. Поэтому файл берут из расшифровки: генератор субтитров распознаёт речь, режет её на реплики и проставляет таймкоды.

  1. Видеофайл целиком, без пережатия
  2. Расшифровкатекст, спикеры, таймкоды
  3. Вычиткаимена, числа, разбивка
  4. SRT или VTTдорожкой или в кадр
  1. Загрузите ролик — MP4, MOV, MKV или другой привычный формат, перетаскиванием в окно загрузки. Извлекать звук отдельно не нужно.
  2. Дождитесь расшифровки: получится текст с таймкодами, разложенный по говорящим.
  3. Пройдите по именам, числам и терминам: клик по реплике проигрывает именно этот фрагмент записи, так что спорное место проверяется на слух за секунду.
  4. Выгрузите SRT для видеохостинга или VTT для плеера на сайте — тайминги и разбивка уже проставлены.
  5. Дальше — либо дорожкой в кабинете площадки, либо в кадр командой из раздела про хард-сабы.
Выбор формата при выгрузке: SubRip (.srt) и WebVTT (.vtt) рядом с Word, PDF и TXT
Файл субтитров берут отсюда: SRT для дорожки и прожига, VTT для веб-плеера. Тайминг уже проставлен, резать реплики руками не нужно.
Два формата сразуSRT — для загрузки дорожкой и для вшивания, VTT — для тега track на своём сайте.
Реплики уже разложеныКто говорит, видно в тексте, а таймкод стоит у каждой строки: вычитывать можно с любого места, а не подряд.
Правка до вшиванияИмена, термины и цифры исправляются в редакторе, и в кадр уходит уже вычитанный текст, а не первый вариант.

Расшифровка полезна и после того, как субтитры готовы: по длинному ролику ищут словами вместо перемотки — текст к видео отвечает на «где именно про сроки» ссылкой на минуту.

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

Что проверить перед публикацией

Список, который отделяет «субтитры есть» от «субтитры работают»: пять минут против перезалива.

  1. Имена и цифры сверены по записи. Не весь текст подряд — только фамилии, названия, суммы и даты. Их обычно десяток на ролик.
  2. Ни одного субтитра в три строки. Две строки — потолок; третья закрывает четверть кадра и не дочитывается.
  3. Быстрые реплики разрезаны. Если строка висит меньше секунды, а знаков в ней под сотню, её никто не прочтёт — режьте на два блока.
  4. Контур или плашка есть. Проверьте на самом светлом кадре ролика, а не на первом попавшемся.
  5. Низ кадра свободен. Откройте видео в том приложении, где его увидит зритель: панель плеера не должна перекрывать текст.
  6. Дорожка действительно внутри. Для софт-саба — ffprobe и три потока в списке. Для хард-саба — открыть готовый файл и увидеть буквы.
  7. Файл проверен на чужом устройстве. Телефон коллеги закрывает больше вопросов, чем любой чек-лист.

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

Субтитры к ролику за одну загрузку

Загрузите видео — Vibe2Text распознает речь, разложит реплики по говорящим и проставит таймкоды. На выходе готовый SRT или VTT: дорожкой на площадку или в команду для вшивания.

Сделать субтитры к видео

Без карты. Файлы до 4 ГБ и до 6 часов, выгрузка в SRT, VTT, DOCX, PDF и ещё три формата.

Частые вопросы

Как вшить субтитры в видео, чтобы они были видны всегда?

Это хард-саб: текст рисуется прямо на кадрах. Командой ffmpeg это один фильтр — subtitles=subs.srt, плюс кодек видео и копирование звука. Две оговорки: ролик придётся перекодировать целиком, и выключить такой текст зритель уже не сможет. Поэтому вшивают только вычитанные субтитры и только в оригинал монтажа, а не в скачанную копию.

Хардсаб или софтсаб — что выбрать?

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

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

Без единого пережима — только софт-сабом: дорожка кладётся в контейнер с ключом -c copy, видео и звук переписываются потоками как есть. Для текста в кадре задача другая — сделать пережим единственным: вшивайте в исходный файл монтажа, ставьте -crf 18–20 и копируйте звук ключом -c:a copy.

Чем SRT отличается от VTT и что грузить на площадку?

SRT — самый простой и самый совместимый формат: его принимают видеохостинги, настольные плееры и ffmpeg. VTT — веб-формат: он обязателен для тега track на своём сайте, поддерживает позиционирование строк, а оформление в нём ограничено. Практическое правило: на площадку и в команду вшивания — SRT, в собственный плеер на сайте — VTT.

Почему после вшивания вместо текста получились кракозябры?

Почти всегда дело в кодировке файла субтитров. SRT, сохранённый в Windows-1251, ffmpeg не разбирает и пишет в лог «Invalid UTF-8 in decoded subtitles text». Лечится двумя способами: пересохранить файл в UTF-8 в любом текстовом редакторе либо добавить параметр charenc прямо в фильтр — subtitles=subs.srt:charenc=cp1251.

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

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

Как убрать вшитые субтитры из видео?

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

Проверено 14 августа 2026. Форматы файлов субтитров, которые принимает загрузка, и оговорки про оформление — по справке YouTube «Поддерживаемые форматы субтитров». Разделение авторских и автоматических субтитров, условия доступности и запрет включать оба типа сразу — по разделу о субтитрах в справке RUTUBE. Ограничение «не больше двух строк» и длительность блока — по Netflix Timed Text Style Guide: General Requirements; длина строки в 42 знака и скорость чтения (до 20 знаков в секунду для взрослого контента и до 17 для детского) — по языковым разделам того же руководства. Требование формата WebVTT для тега <track> — по документации MDN. Поведение команд: фильтры subtitles и ass на библиотеке libass, тип mov_text для MP4, параметр charenc и текст ошибки при файле в Windows-1251 — по справочнику фильтров FFmpeg, проверено на ffmpeg 6.1. Доля просмотров без звука и влияние субтитров на досмотр — по опросу Verizon Media и Publicis Media, апрель 2019 года, 5616 совершеннолетних респондентов в США.