Inventor Projects

$200 a Reel Was Too Much, So He Built a Raspberry Pi Film Scanner

June 13, 2026
3 min read
A vintage film projector and Raspberry Pi board beside a large 16,000 frames saved headline

David Stein combined a 1928 projector, Raspberry Pi 5, Arduino, microscope lens, and FFmpeg to rescue thousands of frames from decaying football film.

David Stein went looking for film of his father's high school football games and found a preservation problem instead. Some reels were missing. Others were decaying in a school storage room. Professional scanning cost about $200 per reel, and there were far too many reels to save that way.

So Stein built a scanner around a projector made in 1928.

The finished machine is a good example of maker engineering at its best. It does not replace every old part with something new. It gives a careful old mechanism a modern camera, computer, and software pipeline so the fragile media can keep moving without being destroyed.

The film was already running out of time

Stein's grandfather had recorded some of the games on Super 8 film. His father's school had also donated 16mm game films to the Heinz History Center in Pittsburgh, but the available archive did not include everything.

Stein eventually found more reels at the school, including three of his father's games and dozens from other teams and seasons. The acetate film was developing vinegar syndrome, a form of chemical degradation that produces a vinegar smell while the material shrinks and becomes brittle.

That condition made speed important, but it also made rough handling dangerous. The transport system needed to move old film gently and consistently enough for a camera to capture every frame.

A 1928 projector became the transport

At the center of the build is a 1928 film projector. Stein modified it to move film through the gate precisely and communicate with a Raspberry Pi camera setup. A microscope lens points at the film gate so each tiny frame can fill the sensor.

The first version used a Raspberry Pi 4 and stopped to photograph every frame. A 400-foot reel contains about 16,000 frames, and scanning one took more than 18 hours.

The upgrade to Raspberry Pi 5 changed the method. Instead of stopping the film for each exposure, the machine lets it run continuously. That cut the capture time for a reel to about four hours and reduced the repeated start-stop stress on fragile material.

Motion is frozen in software

An Arduino and two TB6600 drivers control the transport and take-up reels at eight film frames per second. The system uses a ten-second soft ramp so it does not jerk the film when starting.

The Raspberry Pi camera records at 30 video frames per second in 60-second segments. A five-millisecond exposure freezes each film frame while it is moving through the gate. That means the camera captures several candidates for each original frame.

After capture, FFmpeg and a Python pipeline extract the images and select the sharpest frame from each group. The result is a hybrid of mechanical steadiness and computational cleanup: the projector keeps the material safe, while the software handles timing and selection.

Preservation becomes personal

The specifications are clever, but the reason for the build gives them weight. The players in the films are now in their seventies. Stein said the restored footage makes them seventeen again for a few minutes, and his father was able to share his games with him.

The scanner also reached beyond one family. Stein connected with a player from an older reel who now calls him to discuss the games.

This is what makes the project more than a fast DIY scanner. Every engineering decision answers a human constraint: the reels are decaying, the professional option is too expensive, the film cannot take rough handling, and the people in the footage are still here to see it. A Raspberry Pi did not merely digitize 16,000 frames. It helped return a piece of living memory before the original disappeared.

Primary sourceby raspberrypi.comView original

Comments

Member comments are temporarily unavailable.

Log in to join the discussion.