字幕ファイル(srt)のタイムコードを一括修正するスクリプトを紹介します。
Davinci Resolveでは出力される字幕ファイルのタイムコードがずれるバグがあります。Davinci Resolveで出力された字幕ファイルをこのスクリプトで処理することにより、ズレを修正することができます。
pysrtのインストール
Pythonからsrtを取り扱うには、pysrtというライブラリが便利です。
GitHub - byroot/pysrt: Python parser for SubRip (srt) files
Python parser for SubRip (srt) files. Contribute to byroot/pysrt development by creating an account on GitHub.
pysrtを使うと、いともかんたんにsrtファイルの内容を編集することができます。
pip install pysrt
pipでインストールしておきましょう。
タイムコードをずらすスクリプト
タイムコードを一気にずらすにはどうすればよいのでしょうか。
さっそくスクリプトをご紹介しましょう。
import pysrt
import os
import sys
print("python srtshift.py [filepath(.src)] [seconds]")
# ファイルパスを取得する
filepath=os.path.abspath(sys.argv[1])
# コンソールにファイルパスを表示
print('target file:'+filepath)
print('shift time:'+sys.argv[2])
print()
# ファイルを開いて、タイムコードをシフトする
subs = pysrt.open(filepath)
subs.shift(seconds=float(sys.argv[2]))
subs.save(filepath, encoding='utf-8')
# 完了
print('finish!')
第1引数にSRTファイルのパス、第2引数にシフトさせたい秒数を指定して実行すると、SRTファイルのすべてのタイムコードを修正することができます。
実行してみる
Windowsの方はコマンドプロンプト、MacOSの方はターミナルを開いて、以下のコマンドを実行します。
python srtshift.py "ファイルパス" "ずらす秒数"
例えば、3秒遅らせるには以下のようにします。
python srtshift.py "c:\Users\user\Desktop\字幕1.srt" +3
シフトする秒数は、少数で指定することもできます。
python srtshift.py "c:\Users\user\Desktop\字幕1.srt" +3.2
コメント