Inconsistent Framerates

Started by DOP, April 11, 2019, 11:33:29 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DOP

Shooting in 1080p 30fps mode in the Canon menu without any Framerate override enabled in ML (edit: 6D). After exporting as a ProRes proxy file via MLV App the frame rates are inconsistent / incorrect in most of the clips.





This is causing me headaches in the post workflow because near the end I replace the proxies with master that are processed in Davinci Resolve which will of course have the correct 29.97 fps frame rate and thus won't exactly match the original proxy clip and will cause a re-linking error.

Posting here because I was told that the frame rate is determined by ML itself and has nothing to do with MLV App. Is this true and if so is this expected from ML? Is yes is there a way to force it to a consistent frame rate while it's recorded? Maybe just use frame rate override?

I am able to force the Framerate in MLV App but very curious why they end up off in the first place.
Canon 6d / 70d

yourboylloyd

Quote from: DOP on April 11, 2019, 11:33:29 PM
After exporting as a ProRes proxy file via MLV App the frame rates are inconsistent / incorrect in most of the clips.

Can you give more details on the process? My 5D always give me the correct framerate.

What are you using to make the original "non-proxied" master footage? Are you using DNG's?

Are you exporting using Prores ffmpeg Kostya or ffmpeg Anatolyi codec? Is your framerate override on in MLVApp?

Quote from: DOP on April 11, 2019, 11:33:29 PM
Is yes is there a way to force it to a consistent frame rate while it's recorded? Maybe just use frame rate override?
Maybe you should just try the framerate override in ML in-camera to see if that fixes the issue. Don't know if that will de-sync the sound though
Join the ML discord! https://discord.gg/H7h6rfq

DOP

Quote from: yourboylloyd on April 12, 2019, 02:50:25 AM
Can you give more details on the process? My 5D always give me the correct framerate.

What are you using to make the original "non-proxied" master footage? Are you using DNG's?

Are you exporting using Prores ffmpeg Kostya or ffmpeg Anatolyi codec? Is your framerate override on in MLVApp?

Workflow:
- ProRes proxies created in MLV App using default settings, which I think is Kostya but have to check
- ...

Actually that's all that matters right now because those are what's ending up with inconsistent frame rates. I assumed it was due to MLV App but was told by the dev it's straight from ML.

Quote from: yourboylloyd on April 12, 2019, 02:50:25 AM
Maybe you should just try the framerate override in ML in-camera to see if that fixes the issue. Don't know if that will de-sync the sound though

I am already using framerate override in MLV App although some snuck through due to a bug / missing feature where MLV App wouldn't retain that setting between sessions (now fixed in source code).

Before experimenting with framerate override in ML directly I wanted to see if this is a known thing. Seems odd that ML itself would record inconsistent frame rates. 
Canon 6d / 70d

a1ex

Camera model?

On some models, at certain frame rates, Canon firmware flips the FPS back and forth between two values, and the average frame rate is going to be the requested one, from Canon menu (in your case, 29.970). When recording MLV, only one LiveView frame is checked to find out the frame rate, so... ML is going to pick one value (either slightly above or slightly below the actual FPS).

To work around this in ML, I can imagine two approaches:
- round the reported frame rate to standard values (23.976 / 25.000 / 29.970 / 50.000 / 59.940) if FPS override is not used and timer B differs by less than one unit from the value required by the standard frame rate (preferred)
- average the frame rate over a couple of frames (maybe using a moving average), but one may need one second or so to get consistent results (and even so, I wouldn't exclude a round-off error every now and then).

If you use FPS override, ML will keep things simple and will pick one value for the timers (i.e. it will not switch back and forth). With Exact FPS it's going to try to find an exact match, otherwise it will just pick something close (but consistent as long as you don't change the settings).

DOP

Quote from: a1ex on April 12, 2019, 08:33:04 AM
Camera model?

6D. Sorry, meant to mention that but clearly forgot.

Quote from: a1ex on April 12, 2019, 08:33:04 AM
On some models, at certain frame rates, Canon firmware flips the FPS back and forth between two values, and the average frame rate is going to be the requested one, from Canon menu (in your case, 29.970). When recording MLV, only one LiveView frame is checked to find out the frame rate, so... ML is going to pick one value (either slightly above or slightly below the actual FPS).

Makes sense

Quote from: a1ex on April 12, 2019, 08:33:04 AM
To work around this in ML, I can imagine two approaches:
- round the reported frame rate to standard values (23.976 / 25.000 / 29.970 / 50.000 / 59.940) if FPS override is not used and timer B differs by less than one unit from the value required by the standard frame rate (preferred)
- average the frame rate over a couple of frames (maybe using a moving average), but one may need one second or so to get consistent results (and even so, I wouldn't exclude a round-off error every now and then).

The first option seems the most reasonable and accurate. Unless FPS override is chosen there should be no reason someone would need or expect the fps to be different from one of the standards so simply forcing it to the closest match makes sense. Seems that would avoid any quirks, miscalculations, etc that might be introduced in the second approach.

Quote from: a1ex on April 12, 2019, 08:33:04 AM
If you use FPS override, ML will keep things simple and will pick one value for the timers (i.e. it will not switch back and forth). With Exact FPS it's going to try to find an exact match, otherwise it will just pick something close (but consistent as long as you don't change the settings).

I might try this next time to keep things clean and simple.  Thus far I have used the Framerate override in MLV App when exporting but was curious if it might cause jitter if it's being forced / conformed to something is wasn't recorded at.  Sound like doing it at that stage or the ML recording stage via FPS override will have similar results? What would the pros / cons to each method be? (i.e. in ML vs MLV App)
Canon 6d / 70d