如何在视频中嵌入具有正确语言方向性的 RTL 字幕(希伯来语、阿拉伯语等)?

如何在视频中嵌入具有正确语言方向性的 RTL 字幕(希伯来语、阿拉伯语等)?

我尝试在视频中硬编码字幕,通过将带有字幕的视频重新编码为图形(而不是作为附加流)。

字幕是希伯来语/阿拉伯语。

(所有文本均采用 UTF-8 编码。这不是文本编码/字符集问题。)

我愿意接受其他命令行工具或编程解决方案。

问题:

我希望能够为 RTL 字幕设置句子方向。 ffmpeg似乎没有考虑方向性,所以结果文本是错误的。它是视觉上写的,而不是逻辑上的:

  1. 标点符号写在句子的错误一侧,
  2. 句子部分被破坏:例如<hebrew-text-A> <LATIN-TEXT-B> <heb-text-C> 写道: <heb-text-C> <LATIN-TEXT-B> <hebrew-text-A>

ffmpeg 命令:

ffmpeg -i "nosubs.avi" -vf "subtitles='subs.srt'" withsubs.mp4

我尝试过的:

  • 我尝试过以下字幕格式:srt、ass、ssa、vtt、ttml
  • 我尝试在字幕格式中查找与 RTL 相关的属性或标签;到目前为止,我还没有找到;TTML 手册确实提到了与复杂方向性相关的内容,但我找不到示例,也不知道在哪里/如何实现它们
  • 我尝试在字幕中设置语言,格式允许(ttml)

部分成功:

  • 我在句子/从句末尾手动添加了一个 unicode 控制字符 x200F。这解决了句子末尾问题 (#1),但没有解决句子不连贯问题 (#2)。

另一个问题是,我必须找到一种编程方法来插入这些控制字符,这可能需要几天的时间。

可能的解决方案方向

  • 另一个控制整个句子的 unicode 控制字符(???)
  • 隐藏的 ffmpeg 开关用于控制语言/方向性、RTL 设置
  • 特定的字幕格式设置,ffmpeg 对此表示尊重。

例子:

  1. 这个视频显示 1) 由于混合了希伯来语/拉丁语单词而导致句子流畅度中断,2) 一些句子以标点符号开头(这是错误的)。3) 其他句子看起来是正确的,因为我在句子末尾添加了控制字符。
  2. 示例字幕文件用于制作上述视频

不相关的问题:

  • 使用 ffmpeg 设置字幕语言 - 将字幕称为流
  • how-to-fix-ffmpeg-mencoder-pushing-persian-rtl-subtitles-reversed - 相关但被 SO 拒绝,没有给出答案
  • 如何正确地在 ffmpeg 中转换 rtl 字幕 - 讨论字符集,而不是方向性

相关内容