Cinematography: safe frame rates for PWM LEDs
Following on from previous posts on SFX electronics:
Here’s some data and discussion on reducing artefacts like flickering if using low-frequency PWM LED lighting on-camera.
Brief summary
How to avoid flickering and artefacts from PWM LED lighting?
Some options, best to worst:
- Don’t use PWM lighting (ideal world)
- Use high frequency PWM lighting (>= 2kHz lower end; ideally 20kHz for industry high-frequency) – no artefacts, love it
- Be clever when using lower frequency PWM lighting to minimise artefacts
The rest of this article is about the last option.
Data
Here’s some info on avoiding (in theory) artefacts like flicker, given some LED tech choices.
Base acquisition rates of 24, 25, and 50 fps are common, so for each of those I present an ideal shutter angle and cranked frame rates1 that work best for removing or reducing flicker/artefacts.
24 fps base
Assuming we’re using shutter angle of 172.8°:
| LED PWM | Example device/class | Base rate OK? | Ideal crank FPS | Maybe crank FPS |
|---|---|---|---|---|
| 400 Hz | old WS2812/WS2812B | ❌ | - | - |
| 580 Hz* | APA102 global brightness | ❌ | - | - |
| 1 kHz | some SK6812 variants | ✅ | 30 | - |
| 1.2 kHz | SK6812 | ✅ | - | 30 |
| 2 kHz | WS2813/14, newer WS2812 | ✅ | 30, 40, 48, 60 | 50 |
| 2.5 kHz | WS2801 class | ✅ | 30, 40, 48, 50, 60 | 72 |
| 4.7 kHz | SK9822 | ✅ | 48 | 30, 40, 50, 60, 72, 96, 100, 120, 144 |
| 8 kHz | GS8208 / CS8812 class | ✅ | 30, 40, 48, 60, 96, 120, 240 | 50, 72, 100, 144, 200 |
| 10 kHz | WS2816B class | ✅ | 30, 40, 48, 50, 60, 96, 100, 120, 200, 240 | 72, 144 |
| 19.2 kHz | APA102 RGB PWM | ✅ | 48, 72, 96, 144 | 30, 40, 50, 60, 100, 120, 200, 240 |
| 20 kHz | generic high-frequency PWM | ✅ | 30, 40, 48, 50, 60, 96, 100, 120, 200, 240 | 72, 144 |
| 26 kHz | HD107S class | ✅ | 30, 40, 48, 60, 96, 120, 240 | 50, 72, 100, 144, 200 |
| 27 kHz | HD108 class | ✅ | 30, 40, 48, 60, 72, 96, 120, 144, 240 | 50, 100, 200 |
Comments: At 24 fps there are no good PWM LED options below 1 kHz PWM.
Ideal crank FPS means at least 15 nominal PWM cycles2 per exposure3 and an integer number of PWM cycles per exposure.
Maybe crank FPS means at least 15 nominal PWM cycles per exposure, but not an integer number of cycles.
* APA102’s ~580 Hz figure refers to global-brightness modulation rather than its normal RGB PWM.
25 fps base
Assuming we’re using shutter angle of 180°:
| LED PWM | Example device/class | Base rate OK? | Ideal crank FPS | Maybe crank FPS |
|---|---|---|---|---|
| 400 Hz | old WS2812/WS2812B | ❌ | - | - |
| 580 Hz* | APA102 global brightness | ❌ | - | - |
| 1 kHz | some SK6812 variants | ✅ | - | 30 |
| 1.2 kHz | SK6812 | ✅ | 30, 40 | - |
| 2 kHz | WS2813/14, newer WS2812 | ✅ | 40, 50 | 30, 48, 60 |
| 2.5 kHz | WS2801 class | ✅ | 50 | 30, 40, 48, 60, 72 |
| 4.7 kHz | SK9822 | ✅ | 50 | 30, 40, 48, 60, 72, 96, 100, 120, 144 |
| 8 kHz | GS8208 / CS8812 class | ✅ | 40, 50, 100, 200 | 30, 48, 60, 72, 96, 120, 144, 240 |
| 10 kHz | WS2816B class | ✅ | 40, 50, 100, 200 | 30, 48, 60, 72, 96, 120, 144, 240 |
| 19.2 kHz | APA102 RGB PWM | ✅ | 30, 40, 48, 50, 60, 96, 100, 120, 200, 240 | 72, 144 |
| 20 kHz | generic high-frequency PWM | ✅ | 40, 50, 100, 200 | 30, 48, 60, 72, 96, 120, 144, 240 |
| 26 kHz | HD107S class | ✅ | 40, 50, 100, 200 | 30, 48, 60, 72, 96, 120, 144, 240 |
| 27 kHz | HD108 class | ✅ | 30, 50, 60, 100 | 40, 48, 72, 96, 120, 144, 200, 240 |
Comments: At 25 fps there are no good PWM LED options below 1 kHz PWM.
Ideal crank FPS means at least 15 nominal PWM cycles2 per exposure3 and an integer number of PWM cycles per exposure.
Maybe crank FPS means at least 15 nominal PWM cycles per exposure, but not an integer number of cycles.
* APA102’s ~580 Hz figure refers to global-brightness modulation rather than its normal RGB PWM.
30 fps base
Assuming we’re using shutter angle of 216°:
| LED PWM | Example device/class | Base rate OK? | Ideal crank FPS | Maybe crank FPS |
|---|---|---|---|---|
| 400 Hz | old WS2812/WS2812B | ❌ | - | - |
| 580 Hz* | APA102 global brightness | ❌ | - | - |
| 1 kHz | some SK6812 variants | ✅ | 40 | - |
| 1.2 kHz | SK6812 | ✅ | 40, 48 | - |
| 2 kHz | WS2813/14, newer WS2812 | ✅ | 40, 48, 50, 60 | 72 |
| 2.5 kHz | WS2801 class | ✅ | 50, 60, 100 | 40, 48, 72, 96 |
| 4.7 kHz | SK9822 | ✅ | 60 | 40, 48, 50, 72, 96, 100, 120, 144 |
| 8 kHz | GS8208 / CS8812 class | ✅ | 40, 48, 50, 60, 96, 100, 120, 200, 240 | 72, 144 |
| 10 kHz | WS2816B class | ✅ | 40, 48, 50, 60, 100, 120, 200, 240 | 72, 96, 144 |
| 19.2 kHz | APA102 RGB PWM | ✅ | 40, 48, 60, 72, 96, 120, 144, 240 | 50, 100, 200 |
| 20 kHz | generic high-frequency PWM | ✅ | 40, 48, 50, 60, 96, 100, 120, 200, 240 | 72, 144 |
| 26 kHz | HD107S class | ✅ | 40, 48, 50, 60, 100, 120, 200, 240 | 72, 96, 144 |
| 27 kHz | HD108 class | ✅ | 40, 50, 60, 72, 100, 120, 200 | 48, 96, 144, 240 |
Comments: At 30 fps there are no good PWM LED options below 1 kHz PWM.
Ideal crank FPS means at least 15 nominal PWM cycles2 per exposure3 and an integer number of PWM cycles per exposure.
Maybe crank FPS means at least 15 nominal PWM cycles per exposure, but not an integer number of cycles.
* APA102’s ~580 Hz figure refers to global-brightness modulation rather than its normal RGB PWM.
Gory details
Here’s how the data above was derived:
We start with a base frame rate for shooting (say 24, 25, or 30).
From that we find out a shutter angle that gives a whole number of PWM cycles per exposure3 (which results in no flicker).
From there we work out the theoretical maximum crank fps that puts us at roughly 15 PWM cycles per exposure (rule of thumb).
And then we work out frame rates between base rate and the maximum that also give a whole number of PWM cycles in an exposure (we want to keep slow-motion footage on the table).
Generally speaking, what things contribute to flicker?
All of the following contribute to greater chance of getting flicker/artefacts:
- lower shutter angle (because it results in lower exposure)
- higher frame rate (because it results in lower exposure)
- lower LED PWM duty cycle (i.e. lower brightness) for any one of the LEDs (because the average light is focused into a smaller amount of time)
But these only apply if we’re not using one of the ideal frame rates + shutter angle given in the data earlier.
If you’re using an ideal frame rate + shutter angle, in theory you’re golden; even reducing the brightness (duty cycle) down to very low values won’t cause artefacts.
A word on clamp/blowout
LEDs themselves usually won’t be what camera will expose for, and given their intensity, the core portion of LED light on the image can be blown out (clamped).
This can actually hide some artefacts because oscillation might be all above the clamp level and so hidden. But this shouldn’t be relied on in any way. In particular if there’s any spatial falloff of LED light (e.g. through cosmetics layers, reflections, flares from anamorphic lens) you might still see artefacts. Long side-flares from an anamorphic lens can look really nice but they might make any artefacts more obvious too.
Camera testing of low-frequency PWM lighting
This is just general good sense, but: test all conditions you will, or may want to, use. This might include:
- frame rates (including any crank for slow-mo)
- shutter angles
- incidental light conditions (day? night?)
- presence of other lighting equipment
As a final tweak consider ClearScan/ECS/Synchro Scan (etc.) tweaking to fine-tune out any flicker if possible. Even if the maths is all correct (see earlier data), low frequency PWM LEDs might not nail their stated frequency: your 400Hz PWM might actually be 397Hz, and so on.
What about readout time?
Readout is the time taken to acquire an image on a rolling-shutter camera (which is most of them).
Readout time does not itself contribute to LED flicker per se.
It does affect how any PWM artefacts are stretched down over the image: the number, spacing and movement of visible bands.
If you do have artefacts, lower readout times may be preferable: this will result in more gradual gradient. Higher readout times will look more like obvious banding.
Readout values for some common digital cinema cameras:
| Camera | Readout (ms) |
|---|---|
| Sony VENICE 2 | 3.0 |
| Apple iPhone 15 Pro | 4.7 |
| ARRI ALEXA Mini LF | 7.4 |
| ARRI ALEXA 35 | 7.6 |
| RED V-RAPTOR 8K VV | 8.0 |
| Sony FX6 | 8.7 |
| Blackmagic URSA Mini Pro 12K | 15.7 |
| Sony BURANO | 18.9 |
| Blackmagic Pocket Cinema 6K | 19.8 |
cranking usually used to create slow-motion footage ↩︎
at least 15 PWM cycles per exposure seems to be a widely accepted rule-of-thumb for avoiding artefacts ↩︎ ↩︎ ↩︎
exposure means sensor exposure time per frame: \( T_E = \frac{1}{f_F}\frac{\theta}{360^\circ} \), where \( f_F \) is fps and \( \theta \) is shutter angle. Example: 24 fps with 180° shutter angle means exposure time of 1/48 sec. ↩︎ ↩︎ ↩︎ ↩︎