explaingit

jitesh117/subwaycli

22GoAudience · developerComplexity · 2/5Setup · moderate

TLDR

A Go program that plays video inside your terminal by converting each frame into ASCII characters, with a Subway Surfers clip built in so it works immediately after install.

Mindmap

mindmap
  root((subwayCLI))
    What it does
      Play video in terminal
      Render frames as ASCII
      Auto-resize to window
    Built-in content
      Subway Surfers clip
      No extra files needed
    Tech stack
      Go 1.22
      ffmpeg
    Usage
      go run or build binary
      Supply custom video path
      Set frame rate flag
    Platform
      macOS
      Linux
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run the built-in Subway Surfers clip in your terminal with a single command right after installing.

USE CASE 2

Play any local video file as ASCII art in your terminal by passing a file path flag.

USE CASE 3

Build a standalone subwayCLI binary with make and install it system-wide so you can run it from anywhere.

USE CASE 4

Set a custom frame rate or fixed width and height for ASCII playback to match your terminal setup.

Tech stack

Goffmpeg

Getting it running

Difficulty · moderate Time to first run · 5min

Requires Go 1.22+ and ffmpeg installed and available on the system PATH before running.

No license information was mentioned in the explanation.

In plain English

subwayCLI is a Go program that plays video directly inside a terminal window by rendering each frame as ASCII characters. The project ships with a default Subway Surfers gameplay clip embedded in it, so it works out of the box without any additional media files. The only external requirements are Go 1.22 or later and ffmpeg installed and available on your system path. Ffmpeg is an open-source tool for decoding video and audio, subwayCLI uses it to process each video frame before converting it to text characters sized to fit the terminal. The terminal output resizes automatically to match the current dimensions of your terminal window. You can run the program directly with go run, build a standalone binary using the included Makefile, or install the binary to a system-wide location for permanent use. On macOS, the README shows placing it in the Homebrew bin directory so the command is available from anywhere on the command line. A flag controls the playback frame rate. If you want to play a different video instead of the default Subway Surfers clip, you supply a path to a local video file. Width and height flags let you set a specific output size rather than relying on the automatic terminal detection. The README is brief and focuses entirely on installation and invocation, it does not explain how the ASCII conversion is implemented internally, what encoding formats are supported, or what happens when the terminal is resized during playback. The supported input formats are whatever ffmpeg handles on the platform, which covers most common video types.

Copy-paste prompts

Prompt 1
I just cloned subwayCLI. Walk me through installing ffmpeg, building the binary with make, and running the default Subway Surfers clip in my terminal.
Prompt 2
Show me the subwayCLI command to play a local MP4 file at 24fps with a fixed width of 120 columns in my terminal.
Prompt 3
How does subwayCLI use ffmpeg to convert video frames to ASCII characters? Explain the pipeline from video frame to terminal output based on the source code.
Prompt 4
How do I install the subwayCLI binary to a system-wide location on macOS so I can run it from any directory?
Open on GitHub → Explain another repo

← jitesh117 on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.