QR Cinema
Someone turned text into QR codes and packed them into a video file.
A project called memvid. A CS grad student released it in the summer of 2025, and it picked up 14,000 stars on GitHub. Split text into chunks, gzip them, encode each chunk as a QR code image. Write those images into a video, one frame per chunk. When a search query comes in, look up the frame number from a FAISS index, seek to that frame, read the QR code, decompress, and feed it to an LLM. A memory store for AI.
I did not see that coming.
H.264 and lossy compression are not something you can apply without understanding. If all you do is play video, you never need to know about CRF, keyframe intervals, or tune parameters. But if you want to repurpose a codec as a data store, you need to understand the internals. H.264 is lossy by design. It throws away information. QR codes tolerate zero errors. On paper, they are a terrible match. But set keyint=1 to make every frame a keyframe, set tune=stillimage to optimize for static content, and black-and-white grid patterns survive at near-lossless precision. Getting to that combination requires knowing what is happening inside the codec. A hack born from crossing two domains of knowledge.
Licensing is a concern. H.264 has MPEG LA's patent pool. H.265 has an even more tangled licensing landscape. An open-source project shipping a dependency on these codecs is walking through a legal minefield. And there it is again — ffmpeg. The encoding and decoding runs on ffmpeg. Even in the age of AI, that thing is behind every piece of multimedia.
From a data perspective, it actually makes sense. RAG knowledge bases and document archives are written once and rarely updated. A workload closer to OLAP or a data warehouse. Video files are sequential by nature and terrible at random updates, but for read-heavy data, that is not a problem. The high compression ratio of a video codec works in your favor. Pack immutable data tight, pull out the frame you need. As cold storage, the approach has real merit.
Then v2.0 dropped QR codes and video encoding entirely. Rewritten in Rust, migrated to a custom binary format called .mv2. Zstd compression, Tantivy full-text search, HNSW vector search. Latency at 0.025ms. A proper high-performance store.
The clever idea gave way to practical engineering. Chase performance long enough and you end up with a purpose-built format. But without that wild idea of stuffing text into video, 14,000 stars would never have happened. Technical correctness and the ability to capture attention live on different axes. If correctness were all that mattered, they should have built the custom format from the start. But then nobody would have looked.
I wanted to play that video file once. The one with QR codes lined up frame after frame. It probably shows nothing. But it was a beautiful detour.