PinShot - GPS Camera
Need the same stack on your project? Hire Flutter developers in India.
Planning an app? See how we build mobile apps. Running an agency? We build them under your name as white-label apps.
We built this app for ourselves and publish it under our own name. It is live, and you can install it now.

Project Overview
PinShot – GPS Camera is a smart photography application for Android and iOS, designed to capture photos with live GPS location, map coordinates, date, and timestamp overlays. This project focused on building a modern and easy-to-use camera app for travelers, field workers, delivery services, and users who want accurate location-based photo documentation.
The app combines photography with real-time geo-tagging technology, allowing users to capture meaningful memories and work-related proof directly within the camera interface. With a clean UI, fast performance, and location tracking features, PinShot delivers a seamless and reliable photography experience.
The hard part: stamping the location onto video
A stamped photo is one image. The app draws the place, the coordinates and the time onto it, writes the GPS position into the file and saves it. A stamped video is every frame of a recording, up to five minutes of it, and the stamp has to sit on all of them without spoiling the picture underneath. So after you press stop, the phone has to read the recording, lay the stamp over it and encode the whole video again. The encoder is where the trouble started.
The first version drew the stamp with FFmpeg's drawtext filter: the location, the latitude and longitude and the time, each written as text in a font bundled with the app, then encoded with libx264 on its fastest preset, with the audio copied across untouched. Three more versions of the overlay followed, named in our history as a second version, a better one and a fixed one.
The failures the code still records came from Android's hardware encoder, MediaCodec. With the overlay's pixel format left on automatic, MediaCodec gave black frames, or a video where the stamp was silently missing. When FFmpeg filtered the input first, MediaCodec's encoding gave green or black output. In each case the app still produced a video file. It was the picture that was wrong, a failure you only see when you play the result back.
What replaced it was a change in where the stamp is drawn. The stamp is now drawn once, in Dart, by one renderer for photos and videos alike. For a photo it paints straight onto the image. For a video it draws the same stamp panel as a PNG, and FFmpeg lays that picture over the footage instead of drawing text itself. Before it does, both are put into the same shape: the video frames into yuv420p, the stamp into yuva420p, the variant that keeps its transparent background. The panel sits at the horizontal centre, 40 pixels from the bottom. On Android the result is encoded in software with libx264 in yuv420p; on iOS, Apple's VideoToolbox does the encoding, with a software fallback allowed. While FFmpeg works, the app shows how far the stamping has got. The change went in as a single commit, named Improved stamp.
The result is that a photo and a video taken at the same spot carry the same panel, drawn by the same code, so a fix to the stamp is a fix to both. You can check it in a minute: install PinShot, record a short clip with the stamp switched on, and the panel you see on a photo is the one on every frame.
What we would do differently: write down which phones showed the black and green frames, at the time they showed them. The comments in the code name the failure, not the devices, so whoever touches the encoder next starts from a comment rather than a list of phones to test on.
Challenges
- Integrating accurate GPS and map location services
- Displaying real-time location and timestamp overlays
- Maintaining fast camera performance and responsiveness
- Creating a clean and user-friendly camera interface
- Optimizing battery and location usage
- Supporting different Android device resolutions
Development Strategy Implemented
- Real-time GPS and map integration
- Date, time, and geo-tag photo overlays
- Responsive Android camera UI/UX design
- High-performance image processing optimization
- Easy photo sharing and export functionality
- Lightweight and scalable application architecture
- Location permission and secure data handling
- Travel and fieldwork-focused usability improvements
Results
PinShot is our own GPS camera, built and shipped by Boffin Coders and live on Google Play and the App Store. Through optimised performance, responsive interface design and accurate location integration, it stamps the place, the map and the time onto each photo, which is what travel records and fieldwork proof need. Install it and check the stamp on your own photos.