How to sync Timeline to 23.976FPS?

Hi!

I’m encountering a situation that seems like it might be a bug. But I thought I’d post here first to see if there’s a known solution, or if I’m doing something wrong.

I’m working with a Video file that is at 23.976 FPS.

But the timecode on my timeline is gets gradually more and more out of sync. By about 4 minutes, 20 seconds, the Shotcut timeline is about 6 frames ahead.

This behaviour suggests the timeline is operating at 24FPS.

4:20 = 260 seconds.
A difference of .004 frames per second would add up to .024 * 260 = 6.24 frames.

If I look in properties of my source material, the framerate is 23.976.
If I look in Settings->Video Mode it is 23.98
If I look in the Project tag of my .mlt file I see frame_rate_num=“24000” frame_rate_den=“1001” = 23.976

So it looks like everything is set up correctly. But the timecode in my project does not match the timecode of the burnin. And if it type in the same timecode into Shotcut and into Adobe Premiere they land on different frames.

Is there any way to get Shotcut’s timeline and timecodes to work properly in 23.976 FPS project?

I’m trying to use Shotcut to create Streamers and Punches for a film score, and this is making things really difficult.

Thanks for any assistance!

Maybe this is the difference between drop-frame and non-drop frame. Try checking the time format.

Another possibility is that Shotcut might be having trouble performing frame accurate seeking in your file. As a test, you could try the “Convert to Edit Friendly” conversion in Shotcut and see if the converted file performs any better.

How did you make that? The oval after the timecode looks like it is not made with Shotcut.

Checking some code, and we do not actually implement drop-frame for 24000/1001, only 30000/1001 and 60000/1001. I guess that is the problem: your clip is burned in with drop-frame timecode but our timecode is not doing it.

A hint we and others use is to make the last separator in timecode a semi-colon (;) when drop-frame is being used. You will notice that it never appears on our 23.98 fps video modes.

According to this article from a reputable source, “there is no Drop Frame standard for 23.98fps because there’s no amount of frame numbers that can be dropped from the timecode to make it fit neatly into real time.” Here is another article that talks a little about it including a pseudo-drop-frame for 23.98 fps:

As a test, you could step through the video carefully and find the exact frames where they lose sync. Which timecode is skipping or duplicating a number?

Here is yet another article also from reputable source
https://support.telestream.net/s/article/Time-code-for-23-976-frames-per-second-video

Maybe for this frame rate, you are best off to use Settings > Time Format > Clock.

Thanks for the prompt reply! I will take a look a some of these resources. But at the moment I’m under deadline so I’m moving ahead with some workarounds.

A brief outline of my situation in case it helps:

I’m working on a film score, and need to add some streamers and punches. These are basically just shapes that overlay the film. A green bar rolls from left to right across the screen, and when it gets to the right side, an orange circle flashes. These are used to help musicians sync their performer to the picture. (sorry if you already know that)

Here’s a video of how to do them in Vegas:

I don’t have Vegas, but I have used Shotcut for several other video editing tasks. I was quickly able to figure out how to get the same result in Shotcut by cropping color swatches and using keyframes to move the crop around. It’s a lot easier than what this guy is doing in the video. Shotcut is great!!

Workflow:
My producer provides me his film file in 23.976FPS.
The film is exported from Adobe Premiere
I drop it into Logic Pro X

In Logic, I spot the film and place markers for key events in the music.
I use the time codes from the list of markers to decide where to put my streamers.

Now I open Shotcut and build the streamers according to the timecodes I decided in Logic.

The problem is, when I type those timecodes into Shotcut, I land on a different frame.

Honestly, I was only able to look briefly through these resources because I need to get these streamers in and prep for the recording session. The technical challenges here make sense, especially given “there is no Drop Frame standard for 23.98fps."

But I will say that when my producer gives me a timecode from Adobe Premiere and I type it into Logic we always land on the same frame. And vice versa. If the same applied to Shotcut, it would really help this workflow!

For now, the producer gave me a copy of the film with the timecode burnin, and I’ll use that to place my events in shotcut, disregarding shotcuts timecodes. It will work well enough for this scene.

But if this is solveable I’d be very interested in making the workflow that much cleaner.

Can you give more details about what you mean by the “Convert to Edit Friendly” conversion? I haven’t done something like that in Shotcut before.

Thanks again for the prompt reply. Sorry I haven’t had a chance to review all that material thoroughly. I will after this recording session comes and goes. But I did want to quickly get back to you with exactly what I’m trying to do in case it helps lead toward a simple solution.

As a test, you could step through the video carefully and find the exact frames where they lose sync. Which timecode is skipping or duplicating a number?

It starts to get off at 42 seconds. It’s skipping frame 00:42:23.

It skips others after that. By four and a half minutes, it’s 5 or 6 frames off.

I see what you see now. What we are seeing in Shotcut is actually drop-frame timecode despite what I wrote before. What “there is no Drop Frame standard for 23.98fps" means is there is no standard cadence to the dropped frames, and I was looking at our code for applying a standard cadence. Actually, Shotcut currently only implements non-drop frame for 30000/1001 and 60000/1001. Now we can see that your video file with burned in timecode is using non-drop frame, and Shotcut does not currently implement that for 24000/1001. I can add it for the next version.

Here is how it would look using our timecode burning filter:

This would be amazing!! Thank you.

Hi! I’m just getting started on the next phase of this project and decided to check if there was a new version of Shotcut. I was so thrilled to find that this issue has been fixed. Working like a charm. Thank you!!

In the application menu choose Help > Upgrade…
Then, look in the middle of the window where messages are displayed
image