2022年8月11日 星期四

FFmpeg : 修改 .srt 字幕檔內的時間

2022年8月11日 星期四

 FFmpeg 可以用來幫影片加字幕,那可以編輯字幕檔內,各段文字出現的時間嗎?

我找到了一部影片的 .srt 字幕檔,但是發現它的時間比影片晚了 15點多秒鐘,找了一下資料,利用 FFmpeg 的「 -itsoffset」參數,就可以控制字幕出現的時間。例如

ffmpeg -itsoffset 10 -i subtitle_file.srt  output.srt

它就會將 .srt 中的所有時間,通通加上10秒鐘,然後輸出到 output.srt。

如果時間用負數,例如:

ffmpeg -itsoffset -10 -i subtitle_file.srt  output.srt

它就會將 .srt 中的所有時間,通通提早 10 秒鐘。

哈!這樣是不是很棒!

不過,經過實際操作,「 -itsoffset」參數使用負數的時間,必須要「夠減」才行。像我的字幕檔中的內容大概像這樣:

1
00:00:01,000 --> 00:00:06,000
== xxx xxxx==

2
00:00:15,065 --> 00:00:16,266
xxxxxx?

3
00:00:16,266 --> 00:00:18,502
xxxxxxxxxxx

我想將每一行字幕,通通提早 16 秒鐘,就執行以下的指令:

ffmpeg -itsoffset -16 -i subtitle_file.srt  output.srt

第 1~2 行字幕因為不夠減,就無法正確的顯示了。

因此我做了兩個修正:

  • 改成通通提早 15 秒鐘就好(這樣子第2行字幕之後的,就不會有時間不足的情形)。
  • 手動修改 .srt 中的第一行字幕的時間為:
    00:00:15,000 --> 00:00:15,000

這樣子就可以使用底下提早 15 秒鐘的轉換指令:

ffmpeg -itsoffset -15 -i subtitle_file.srt  output.srt

實作的結果,還不錯!影片的語音跟字幕是對得上的。

相關文章


沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket