Создание хардсабов в MKV пошаговая инструкция

Как сделать хардсаб в mkv

Хардсабы – это субтитры, встроенные непосредственно в видеопоток, что делает их неотъемлемой частью файла. В отличие от софтсабов, они не требуют отдельного файла субтитров и отображаются на любом устройстве без дополнительных настроек. Формат MKV (Matroska) поддерживает мультипотоковость, но для хардсабов потребуется перекодирование видео с наложением субтитров. Этот процесс требует точной настройки параметров, чтобы избежать потери качества и артефактов.

Для работы понадобятся: FFmpeg (версия не ниже 5.0), исходный видеофайл в формате MKV и файл субтитров в формате .ass или .srt. Формат .ass предпочтительнее, так как поддерживает расширенное форматирование (шрифты, анимацию, позиционирование). Если субтитры в .srt, конвертируйте их в .ass с помощью Aegisub или аналогичных инструментов. Убедитесь, что шрифты, используемые в субтитрах, установлены в системе или внедрены в файл.

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

ffmpeg -i input.mkv -vf "subtitles=subs.ass:force_style='Fontsize=24,PrimaryColour=&HFFFFFF&'" -c:v libx264 -crf 18 -preset slow -c:a copy output.mkv.
Параметр -crf 18 обеспечивает высокое качество видео (значения от 18 до 23 оптимальны), а -preset slow улучшает сжатие за счет увеличения времени кодирования. Для ускорения процесса можно использовать -preset fast, но это снизит эффективность сжатия. Аудиопоток копируется без изменений (-c:a copy), чтобы избежать повторного кодирования.

При работе с многоязычными субтитрами или несколькими потоками используйте фильтр subtitles с указанием индекса потока: subtitles=input.mkv:stream_index=2. Проверьте индексы потоков командой ffmpeg -i input.mkv. Если субтитры содержат нестандартные шрифты, добавьте параметр fontsdir=/путь/к/шрифтам в фильтр. Для точного позиционирования субтитров используйте параметры Alignment и MarginV в стилях .ass.

Создание хардсабов в MKV: пошаговая инструкция

Оптимизируйте битрейт видео перед наложением субтитров: -c:v libx264 -crf 18 -preset slow -x264-params ref=4:bframes=3. Для анимационных субтитров увеличьте значение ref до 6, чтобы избежать артефактов. Сохраните оригинальный аудиопоток без перекодирования: -c:a copy. Готовый файл проверьте в VLC с отключенными программными субтитрами – хардсабы должны отображаться независимо от настроек плеера.

Выбор исходного видео и подготовка субтитров для встраивания

Исходное видео должно иметь разрешение не ниже 720p (1280×720) и битрейт от 3000 кбит/с для сохранения четкости после встраивания субтитров. Формат контейнера предпочтителен MKV или MP4 с кодеками H.264/AVC или H.265/HEVC – они обеспечивают баланс между качеством и совместимостью. Избегайте исходников с артефактами сжатия, так как хардсабы усугубят их видимость. Проверьте видео на наличие встроенных субтитров: если они уже есть в потоке, удалите их с помощью mkvmerge (--no-subtitles) или FFmpeg (-sn).

Субтитры должны быть в формате SRT или ASS – первый проще в редактировании, второй поддерживает расширенное форматирование (шрифты, анимации, позиционирование). Для проверки синхронизации используйте Aegisub или SubSync. Если субтитры содержат спецсимволы (например, японские иероглифы), убедитесь, что шрифт поддерживает Unicode. При работе с ASS-файлами отключите эффекты, требующие программной обработки (например, караоке), так как они не будут корректно отображаться в хардсабах.

Параметр Рекомендуемое значение Примечание
Размер шрифта 20–28 пт (для 1080p) Увеличивайте на 2–4 пт при уменьшении разрешения
Цвет текста Белый (#FFFFFF) с черной обводкой Избегайте полупрозрачных заливок
Позиционирование Нижний край, отступ 5–10% от высоты кадра Для ASS используйте \pos(x,y)
Кодировка UTF-8 без BOM Обязательно для корректного отображения спецсимволов

Установка и настройка необходимых инструментов: MKVToolNix и FFmpeg

Для работы с хардсабами в формате MKV потребуются два ключевых инструмента: MKVToolNix и FFmpeg. Первый отвечает за мультиплексирование и редактирование контейнеров MKV, второй – за обработку видео- и аудиопотоков, включая наложение субтитров. Установка обоих инструментов зависит от операционной системы, но в большинстве случаев занимает не более 5–10 минут.

На Windows проще всего использовать официальные сборки. Для MKVToolNix скачайте установщик с mkvtoolnix.download – выбирайте версию с GUI (графическим интерфейсом), если планируете работать через визуальные инструменты. Установщик предложит добавить программу в PATH, что обязательно для вызова из командной строки. FFmpeg доступен на ffmpeg.org – выберите статическую сборку (например, ffmpeg-git-full.7z) и распакуйте в отдельную папку, например, C:\ffmpeg. Добавьте путь к bin в системную переменную PATH, чтобы команды ffmpeg и ffprobe работали глобально.

На Linux оба пакета доступны в репозиториях большинства дистрибутивов. Для Debian/Ubuntu выполните:

sudo apt update && sudo apt install mkvtoolnix ffmpeg

На Arch Linux используйте:

sudo pacman -S mkvtoolnix-cli ffmpeg

Если требуется последняя версия MKVToolNix, добавьте официальный репозиторий:

sudo sh -c 'echo "deb https://mkvtoolnix.download/ubuntu/ $(lsb_release -sc) main" >> /etc/apt/sources.list.d/mkvtoolnix.list'
wget -q -O - https://mkvtoolnix.download/gpg-pub-moritzbunkus.txt | sudo apt-key add -
sudo apt update && sudo apt install mkvtoolnix

Проверьте установку командой mkvmerge --version и ffmpeg -version.

На macOS удобнее всего использовать Homebrew. Установите его, если ещё не сделали:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Затем выполните:

brew install mkvtoolnix ffmpeg

Для MKVToolNix GUI дополнительно установите:

brew install --cask mkvtoolnix

После установки проверьте доступность команд в терминале. Если ffmpeg не распознаётся, добавьте путь к бинарникам в ~/.zshrc или ~/.bashrc:

export PATH="/opt/homebrew/bin:$PATH"

После установки настройте FFmpeg для оптимальной работы с субтитрами. Создайте файл конфигурации ~/.ffmpeg/config (Linux/macOS) или %APPDATA%\ffmpeg\config (Windows) и добавьте параметры по умолчанию:

[libass]
fontsdir=/путь/к/шрифтам

Укажите путь к директории со шрифтами, чтобы избежать проблем с отображением нестандартных символов. Для Windows это может быть C:\Windows\Fonts, для Linux – /usr/share/fonts или ~/.local/share/fonts. Проверьте корректность настройки, запустив:

ffmpeg -f lavfi -i color=black:s=1280x720 -vf "subtitles=subs.ass:fontsdir=/путь/к/шрифтам" -frames:v 1 output.png

Если субтитры отображаются корректно, настройка завершена.

MKVToolNix не требует глубокой настройки, но полезно знать несколько параметров для ускорения работы. В GUI-версии откройте Настройки → Параметры и установите:

  • Язык по умолчанию для новых дорожек: rus или eng в зависимости от контента.
  • Формат времени: ЧЧ:ММ:СС.ммм для удобства редактирования таймингов.
  • Автоматическое сохранение проекта: каждые 5 минут.

Для командной строки создайте алиасы в ~/.bashrc или ~/.zshrc:

alias mkvmerge='mkvmerge --ui-language ru'
alias mkvinfo='mkvinfo --ui-language ru'

Это упростит работу с русскоязычными интерфейсами и сообщениями об ошибках.

Перед началом работы убедитесь, что оба инструмента обновлены до последних версий. Для FFmpeg проверьте наличие поддержки libass (библиотека для рендеринга субтитров):

ffmpeg -buildconf | grep libass

Конвертация субтитров в формат SRT или ASS перед добавлением

Форматы SRT и ASS – стандарты для хардсабов в MKV. SRT поддерживает только базовые текстовые субтитры с временными метками, ASS – расширенные стили, анимацию и позиционирование. Выбор зависит от задачи: SRT подходит для простых субтитров, ASS – для оформленных (аниме, фильмы с эффектами).

Конвертация начинается с проверки исходного формата. Распространённые форматы: SUB/IDX (из DVD), VTT (веб), SSA (предшественник ASS), PGS (из Blu-ray). Инструменты для конвертации:

  • FFmpeg – универсальный конвертер через командную строку. Пример для SUB/IDX в SRT:
    ffmpeg -i subtitles.sub -c:s srt output.srt
  • Subtitle Edit – GUI-инструмент с поддержкой 200+ форматов. Импортируйте файл, выберите целевой формат (SRT/ASS) и экспортируйте.
  • Aegisub – специализирован для ASS. Позволяет редактировать стили перед конвертацией.

При конвертации в SRT проверяйте временные метки. Частые ошибки: перекрытие таймингов, отсутствие пустых строк между субтитрами. Исправляйте вручную или через Subtitle Edit (меню Tools → Fix Common Errors). Для ASS критически важна кодировка UTF-8 – иначе символы отобразятся некорректно.

Если исходные субтитры в PGS (из Blu-ray), используйте BDSup2Sub или SupRip. Эти инструменты извлекают текст из графических субтитров с помощью OCR. Точность распознавания зависит от шрифта и фона – проверяйте результат вручную. Для массовой обработки используйте скрипты на Python с библиотекой pytesseract.

Субтитры в формате VTT (WebVTT) конвертируются в SRT с минимальными правками. Удалите заголовок WEBVTT, замените точки на запятые в таймингах (например, 00:01.500 → 00:01,500). Для ASS используйте Subtitle Edit с настройкой стилей по умолчанию.

После конвертации проверяйте синхронизацию с видео. В Aegisub загрузите видео и субтитры, воспроизведите первые 5 минут. Рассинхронизация чаще возникает при конвертации из форматов с переменным FPS (например, MP4). Исправляйте через Timing → Shift Times или пересчитайте тайминги в Subtitle Edit (Synchronization → Adjust All Times).

Для автоматизации процесса создайте bat-файл с FFmpeg. Пример для пакетной конвертации всех SUB в папке в SRT:

for %%f in (*.sub) do (
ffmpeg -i "%%f" -c:s srt "%%~nf.srt"
)

Сохраните как convert.bat и запустите в папке с субтитрами. Для ASS добавьте параметр -c:s ass.

Использование FFmpeg для наложения субтитров на видео без перекодирования

FFmpeg позволяет встраивать субтитры в контейнер MKV без перекодирования видеопотока с помощью флага `-c:v copy`. Для этого используйте команду: `ffmpeg -i input.mkv -i subtitles.srt -map 0 -map 1 -c copy -metadata:s:s:0 language=rus output.mkv`. Ключевые параметры: `-map 0` и `-map 1` сохраняют исходные потоки видео/аудио и добавляют субтитры, `-c copy` предотвращает перекодирование, а `-metadata:s:s:0` задаёт язык субтитров (например, `rus`, `eng`). Метод работает только с текстовыми субтитрами (SRT, ASS, SSA) и поддерживает формат MKV – для MP4 потребуется перекодирование.

Если субтитры требуют позиционирования или стилизации, конвертируйте их в формат ASS перед встраиванием: `ffmpeg -i subtitles.srt subtitles.ass`. При работе с несколькими потоками субтитров укажите их порядок через `-disposition:s:0 default` (для включения по умолчанию) или `-disposition:s:1 0` (для отключения). Проверяйте результат командой `ffprobe output.mkv` – она отобразит все потоки и их метаданные.

Проверка синхронизации субтитров с видеодорожкой после наложения

Сравните тайминги субтитров с аудиодорожкой по следующим критериям:

  • Задержка появления текста: допустимое отклонение – ±50 мс для быстрой речи, ±100 мс для медленной.
  • Длительность отображения: субтитр должен исчезать не раньше, чем через 200 мс после окончания фразы.
  • Синхронность смены субтитров: при быстром диалоге зазор между субтитрами не должен превышать 150 мс.

Для автоматизированной проверки используйте Subtitle Edit (инструмент «Синхронизация → Проверка синхронизации»). Программа выделит субтитры с отклонениями более 250 мс и предложит скорректировать тайминги через алгоритм «Shift by audio», если аудиодорожка содержит чёткие звуковые пики.

Если субтитры запаздывают или опережают видео, экспортируйте их из MKV через MKVToolNix (пункт «Extract tracks»), откорректируйте тайминги в Aegisub (горячая клавиша Ctrl+3 для массового сдвига) и повторно встройте в файл. При работе с многоязычными субтитрами проверяйте каждый трек отдельно – расхождения в синхронизации между языками встречаются в 12–15% случаев из-за ошибок при переводе.

Вопрос-ответ:

Ссылка на основную публикацию