Skip to content
This repository has been archived by the owner on Jun 26, 2023. It is now read-only.

TNTwise/Rife-ESRGAN-App-Linux

Repository files navigation

NOTICE: This repo is being moved to https://github.com/TNTwise/Rife-ESRGAN-App-Linux-QT, This repo will be archived.

A simple GUI for Frame Interpolation and Upscaling on Linux

This project aims to accomplish a simple frame interpolation experience on linux, while also using open technologies that rely on Vulkan to allow for seemless compatibility with a wide range of hardware.

rife-ncnn-vulkan: https://github.com/nihui/rife-ncnn-vulkan
Real-ESRGAN-ncnn-vulkan: https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan

Dependencies
Building
Errors
TODO

Dependencies:

OpenCV
Tkinter
Xterm

To run this program, you can just click on "Start".

There is a new install.sh script in the install directory that you can run that will install it to your system.
You can either search for Rife in your destop enfironment, or can run rife-gui from your terminal.
This install method will copy everything to the home folder, and execute from there.

Installing Dependencies

On Ubuntu

sudo apt install python3-opencv ffmpeg python3-tk konsole libavfilter-dev libavfilter8 libswscale-dev python3-pil.imagetk 

On Arch/Arch based Distros

sudo pacman -S tk opencv konsole ffmpeg python-pip wget

On SteamOS/Steam Deck

Run "Start"

As of latest SteamOs 3.4, it does not error out when launching it from "Start".

Building

Install needed dependencies

yay -S pyinstaller

run GUI.py at least once to install PIP dependencies

make

Compile Appimage

git clone https://github.com/TNTwise/Rife-ESRGAN-App-AppImage.git

replace GUIPortable.temp with the compiled GUIPortable

chmod +x Rife-ESRGAN-App.AppDir/AppRun
appimagetool Rife-ESRGAN-App.AppDir 

Errors

vkQueueSubmit failed and vkAllocateMemory failed happens when there isn't enough VRAM for the current frame.

Lower the system load if you see these errors or if the output video is corrupted.

If RealESRGAN does not seem to be working, or Rife is slow, make sure you have the vulkan package installed based on your hardware.
For example:
Intel:

sudo pacman -S vulkan-intel

AMD:

sudo pacman -S vulkan-radeon

NVIDIA:

sudo pacman -S nvidia-utils

TODO

Before all this, The next release will use QT instead of Tkinter. I will also split GUI.py into multiple, easier to manage scripts. The code which this app is based on is bad, so I will attempt to re-write most of it.

Maybe add a chooser for which modules to install??
add pop up when closing app to ask to kill rife/realesrgan or not
add fullscreen button for preview
automatic detection of max usage per system, do this by having a test video render at 1080p, 4k, and 8k and detect the max settings the system can run without erroring out with a not enough vram error. make anime progress bar dynamic, have the first section be the fps out of the fps + 30. fix missing riff tag when using anything other than png, try converting the frames to webp using ffmpeg
Have animeintterpolation interpolate regularly until the last iteration and then lower to 30 and interpolate. make an option that allows for changing of extracted image type.
Fix issue where output video errors out if codec is not right, even if filename is .mp4
Add CLI support for basic interpolation.
For next release, add advanced settings tab.
Add support for changing between yuv420p yuv422p yuv244p rgb24 pix_fmt
Add automatic conversion to supported format
Maybe add a message to ask if user wants to save last output files if greater than 2x interpolation. Add a try except function for reading settings
Add a function that deletes already processced files (check if file num x 2 exists in output_folder) Fix CPU + GPU combo not working with realsrgan
Add shutdown when done
Disable tabs when on a certain upscale mode
Add realesrgan support to upscale video resolution, make app more general purpose
Set up queue system
Add scalability to GUI
fix brogressbar not showing somtimes when animation profile is selected.
Use less temp files
Check if done file exists, and if not, throw error
Add in built terminal
Add stop button for interpolation
Make portable installer, that is just one file to install the program
Remodel the entire GUI
Fix start executable not working on SteamOS
Add more models, add drop downs for selecting different rife variations (cuda, vulkan, standard) add DAIN and CAIN too.
Add selector for default directory to process frames, this could help people with low disk space.
Make rife version and interpolation multiplier dropdown menus
Make settings menu a tab instead of a window
Add ETA for video interpolation
Toggle between stable and testing branch (Dropdown Menu)
Add suspend/resume feature
Add uninstall button
Support Dain Vulkan
Clean up files
Add progressbar for update (Note: Will have to make update function run in a new thread to have progressbar update.)
Fix pop up showing wrong password, even when password is right (only happens if window is re-launched from install button.)
Clean up GUI, Maybe switch to .pack instead of .grid?
Add a default rife version selector.
Add a default interpolation option selector
Add longer dependencies section.
Show errors on GUI itself, so i can remove the xterm dependency.