Почему арабские слова отображаются как квадратные коробки (“[] [] []”) в сгоревших субтитрах с использованием FFmpeg?

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

Сначала я сгенерировал файл ASS:

ffmpeg -i foo.srt bar.ass

Который затем создал это:

[Script Info]
; Сценарий сгенерирован FFmpeg/Lavc60.31.102
ScriptType: v4.00+
PlayResX: 384
PlayResY: 288
ScaledBorderAndShadow: yes
YCbCr Matrix: None

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arabic Poetry,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:05.00,Default,,0,0,0,,هذا نص تجريبي باللغة العربية لاستخدامه في العروض.

Сжигал его, используя:

ffmpeg -i input.mp4 -vf subtitles=bar.ass output.mp4

Но текст выглядит так [] [] [] [] [] с арабскими словами. Почему?

Примечание: “Arabic Poetry” явно является шрифтом для арабских текстов, так что это определенно не причина.

Использование фильтра ass вместо субтитров заставило это работать как по волшебству:

ffmpeg -i input.mp4 -vf ass=bar.ass output.mp4

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

Проблема отображения арабских слов в виде квадратных блоков («[] [] []») при использовании FFmpeg для встраивания субтитров, скорее всего, связана с несколькими факторами, касающимися кодировок шрифта и метода обработки субтитров. Давайте подробно рассмотрим, что именно происходит и как можно это исправить.

1. Контекст проблемы

Ваша команда для преобразования .srt файла в .ass:

ffmpeg -i foo.srt bar.ass

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

ffmpeg -i input.mp4 -vf subtitles=bar.ass output.mp4

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

2. Шрифты и кодировки

Хотя вы указали, что «Arabic Poetry» — это шрифт, предназначенный для арабского текста, важно учитывать следующее:

  • Убедитесь, что шрифт установлен: FFmpeg при обработке видео требует наличия адресуемых шрифтов на системе. Если ваш шрифт не установлен или не доступен в глобальном пути, ваши субтитры будут отображаться некорректно.

  • Кодировка текста: Также следует убедиться, что ваш текст в .ass файле правильно закодирован. Арабский текст должен быть сохранён в правильной кодировке (обычно UTF-8), чтобы избежать распознавания символов как некорректных.

3. Решение проблемы

Вы заметили, что использование фильтра ass вместо subtitles устраняет проблему:

ffmpeg -i input.mp4 -vf ass=bar.ass output.mp4

Этот метод более эффективен, поскольку:

  • Прямое обращение к ASS позволяет FFmpeg узнать о стиле и шрифте непосредственно из файла .ass, тем самым применяя все заданные вами настройки, включая правильную кодировку и используемые шрифты.

4. Рекомендации по исправлению

  • Убедитесь в доступности шрифта: Проверьте, установлен ли шрифт «Arabic Poetry» на вашей системе. Если нет, установите его или замените на другой совместимый шрифт для арабских символов.

  • Используйте правильные команды: Для работы с арабскими текстами рекомендуется всегда использовать команду -vf ass=, так как она гарантирует корректное применение всех стилей и свойств, описанных в файле.

  • Проверка кодировки: Убедитесь, что ваш .srt и .ass файлы сохранены в кодировке UTF-8. Это можно сделать с помощью текстового редактора или утилиты командной строки.

5. Заключение

Отображение арабских символов в виде квадратов является следствием неправильной обработки шрифта или кодировки текста. Следуя вышеприведённым рекомендациям и используя команду с фильтром ass, вы сможете добиться желаемого результата с корректным отображением арабских субтитров. Если вы сталкиваетесь с подобными проблемами, обязательно проверяйте шрифты и их доступность на вашей системе.

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

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