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-upscalerGo to the project directory
cd ai-upscalerInstall dependencies
yarn install
npx lerna bootstrapSet 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 minioAfter starting minio, visit http://localhost:9001 and login using user:password.
Create the required buckets: uploads, downloads, and frames.
API:
cd packages/api
yarn startWorker:
cd packages/worker
yarn startUI:
cd packages/ui
yarn generate
yarn startYou can also use pm2 for convenience if you are not using Docker.
Example:
cd packages/api
pm2 start npm --name http -- run start