The fastest camera feed is no video at all Replacing RTSP video with a Python script that serves fresh JPEG snapshots twice a second cut driveway-camera display lag from 12 seconds to effectively zero, according to a first-person engineering writeup. The author measured 12 seconds of delay on a reclaimed Android photo frame, reduced it to 5 seconds by sideloading VLC and setting network_caching_value to 200, then abandoned streaming after finding the camera's snapshot URL returned a single JPEG in 80 milliseconds. The writeup attributes the residual delay to player buffering, H.264 keyframe dependencies and stacked encoder/network/decoder costs, and notes the proxy keeps the camera password off the display device. The fastest camera feed is no video at all tldrPutting the driveway camera on a screen turned into a lesson in why live video is always late. Tuning the player got it from 12 seconds to 5. Swapping video for JPEG snapshots got it to none. This one started as “put the driveway camera on a screen” and turned into a small lesson about why live video is late, and what to do instead. It sits alongside the wall panel https://xydac.com/blog/cyd-smart-display/ , the cloud-locked LED controller https://xydac.com/blog/bridging-cloud-locked-led/ and the rest of the house I run from Claude Code https://xydac.com/blog/claude-code-home-assistant/ . The short version: my outdoor IP cameras showed up twelve seconds behind reality on a cheap display: an old Android photo frame I’d reclaimed, which is a story for another time. The usual fixes got it to five. Then I gave up on video entirely, and a small Python file serving JPEG snapshots twice a second now shows the same second the camera does. Measure before you tune I wanted just the cameras, full screen, current. Every guide says RTSP, so I pointed a player at the camera’s RTSP URL. The picture was uselessly late: someone could walk up, ring the bell, and still not be on screen. Before changing anything I wanted a real number. My cameras burn a clock into the corner of the image, as most do, so I captured the display and the camera stream at the same instant and compared the two timestamps: adb exec-out screencap -p frame.png & what the screen shows ffmpeg -rtsp transport tcp -i "$URL" -frames:v 1 mac.png & what the camera sends wait Both pictures carry the camera’s own clock, so the difference is exactly the lag added downstream, no clock sync needed. That mattered, because the camera’s clock was a few seconds off from my Mac’s. First measurement: 12 seconds . The dead ends The network. Not it. The same stream pulled with ffmpeg on my Mac was under 2 seconds behind. The lag lived in the player. While checking, I found a dumber problem: the main stream is 4K , and the display has a 2016-era phone chip. The camera’s second stream, the sub-stream nearly every IP camera offers, is 1280×720, an exact match for the screen. The player. MX Player had no buffer setting, so I sideloaded VLC, which hides one in a preferences file. My first edit crashed it on launch with a ClassCastException : Android preferences are typed, so the value had to be