Log in

View Full Version : Some PGS subtitles can't have their fps changed


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?

DJ Bobo
31st March 2026, 14:01
1) To make sure the conversion worked in the first place, check the timings: from 23,976fps to 24fps, divide the original time by 1001 and multiply by 1000.
So a subtitle starting at 1h needs to become 0h 59min 56s 404ms
2) Make sure the subtitle delay is correct; meaning all output files have the same timing for the first subtitle at the end

Bandits
31st March 2026, 19:11
If

a) English
b) English SDH
c) Portuguese
d) English, audio commentary

are all 24fps pgs, BDSup2Sub can easily convert them to 23.976 fps.

There are many versions of BDSup2Sub out there. They all have different bugs. I use 4.0.0 because I understand its bugs and it does what I need without issues.

If you were able to do the first file you should be able to do the rest. Try closing the program after each file and make sure you choose the correct settings when opeing the file to be changed.