Back in the day a miniature television, probably on a wristwatch, was the stuff of science fiction. Now, it’s something which can be done with a commodity microcontroller, as [Atomic14] shows us with the ESP32-TV that plays both video and sound. Even with modern silicon it’s still somewhat pushing the envelope.
As he explains in the video below the break, not all formats are simple enough to be decoded on the fly by a microcontroller. But he finds an AVI file to be within its capabilities which can be created with a bit of ffmpeg wizardry. The board is a fairly standard ESP32 device with an I2C bus, and the video stream isn’t too fast for this meager interface. You’ll maybe recognize the Muppets clip, but it’s possible that the early-80s BBC comedy staple The Young Ones might have passed you by if you’re not British.
We think this code is likely to be of use in quite a few projects, and it would be great to see it further refined. Small video players for not a lot of money can never be a bad thing.
Previous ESP32 video projects which have appeared on these pages have been more likely to involve driving a display directly.
To complement the incomplete / misleading hackaday summary: Video format is MJPEG in AVI with 280×240 pixels @ 15 FPS. The display bus is SPI at 80 MHz, not I2C.
Reminds me of Video for Windows from Windows 3.1x.
Version 1.0 ran on 16-Bit 80286 PCs, still. It supported Microsoft Video 1.
Common resolution was 160×120 pixels with 15 fps or so.
Shut up and take my money!¹ :-D
I want this in the scope of a Playstation-force-feedback-plastic-gun-controller.
On screen the far view and through the scope the zoomed in view.
I want to play all modern warfare sniper level with this, again, imediatly.
Crowdfunding takes to long, hey china can you build this yesterday and sell it tomorrow :-D
¹:credits to rene walter, thanks for this internet juwel.
Need more resolution? Just use MORE ESP32 + I2C displays, with some proper clock sync
“Back in the day a miniature television, probably on a wristwatch, was the stuff of science fiction.”
Actually, the problem wasn’t the electronics. It was the power supply, a large external battery.
Sure, those TV wristwatches often needed an external tuner box, too, but AV (composite video) would perhaps been possible without it. The technology was there for ~50 years (since the 70s).
I2C? No. Wrong.
chatgpt is missing the i in ai, the simple answer is mpeg1, (good old video cd).
mjeg is image compression, mpeg is video compression.
google pl_mpeg.h
So far all video solutions for the ESP32 were relying on mjpeg (Motion-JPEG). I would be surprised if this would use a different solution…
Hey, that’s cool! Great job.
You may want to check out Rossum’s ESPFLIX. It is a cut above the rest, implementing a streaming MPEG1 decoder, as well as bitbanging an NTSC signal.
Mjpeg is Motion JPEG compression.
ESP-32CAM uses it among others.
still just image compression,
and unlike animated gif & png, it only stores complete images, not the difference to last frame.
proper video from an esp32.. would require a proper video format.
On DOS platform, there used to be FLIC format (FLC/FLI)..
https://www.compuphase.com/flic.htm
On Amiga platform, there was IFF ANIM and MovieSetter format.
https://www.randelshofer.ch/animations/amiga.html
what uncivilized barbarians have not binged The Young Ones????
Not to get recursive, but probably the young ones.
For better compression, it might be possible to adapt the MPEG1 decoder from Rossum’s very impressive ESPFLIX project.
I would like to know more about the display. Where can I get it?
If this is going into a wristwatch form factor, then the video will get very jerky indeed.
Composite display would be nice too, they are still pretty expensive in 1-2 inches size.