A somewhat simple golang REST API with the fiber framework with routes which process video and audio using the free and open-source software ffmpeg.
- Go (v.1.19.1^)
- FFmpeg
- Docker (optional but highly recommended)
- Concat videos (supports templates with a pre-determined structure) into a single video
- Transcode, downscale videos
- Convert image(s) to video(s) with a specific duration
- Generate thumbnail from a specific time frame of a video
- Executable tests of the features mentioned above
$ docker image build
docker image building documentation
$ sudo apt update && sudo apt upgrade -y
### ffmpeg installation
$ sudo apt install ffmpeg
### go installation
$ cd ~
$ curl -OL https://golang.org/dl/go1.19.1.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xvf go1.19.1.linux-amd64.tar.gz
$ sudo nano ~/.profile
# then, add the following information to the end of your file:
export PATH=$PATH:/usr/local/go/bin
$ source ~/.profile
# check if the installation is complete without problems
$ go version
### clone the repo
$ git clone *url of the repository*
# everything should be good to go
$ go test ./pkg/render -run ConcatTest
$ go test ./pkg/render -run ConcatStressTest
$ go test ./pkg/render -run ThumbnailTest
$ go test ./pkg/render -run ConvertTest
- Finish deployment branch
- Add more tests (transcode, downscale)
- Move storage to a file storage solution in the cloud (?)