Skip to content

Benchmark terminal output performance by playing video using JavaCV and FFmpeg.

License

Notifications You must be signed in to change notification settings

choiman1559/BadAppleMark

Repository files navigation

BadAppleMark

Bad Apple!! + BenchMark

Play a video file converted to text using JavaCV and FFMPEG in the terminal to benchmark the performance of the terminal emulator.
It is recommended that the quality of the original video used is 720P or lower.

Requirement

Minimum requirement:

  • Sound output device that supports MPEG AAC audio codec
  • Terminal emulator that supports ANSI text-ed color
  • Java 8+ Runtime
  • 1GB or more of free memory

Recommended requirement:

  • Processor with 4 or more threads
  • 2GB or more of free memory
  • Terminal emulator with GPU acceleration

Usage

BadApple-Java, Written By.Choiman1559, Version: 2.1.1
Usage: BadApple [-abcehlmpqrsvx] [-ap] [-cn] [-xd] [-xr] [-bs=<bufferSize>]
                [-d=<delayMilliseconds>] [-dn=<delayNanoseconds>] [-f=ARCHIVE]
                [-mo=ARCHIVE] [-t=<ratioValueResize>]
Prints ascii-ed "Bad Apple" video.
  -a, --audio               Play mp4 file's audio
      -ap, --psudo-audio    Pseudo-simulates music output. This can be useful
                              on systems without a sound device.
  -b, --buffer-output       use more buffer when print ascii
      -bs, --buffer-size=<bufferSize>
                            Size of Buffer, Default is 8192 bytes.
  -c, --clear               Clear terminal when refresh frame
      -cn, --clear-curses   Clear terminal using ncurses
  -d, --delay=<delayMilliseconds>
                            Set the delay between frames (milliseconds)
      -dn, --delay-nano=<delayNanoseconds>
                            Set the delay between frames (milliseconds)
  -e, --engine              Convert to Ascii art using my own engine
  -f, --file=ARCHIVE        target *.mp4 file to play
  -h, --help                Display a help message
  -l, --loop                Play video by loop
  -m, --benchmark           Record and measure the performance of terminal
                              emulators.
      -mo, --bench-output=ARCHIVE
                            Destination folder to save analysis results
  -p, --pre-render          (Experimental) Pre-Render all the frames to ascii
                              before play the video (Warning: Requires a lot of
                              memory)
  -q, --print-color         print color as well as ascii texts
  -r, --resize              Set whether to resize the image
  -s, --sync-audio          Sync audio with video
  -t, --ratio=<ratioValueResize>
                            Aspect ratio value to downscale frames
  -v, --verbose             Print debug log under frame while playing video
  -x, --auto-control        Automatically determines and control delay length
                              and downscale ratio
      -xd, --auto-delay     Automatically controls delay length
      -xr, --auto-ratio     Automatically determines downscale ratio

Examples

Example 01

Command: java -jar ./BadApple.jar -a=true -ap=false -v=true -b=true -bs=10000 -c=true -cn=false -e=true -l=false -p=false -r=true -t=3 -d=12 -s=true -q=true -xd=true -xr=false

Original Video: Bad Apple!!

image

Frame Analytics Data: frameRate_BadApple

Original Video: Never Gonna Give You Up LOL

Example 02

Command: java -jar ./BadApple.jar -a=true -v=true -b=true -bs=10000 -c=true -cn=false -e=true -l=false -p=false -r=true -t=5 -d=12 -s=true -q=true -xd=true -xr=true -f=<Your MP4 File Here>

image

Frame Analytics Data: frameRate_Rick

Example 03

Command: java -jar ./BadApple.jar -a=true -v=true -b=true -bs=10000 -c=true -cn=false -e=true -l=false -p=false -r=true -t=4 -d=12 -s=true -q=true -xd=true -xr=false -f=<Your MP4 File Here>

Original Video: 言って。

image

Frame Analytics Data: frameRate_TellMe