There’s practically an infinite supply of videos on the Internet. But there are limited ways to discover and view video content.
Rather than waste words trying to explain visual concepts, let me just show you. I took the top 1000 videos of all time on YouTube, and threw them into this special player I built:
People are great at processing moving images. And we should be, since our visual cortex takes up 1/3 of our brains. I wanted to create a viewing experience that took advantage of all this neural hardware. I wanted users to feel a pleasant flow as they decide what to watch, and quickly jump from video to video.
To that end, I implemented the minimum set of features to provide this experience. I didn’t want any other features — such as a speed control — that might introduce an additional cognitive loop. I want viewers to just let the visual data flow, and not concern themselves about whether to speed up or reverse the stream.
Another aspect of the user experience, is the flow is infinite. The players shows random slices of random videos, and it goes on forever. 1000 videos is only a tiny fraction of YouTube’s library (much less the entire web’s library). But you can watch this player for a long time without the content losing its novelty.
Some highlights from the technical side:
- I use ActionScript because I had code with a polished player interface (i.e., displaying thumbnails while scrubbing the video). The main reason to use html5 vs. ActionScript is to run on iOS devices. But the browser on iOS doesn’t let you embed playing videos into a page, so it wouldn’t have worked on those devices anyway. For what it’s worth, I really enjoy working in ActionScript, and I’m sad it’s going away. But that’s a topic for another post.
- The player takes advantage of high bandwidth. Broadband speeds have been quietly increasing over the past few years. Most people have much bigger pipes than a typical video play uses. For instance, a DVD-quality video stream is roughly 1000 kilobits per second (or kbps). I’ve got a cable modem, and I just measured over 20,000 kilobits per second. In other words, my computer could stream 20 DVD-quality videos at once.
- All the thumbnail videos you see scrolling by are compressed to 50 kbps (they’re 160×120 pixels with no audio).
- I used YouTube’s API to get these videos, but unfortunately, their API only returns 1000 search results. So I have no practical way of adding more content. I really wish API designers would allow access to entire content libraries, but that’s also a topic for another post :)
I would love to see this “video wall” player as an option on all video sites. I think it works really well with the enhanced interactivity possible on the Internet.
Technically, I can hook this player into different content libraries. But there are a couple practical obstacles.
First, to make scrubbing work well, I need sprites that show different frame from the video. Second, I need tiny 50 kbps thumbnail streams that show the videos scrolling across the wall. For full integration, the site hosting the content needs to generate the sprites and tiny videos as part of their encoding pipeline.