Skip to content
/ superview Public

A small program that takes a 4:3 aspect ratio video file, and transforms it to a 16:9 video using the GoPro SuperView method

License

Notifications You must be signed in to change notification settings

Niek/superview

Repository files navigation

Superview

All Contributors

This is a small Go program that takes a 4:3 aspect ratio video file, and transforms it to a 16:9 video using the GoPro SuperView method. This means that the image is not naively scaled, but a dynamic scaling is applied where the outer areas are stretched more while the center parts stay close to the original aspect rate.

This is not a 1-1 copy of the GoPro algorithm, but an attempt to reach similar quality of output using the open-source FFmpeg encoder.

Credits for the idea go to Banelle, who wrote the initial (Python) implementation.

Here is a quick animation showing the scaling, note how the text in the center stays the same:

alt text

Requirements

This program requires FFmpeg to be installed on your computer. If needed, please install it using one of these ways:

  • Linux: install from your local package manager, for example: apt instal ffmpeg
  • Windows: Download from https://ffmpeg.zeranoe.com/builds/ and extract the ZIP file in the same directory as superview
  • macOS: Download from https://ffmpeg.zeranoe.com/builds/ and put in the same folder as superview, or install using Homebrew: brew install ffmpeg

Installation

Download the latest release from the releases page on GitHub. There are two versions: a command line program called superview-cli and a graphical version called superview-gui.

Usage

To run superview-gui, simply double-click the icon. Choose an input video file, optionally change some settings and click "Encode". The program will ask you where to save the output.

alt text

To use superview-cli, run the program with the -i (input file) parameter. Optionally, you can provide a -o (output) and -b (bitrate) parameter. Full usage instructions:

Usage:
  superview-cli [OPTIONS]

Application Options:
  -i, --input=FILE         The input video filename
  -o, --output=FILE        The output video filename (default: output.mp4)
  -b, --bitrate=BITRATE    The bitrate in bytes/second to encode in. If not specified, take the same bitrate as the input file
  -s, --squeeze            Squeeze 4:3 video stretched to 16:9 (e.g. Caddx Tarsier 2.7k60)

Help Options:
  -h, --help               Show this help message

Development

If you want superview from source, run go build superview-cli.go common.go. To build the GUI version, run go build superview-gui.go common.go. See build.sh for an example how to cross-compile.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Roman Kuraev

🤔 💻

dangr0

🐛

DG

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!