2つのsrtファイルをマージするコマンドラインツールはありますか?

2つのsrtファイルをマージするコマンドラインツールはありますか?

cd1.srtとcd2.srtという2つのsrtファイルがあります。残念ながら、srtoolはもはやどこでも利用できません。これは数年前に提起された同じ質問に対する答えでした。

2つの* .srtファイルをマージする方法

しかし、まだ十分ではありません。頑張ったhttps://tracker.debian.org/pkg/pysrt、srtファイルの結合を除くすべての操作を実行できます。 :(

githubも探してみましたが、このような項目だけを見つけました。

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

より良い方法をご存知の方は、共有してください。また、いくつかのオンラインソリューションも見てきましたが、残念ながらすべてが成功しませんでした。

ベストアンサー1

これが私がする方法です:

まず、最初のsrtファイルの終了タイムスタンプを確認しました。私の場合、最初のタイムスタンプの直後に2番目のタイムスタンプが開始されたため、移動時間範囲を簡単に推論できました。

これにより、あなたの答えに対するコメントで@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

これで、新しくマージされたビデオファイルで字幕が正しく機能します!

おすすめ記事