Hi HN! I built VAM Seek because I was frustrated with 1D seek bars – you never know where you're going until you get there.
VAM Seek renders a 2D thumbnail grid next to your video. Click any cell to jump. All frame extraction happens client-side via canvas – no server processing, no pre-generated thumbnails.
- 15KB, zero dependencies
- One-line integration
- Works with any <video> element
Live demo: https://haasiy.main.jp/vam_web/deploy/lolipop/index.html
Would love feedback!
You want to precompute the contact sheets and serve them to users. You can encode them with VP9, mux to IVF format, and use the WebCodec API to decode them in the browser (2000B-3000B per 240x135 frame, so ~3MB/hour for a thumbnail every 4 seconds). Alternatively, you can make the contact sheets with JPEG, but there are dimension restrictions, reflow is slightly fiddly, and it doesn't exploit intra-frame compression.
I made a simple Python/Flask utility for lossless cutting that uses this to present a giant contact sheet to quickly select portions of a video to extract.
reply