Perenista
2nd February 2026, 00:44
I'll explain what my problem is.
I have 2 sources
1) Original Blu-ray disc. 23.976 fps
2) A 2nd one, in 24 fps.
THE GOAL is:
- Put the PGS subtitles from #1 into #2. So, change fps from 23.976 to 24. Can't make them into SRT (already have those, BTW).
The subtitles:
a) English
b) English SDH
c) Portuguese
d) English, audio commentary
Subtitle a) was converted successfully, using BDSup2Sub++
It worked, so it was in sync.
But...
Subtitles b) , c) and d) didn't work. All of them out of sync, and only slightly changed.
b) through d) appears to still be in 23.976. Even though I asked this app to explicitly change to 24.
I asked ChatGPT what went wrong, and this was the only explanation given.
Any ideas how to fix this?
++++++++++++++++++++++++++++
PGS subtitles do not have an internal “FPS” concept. They consist of bitmap images referenced by absolute PTS timestamps.
BDSup2Sub++ “Change FPS” only works when the subtitle timestamps are linearly derived from the video timebase.
The PGS stream that converted correctly is a primary, linearly authored subtitle track (typical main Blu-ray subtitle).
The other PGS streams are event-based / non-linear, even though they are still valid Blu-ray PGS.
These secondary PGS tracks are often:
--- closed captions converted to PGS
--- SDH / alternate language tracks
--- reused or adapted subtitle assets
--- authored with irregular or anchored timestamps
Because their PTS values are not proportional to playback time, applying a global 1.001 stretch:
--- slightly shifts sync
--- but does not truly convert the timing
--- resulting in persistent desync that “feels like it stayed at 23.976”
------ Why it cannot be fixed while keeping the original PGS
If a PGS stream is non-linear / event-based, there is:
--- no single mathematical time function
--- no consistent FPS relationship
--- no way to “convert FPS” without breaking sync elsewhere
In such cases:
--- FPS change is fundamentally impossible
--- only offset or partial segment fixes may work (rare)
--- full reconstruction is required
---- The only 100% correct solution
---- OCR PGS → text subtitles
---- adjust timing at the correct FPS
---- regenerate a new PGS stream
This produces:
---- linear timestamps
---- correct sync
---- full compatibility
Summary
-- This is expected behavior
-- Not all Blu-ray PGS streams are FPS-scalable
-- BDSup2Sub++ works correctly
-- Only linearly authored PGS can be FPS-converted
-- Non-linear PGS must be rebuilt
++++++++++++++++++++++++++++
The problem with getting rid of a few of those subtitles is that I did a perfect 23.976 to 24 (and vice-versa) conversion of the audio. So everything from disc is in the 2nd source/file, and same for the latter. So that means a few subtitles can't work for what I need?
I have 2 sources
1) Original Blu-ray disc. 23.976 fps
2) A 2nd one, in 24 fps.
THE GOAL is:
- Put the PGS subtitles from #1 into #2. So, change fps from 23.976 to 24. Can't make them into SRT (already have those, BTW).
The subtitles:
a) English
b) English SDH
c) Portuguese
d) English, audio commentary
Subtitle a) was converted successfully, using BDSup2Sub++
It worked, so it was in sync.
But...
Subtitles b) , c) and d) didn't work. All of them out of sync, and only slightly changed.
b) through d) appears to still be in 23.976. Even though I asked this app to explicitly change to 24.
I asked ChatGPT what went wrong, and this was the only explanation given.
Any ideas how to fix this?
++++++++++++++++++++++++++++
PGS subtitles do not have an internal “FPS” concept. They consist of bitmap images referenced by absolute PTS timestamps.
BDSup2Sub++ “Change FPS” only works when the subtitle timestamps are linearly derived from the video timebase.
The PGS stream that converted correctly is a primary, linearly authored subtitle track (typical main Blu-ray subtitle).
The other PGS streams are event-based / non-linear, even though they are still valid Blu-ray PGS.
These secondary PGS tracks are often:
--- closed captions converted to PGS
--- SDH / alternate language tracks
--- reused or adapted subtitle assets
--- authored with irregular or anchored timestamps
Because their PTS values are not proportional to playback time, applying a global 1.001 stretch:
--- slightly shifts sync
--- but does not truly convert the timing
--- resulting in persistent desync that “feels like it stayed at 23.976”
------ Why it cannot be fixed while keeping the original PGS
If a PGS stream is non-linear / event-based, there is:
--- no single mathematical time function
--- no consistent FPS relationship
--- no way to “convert FPS” without breaking sync elsewhere
In such cases:
--- FPS change is fundamentally impossible
--- only offset or partial segment fixes may work (rare)
--- full reconstruction is required
---- The only 100% correct solution
---- OCR PGS → text subtitles
---- adjust timing at the correct FPS
---- regenerate a new PGS stream
This produces:
---- linear timestamps
---- correct sync
---- full compatibility
Summary
-- This is expected behavior
-- Not all Blu-ray PGS streams are FPS-scalable
-- BDSup2Sub++ works correctly
-- Only linearly authored PGS can be FPS-converted
-- Non-linear PGS must be rebuilt
++++++++++++++++++++++++++++
The problem with getting rid of a few of those subtitles is that I did a perfect 23.976 to 24 (and vice-versa) conversion of the audio. So everything from disc is in the 2nd source/file, and same for the latter. So that means a few subtitles can't work for what I need?