I’m just here to post my solution for someone else’s benefit.
The problem I was having is described by Fransisco:
The error message pointed at a certain timecode, so go check on the subtitle on the corresponding timecode and there should be some block that sticks to next block. Just separate those blocks (even by 1 frame will fix it). The problem is if you have multiple errors like this, the next time u try to build the DVD it’ll show a similar error with a different timecode, so again u’ll have to go and separate the 2 subtitle block.
After getting frustrated spending 3-4 hours fixing each block and only getting about 30 minutes of an 80 min feature, I decided to fall back on my programming experience.
I wrote a script that would create a new subtitle .txt file, based off the original, but with altered timecode so that between each line of subtitle is 1 frame gap.
The code completed, new subtitle file imported, and in that nail biting build… finished without any errors.
I wrote the code in Ruby because I was most familiar with it. You’ll have to look up how to run the code, either inside of some coding software, or as an executable on your machine. I was able to cheat and run it in my text editor (TextMate). Mac or Linux users could turn it into an executable (adding “#!/usr/bin/env ruby” as the first line) and running it through Terminal. I have no idea how to do things on Windows. I’m sorry!
Link to code on github.
Here is the code:
new_file_path = "path/to/subtitle_fixed_file.txt"
File.truncate(new_file_path, 0)
new_file = File.open(new_file_path, "w")
file = File.open("path/to/subtitle_file.txt", "r").readlines.each do |line|
reg = /;(\d{2}) \d{2};/
match = line.match(reg)
if match.class == MatchData
m = match[1]
frame_number = m.to_i
if frame_number < 23
frame_number += 1
end
new_frame = frame_number.to_s.rjust(2, "0")
new_line = line.gsub(/(;)(#{m})(\s\d{2})/, "\\1#{new_frame}\\3")
else
new_line = line
end
new_file.puts new_line
end
new_file.close