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:
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://www.gyan.dev/ffmpeg/builds/ and extract the
ffmpeg-release-full
7ZIP file in the same directory as superview - macOS: Download from https://evermeet.cx/ffmpeg/ and put in the same folder as superview, or install using Homebrew:
brew install ffmpeg
Download the latest release from the releases page on GitHub. There are two versions: a graphical version called superview-gui
and a command line program called superview-cli
.
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.
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)
-e, --encoder=ENCODER The encoder to use, use -h to see a list. If not specified, it takes the standard encoder of the input file codec
-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
If you want superview from source, run go build superview-gui.go
or go build superview-cli.go
depending on which version you'd like to build. See build.sh for an example how to cross-compile.
Thanks goes to these wonderful people (emoji key):
Roman Kuraev 🤔 💻 |
dangr0 🐛 |
DG 🤔 |
Nova_Max 📖 |
This project follows the all-contributors specification. Contributions of any kind welcome!