有没有命令行工具可以合并两个srt文件?

有没有命令行工具可以合并两个srt文件?

我有两个 srt 文件,cd1.srt 和 cd2.srt。不幸的是,srtool 不再在任何地方可用,这是几年前提出的同一问题的答案。

如何合并两个 *.srt 文件

但还是不够。我试过https://tracker.debian.org/pkg/pysrt,除了加入 srt 文件之外,它可以执行所有操作:(

我什至查找了 github 但只找到了这样的条目 -

https://github.com/malfroid/merge-srt-subtitles

如果有人知道更好的方法请分享。我也查看了一些在线解决方案,但遗憾的是所有这些都没有成功:(

答案1

我就是这样做的:

我首先检查了第一个 srt 文件的结束时间戳。就我而言,第二个时间戳的第一个时间戳紧随其后开始,因此很容易推断出移动时间跨度。

有了这个,正如@aviro 在你的答案的评论中提到的,我使用了pysrt与我上面推断的时间跨度。

pip install pysrt
srt -i shift 1h2m58s cd2.srt

然后在合并两个srt文件之前,我们需要偏移 cd2.srt 处的子计数器以使它们正常工作。

为此,我使用此 python 脚本生成完全偏移的cd2.srt:(将 $numX 替换为(cd1.srt 中的字幕总和)+1)

# Open the input file for reading
with open('cd2.srt', 'r') as input_file:
  # Open the output file for writing
  with open('cd2.output.srt', 'w') as output_file:
    # Iterate over each line in the input file
    for line in input_file:
      # Check if the line contains a single integer
      if line.strip().isdigit():
        # Convert the line to an integer
        number = int(line)
        # Add $numX to the number
        number += $numX
        # Write the resulting number to the output file
        output_file.write(str(number) + '\n')
      else:
        # Write the original line to the output file
        output_file.write(line)

然后通过以下方式执行最终合并:cat cd1.srt cd2.output.srt > final.srt

现在字幕应该可以与新合并的视频文件一起正常工作!

相关内容