Возможно ли изменить размер текста субтитров из SRT-файла в FFmpeg?

Вопрос или проблема

Можно ли автоматически изменить размер текста субтитров (SRT)? Если текст слишком длинный, размер шрифта становится меньше, чтобы показать весь текст на экране.

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

Это пример содержимого такого файла SRT, который я хочу встроить в видеоролик.

1  
00:00:00,000 --> 00:00:03,000  
ЗАГОЛОВОК  
Информация о видео здесь  
и иногда она слишком длинная и выходит  
за пределы размера экрана видео при использовании 
больших размеров шрифта, таких как 40 или 50.

Можно установить размер шрифта внутри srt файла, и сделать это можно вот так:

<font size="30px">Размер шрифта 30px</font>

Я сам это попробовал, создав SRT и воспроизведя видео в VLC. Это сработало.

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

<font size="30px">Это субтитры.</font>

можно легко написать:

<font size="30px">Это субтитры.

Это удобно, если вы хотите, чтобы субтитры были нужного размера шрифта. Я просто скопировал <font size="60px"> перед субтитрами в каждой строке одного видео, и это сработало!!

Я все еще не нашел способ установить размер шрифта глобально.

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

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

Другой альтернативой было бы использование субтитров, которые поддерживают стилизацию, таких как SSA/ASS субтитры. Вам потребуется поддержка правильного контейнера, если вы хотите воспроизвести их как мягкие субтитры (например, MKV), и ваш плеер также должен это поддерживать (см. например, поддерживаемые форматы субтитров в VLC). Вы также можете встроить их в видео, если вам нужна совместимость с другими форматами.

Aegisub – это редактор субтитров с множеством функций.

Ну, технически .srt – это просто .txt файл, отформатированный как .srt (в основном как HTML файлы). Интересно, что они поддерживают HTML-теги и, следовательно, CSS стили.

Тем не менее, как и HTML, они не работают одинаково на разных видеоплеерах. Это работает на KMPlayer. VLC на самом деле не отображал субтитры. А на PotPlayer это может сработать, если вы перейдете в настройки субтитров и снимете флажок ‘Игнорировать HTML теги’ под “Абсолютные размеры” (такие как px, cm, дюйм и т.д.).

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

Я запоздал с ответом на этот вопрос, но стоит отметить, что тег в файлах SRT поддерживается FFMpeg, так что вы можете задавать размеры, цвета и другие атрибуты. Однако, что-то вроде <font size="40px">foo</font> не даст текст размером 40px. FFMpeg делает что-то вроде пропорциональной отрисовки. Поэтому size="40" означает разные вещи при разных размерах видео.

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

<font size="20px">"текст субтитров, который вы хотите изменить"</font>

Это для .srt файла

Ответ или решение

Изменение размера текста субтитров в файле SRT с помощью FFmpeg — это вопрос, который вызывает много интереса и обсуждений. Прежде всего, важно отметить, что файлы SRT (SubRip Subtitle) сами по себе не поддерживают стилизацию текста, такую как изменение размера шрифта, цвет или шрифт, на глобальном уровне. Это обусловлено тем, что SRT — это простая текстовая разметка, не содержащая информации о стильном формате. Поэтому окончательное отображение субтитров зависит от медиаплеера, который их воспроизводит.

Ответ на ваш вопрос

  1. Использование HTML-тегов в SRT файлах: Хотя это не гарантирует повсеместной поддержки, определённые медиаплееры (такие как KMPlayer) могут поддерживать HTML-теги в ваших SRT файлах. Например:

    <font size="30">Ваш текст субтитров здесь</font>

    Но стоит помнить, что это работает по-разному в зависимости от медиаплеера. В VLC, как правило, HTML-теги не обрабатываются, и плеер не отображает субтитры с разметкой. Таким образом, ваш вывод может не достигнуть желаемого результата в зависимости от используемого плеера.

  2. Создание субтитров с большим контролем над стилем: Если вам необходимо больше возможностей для кастомизации (например, автоматическое изменение размера шрифта для длинных строк), рассмотрите возможность использования форматов субтитров, которые поддерживают такие функции, как SSA или ASS. Эти форматы довольно мощные и позволяют вам контролировать параметры отображения текста, включая размеры шрифта, стили и даже анимацию. Для работы с ними вы можете использовать программы вроде Aegisub, которые предоставляют удобный интерфейс для редактирования.

  3. Использование FFmpeg для наложения субтитров: Если вы хотите "забить" субтитры прямо в видео, вы можете использовать FFmpeg для комбинирования видео с вашими субтитрами. Например:

    ffmpeg -i input.mp4 -vf "subtitles=input.srt:force_style='FontSize=30'" -codec:a copy output.mp4

    Здесь вы можете задать параметры, чтобы изменить стиль отображаемых субтитров.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...