如何自动将字幕从一个视频转移到另一个视频?(基于视频流)

如何自动将字幕从一个视频转移到另一个视频?(基于视频流)

我有以下内容:

  • 一个 mkv 文件(我们称之为A),视频、音频和字幕正确同步。
  • 另一个 mkv 文件(我们称之为) 视频和音频也同步,但没有字幕。

两个文件显示的内容相同,但视频/音频质量不同(B 比 A 好得多)。我想将字幕从 A 转移到 B。两个视频流都是 25 FPS,但 B 每 24 帧包含一个重复帧(这可能是 24 到 25 FPS 转换的结果)。除此之外,帧完全匹配(如果我们忽略分辨率不同的事实)。

我想知道是否存在一种工具/方法/脚本(甚至是商业的)可以让我自动将字幕与 B 同步,使用 A 视频流作为参考,并且知道它是完美同步的。

对于 A 中的每一帧,都有可能在 B 中找到几乎 1:1 匹配的帧,因此理论上应该可以自动同步字幕。


我已经尝试过的:

字幕编辑:将字幕速度从 25 FPS 减慢到 24 FPS,并应用给定的偏移量(因为 A 和 B 不是同时开始的)。乍一看,它似乎有效,但 15-20 分钟后,字幕开始不同步,而且随着时间的推移情况会变得更糟。

另外,我已经通知 B 包含 A 没有的额外内容(例如:在流中间有 10 秒的间歇)。

编辑:请反对者指出或解释这个问题出了什么问题。

答案1

经过无数个小时的搜索和尝试后,我选择编写自己的 Python 3 脚本来完成这项工作。我决定在这里分享它。以下是它的链接: https://gist.github.com/tigrouind/8cd1564568b7582feb776ad21edc8fff

要求 :

  • opencv-python
  • 韓國

它的作用:从电影 A 中获取字幕和相关帧,然后在电影 B 中搜索最匹配的帧。一旦找到,它会相应地调整字幕时间(每个字幕都如此进行)。搜索仅限于向前和向后一定数量的帧。

我已将它应用到一部 2 分 30 秒的电影(与参考电影有许多细微的差别且有超过 2000 个字幕),效果非常好。

相关内容