AI Golfer
011 Filming a Swing an AI Can Actually Read 1,976 words · 9 min

Filming Your Swing Indoors Without Ruining the Footage

Your camera is fine. Genuinely. The iPhone 13 sitting on a beanbag in your garage has a better sensor than the £4,000 rigs that TV coverage used in 2010, and the Pixel 8a is not far behind. The reason your indoor swing videos come back from Sportsbox AI with a spine angle that jumps 14 degrees at transition, or the reason HackMotion’s companion video looks like it was shot through soup, has almost nothing to do with the lens.

It’s the lighting. Specifically, it’s the fact that your garage or net bay is lit by two or three ceiling fittings directly above you, which means every part of your body that matters for tracking is in its own shadow, and your phone is compensating by dropping the shutter speed to 1/30th of a second. At 1/30th, a clubhead travelling at 100 mph moves roughly 4.5 feet while the shutter is open. Your arms smear. Your hips smear less but still enough. Pose estimation models were trained on clean, sharp human figures, and you’re handing them a watercolour.

This post is about fixing that with two lamps and three settings. It takes about twenty minutes and under £70 if you already own a phone.

Why indoor tracking fails in a way that looks like a camera problem

Every consumer AI swing tool that reads video (not radar, not a sensor strapped to your wrist) runs a pose estimation model first. Sportsbox AI 3D Golf, Swing AI, the body-tracking layer in Golfstat, the free MediaPipe-based tools people build on GitHub: they all locate somewhere between 17 and 33 keypoints on your body per frame, then infer joint angles from those points. Get the keypoints right and the analysis is useful. Get them wrong by six inches on a shoulder and you get advice about a swing you didn’t make.

Three things kill keypoint accuracy indoors, and they compound.

Motion blur from slow shutter. This is the big one. Your phone’s auto exposure sees a dim room and opens the shutter longer to gather light. Go outdoors at midday and your phone happily shoots 1/1000th because there’s a surplus of photons. In a garage at 200 lux, it will sit at 1/30th or 1/60th and there is nothing you can do about it except add light or force the setting.

Directional overhead light. Ceiling strips put hard shadow under your chin, in both armpits, and along the inside of your trail arm. The model looks for a shoulder joint and finds a gradient of black. Sportsbox’s own guidance asks for even front lighting, and there’s a reason: their model struggles most with trail shoulder and trail elbow, which are exactly the joints overhead lighting hides.

Flicker. Cheap LED and fluorescent tubes on UK mains pulse at 100 Hz (50 Hz mains, two peaks per cycle). Film at 120 or 240 fps and you get visible banding rolling up the frame, plus brightness that oscillates frame to frame. Some frames are 30% darker than their neighbours. The model’s confidence score drops on the dark ones and it interpolates, which is where those sudden 14-degree jumps come from.

Notice that none of this is resolution. You could film at 8K and still get rubbish keypoints if the arms are smeared. This is the core argument, and if you’re setting up a bay, put your money on lamps before you put it on a camera.

The two-lamp arrangement

Forget three-point lighting from film school. You want two lamps, both in front of you, both roughly at chest height, and both pointed at your body rather than at the ceiling.

For a down-the-line camera position (camera behind you, on the target line), place them like this:

                    [NET]
                      |
     LAMP A  ○        |        ○  LAMP B
   (45° left)         |      (45° right)
                      |
                   [GOLFER]
                      |
                  [CAMERA]
              (behind, hip height)

Lamp A and Lamp B sit ahead of you and out to each side, about 45 degrees off the target line, roughly 2 to 2.5 metres away. Chest height means around 1.2 m off the floor, which for most people is a cheap light stand at its middle setting or a lamp on a shelf. The point of this arrangement: your front and trail sides both get light, shadows fill each other in, and nothing is coming from directly above to carve black holes into your armpits.

What to buy. Two 100 W equivalent LED work lights from Screwfix or Toolstation run about £25 each and put out 8,000 to 10,000 lumens combined, which in a single-garage-sized space takes you from maybe 200 lux to somewhere between 900 and 1,400 lux at the hitting position. That is the difference between 1/60th shutter and 1/500th. If you want softer light, two Neewer 660 LED panels with diffusers are roughly £60 for the pair and dimmable, which matters if you’re also filming face-on and don’t want to squint.

The flicker problem needs one extra check. Anything cheap and non-dimmable is likely to pulse. Two tests, both free:

  1. Point your phone camera at the lamp and film 10 seconds at 240 fps. Play it back. Rolling dark bands mean flicker.
  2. Wave your hand fast in front of the lamp. A smooth blur is fine. A stroboscopic stutter (you see distinct hand positions) means it’s pulsing.

Fix by buying flicker-free rated lights, or by running the lamps on a DC supply, or by dropping to 120 fps instead of 240 fps, which halves the problem without eliminating it.

The shutter settings that actually matter

Now force your phone to use the light you’ve added. Auto mode will spend the extra light on lower ISO rather than faster shutter, which is exactly backwards for your purposes.

On iPhone, the stock Camera app won’t let you set shutter speed directly. Use Blackmagic Camera (free) or Filmic Pro (£26 one-off at time of writing). In Blackmagic Camera, tap the shutter control and set it manually. On Android, Open Camera (free) exposes shutter speed on most devices, and Samsung’s Pro Video mode does too.

Target numbers:

SettingTargetWhy
Shutter speed1/1000 s minimum, 1/2000 s preferredClubhead moves ~1.8 in at 1/1000 s, ~0.9 in at 1/2000 s
Frame rate120 fps240 fps worsens flicker and forces shorter exposure; 120 fps gives ~8 ms per frame, enough for transition detail
ISOWhatever the shutter demands, up to 1600Noise hurts pose models far less than blur does
Resolution1080p is plentySportsbox downsamples anyway; 4K at 120 fps eats storage for nothing

Some maths on why 1/1000 is the floor. A 100 mph clubhead covers 147 feet per second, or 1.76 inches per millisecond. At 1/250 s (4 ms) that’s 7 inches of travel during one exposure. At 1/1000 s (1 ms) it’s 1.76 inches. Your hands move slower, maybe 20 mph at impact, so at 1/1000 they travel about 0.35 inches. That’s a sharp hand position. At 1/60 s your hands travel 5.9 inches and MediaPipe places the wrist keypoint somewhere in the middle of that streak, with a confidence score that tells the downstream model to distrust it.

Worked example: a single garage, before and after

A reader setup I’d call typical. Single garage, 5.2 m by 2.6 m, two 4 ft LED battens on the ceiling, Skytrak at the mat, iPhone 14 on a tripod at hip height behind the ball, filming 240 fps in stock Camera.

Before, running the footage through Sportsbox AI 3D Golf:

Pelvis Sway (P1→P4):     -2.1 in  →  +0.4 in  →  -3.8 in   (oscillating, implausible)
Trail Elbow Flexion P4:  confidence 0.41  (flagged low)
Thorax Bend P7:          jumps 11.3° between consecutive frames
Frame brightness:        varies 22% frame to frame

The pelvis sway reading oscillating in both directions across the backswing is not a swing fault. It is the model losing the hip keypoints in shadow and re-finding them a few inches off. Acting on that number would have this golfer working on lateral stability they don’t lack.

After: two £25 LED work lights at 45 degrees and chest height, Blackmagic Camera at 1/1600 s, ISO 800, 120 fps.

Pelvis Sway (P1→P4):     -0.3 in  →  -1.1 in  →  -1.9 in   (smooth, monotonic)
Trail Elbow Flexion P4:  confidence 0.93
Thorax Bend P7:          max frame-to-frame change 2.1°
Frame brightness:        varies 3% frame to frame

Now the pelvis sway tells you something real: 1.9 inches away from target at the top, which is a genuine bit of sway worth addressing with a trail-hip-into-the-wall drill. Same golfer, same swing, opposite conclusion.

For the wider question of camera height, angle, distance and what a pose model needs from your framing regardless of where you’re filming, the pillar on filming a swing an AI can actually read covers the geometry side properly.

Background, clothing, and the net

Two quick wins that cost nothing.

Wear something that contrasts with your wall. If your garage is grey breeze block and you’re in a grey Ping quarter-zip, the model has to segment you out of a background the same luminance as your torso. Navy, black, or bright colours against a light wall all work. Avoid busy patterns, which confuse edge detection on limb boundaries.

Your net is probably the darkest object in the room and it’s directly behind the ball. On a face-on camera position that’s fine. Down-the-line, your hands and club pass in front of it at the top of the backswing, and a dark club against a dark net is invisible. Hang a light-coloured towel or a piece of white card on the net at about shoulder height, roughly where the club passes on the way up. Costs nothing and gives the model a background to see the shaft against.

What to practise once the footage is clean

Here’s the part people skip. The reason to fix lighting isn’t better-looking video, it’s that a handful of specific readings become trustworthy, and each maps to a drill.

Pelvis sway (Sportsbox) or hip shift. Once confidence is above 0.85, treat anything over 2 inches away from target at P4 as real. Drill: address ball with a headcover between your trail hip and a wall, half swings, keep contact.

Trail elbow flexion at P4. This one is the most lighting-sensitive number in the whole analysis because the trail elbow lives in shadow under overhead lights. Clean footage typically shows 85 to 100 degrees for a mid-handicap golfer. Under 70 means you’re likely collapsing. Drill: towel under trail armpit, half swings, towel stays put.

Lead wrist extension at P4 and P7. If you own HackMotion, the sensor gives you this directly and lighting is irrelevant. If you’re inferring it from video, you need the sharp hand positions that 1/1000 s gives you, otherwise the numbers are fiction. Video-derived wrist angles below 1/500 s shutter should be ignored entirely.

Sequencing timing. Frame rate at 120 fps means 8.3 ms resolution. Good sequencing shows pelvis peak rotational velocity, then thorax, then lead arm, then club, in that order with roughly 20 to 40 ms gaps. At 30 fps (33 ms per frame) you literally cannot resolve those gaps. This is the one metric where frame rate genuinely matters more than shutter.

One small thing about consistency

Mark your tripod feet on the floor with tape and mark your lamp positions too. A pose model’s absolute angle readings shift by a couple of degrees when the camera moves 20 cm, which means your week-to-week comparisons are only as meaningful as your setup is repeatable. Three strips of gaffer tape solve a problem most people never notice they have, because they blame the variation on their swing.