A web-based video upscaling service powered by Real-ESRGAN and FFMPEG.
Plans:
- Support waifu2x as processor
- Support Anime4K as processor
- Add RIFE for frame interpolation
- Add an option to use different REAL-ESRGAN models
Real-ESRGAN and FFMPEG must be installed or downloaded on your local machine.
Docker is used for NodeJS, Redis, and Minio. You can use Docker if desired or just run natively on your host.
Only the "Worker" at the moment is not working correctly with Docker and so it must be run natively.
If you figure out how to use Nvidia + Vulkan with Docker then please let me know.
If running the applications (API and Worker) natively, you can rename the .env.example
inside the packages to .env
and update the variables as necessary. This will automatically be read when started via yarn start
.
Otherwise if the applications are used with Docker, then the required variables are found in .env.example
.
The available docker-compose.yml
is also already pre-filled with the required variables.
Install FFMPEG through your package manager or by downloading static builds at https://johnvansickle.com/ffmpeg.
By default, the app will look for the ffmpeg
and ffprobe
in your path.
Set the absolute path in FFMPEG_PATH
and FFPROBE_PATH
environment variables if needed.
Download the correct build of Real-ESRGAN based on your architecture at https://github.com/xinntao/Real-ESRGAN/releases.
Set the absolute path of the binary to REAL_ESRGAN_PATH
environment variable.
Clone the project
git clone https://github.com/xxRockOnxx/ai-upscaler
Go to the project directory
cd ai-upscaler
Install dependencies
yarn install
npx lerna bootstrap
Set the required environment variables or simply just rename .env.example
inside the packages to .env
. See Environment Variables.
If you don't want to install the following services natively, run the following command to get the services up via Docker:
docker-compose up -d redis minio
After starting minio, visit http://localhost:9001
and login using user:password
.
Create the required buckets: uploads
, downloads
, and frames
.
API:
cd packages/api
yarn start
Worker:
cd packages/worker
yarn start
UI:
cd packages/ui
yarn generate
yarn start
You can also use pm2 for convenience if you are not using Docker.
Example:
cd packages/api
pm2 start npm --name http -- run start