Probably came up with it in a fever dream, to be honest

What it does

It takes a video file and plays it in emoji form in the VSCode console.

How I built it

I built it using Node.js with JavaScript. It pulls the frames from the video with ffmpeg, saves it to a disk, reads it from the disk then resizes the image down to a small resolution and maps pixels to emojis by HSL value. There is no science to the emoji mappings, I just got a colour chart and eyeballed it. It flashes randomly and isn't played at exactly the same speed as the original video, but by god it actually kinda works.

Challenges I ran into

The main challenge I ran into was forcing Node.js to run as synchronously as possible. This involved an awful combination of promisifying my main loop and making every single processing function synchronous, even if they weren't really supposed to be.

Accomplishments that I'm proud of

That I actually managed to get it to work.

What I learned

What Node.js really isn't supposed to be used for.

What's next for VidiMoji

I want to combine it with Discord.js, because I designed it so that if the resolution is 15x8, you can guarantee that every frame fits inside a Discord message, so you can edit a message up to 5 times per second and play a video in Discord. This was the original plan, but it's 4:30am and I want to go to sleep, so I'm definitely not going to be able to finish it by morning.

Built With

Share this project: