{"id":20513323,"url":"https://github.com/luewh/videoscripy","last_synced_at":"2025-08-19T21:20:55.736Z","repository":{"id":260887992,"uuid":"882070255","full_name":"luewh/VideoScripy","owner":"luewh","description":"WebUI for hardware accelerated video optimizing, upscaling, interpolating processes","archived":false,"fork":false,"pushed_at":"2025-01-11T21:51:22.000Z","size":22929,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T09:38:38.813Z","etag":null,"topics":["dash-plotly","ffmpeg","hardware-acceleration","python","video-interpolation","video-processing","video-upscaling","webui","windows"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luewh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-01T20:19:45.000Z","updated_at":"2025-01-11T21:42:46.000Z","dependencies_parsed_at":"2024-11-14T12:53:16.012Z","dependency_job_id":"4c24072c-0a22-4b3f-989d-ce8a8fbe2106","html_url":"https://github.com/luewh/VideoScripy","commit_stats":null,"previous_names":["luewh/video-script","luewh/videoscripy"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luewh%2FVideoScripy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luewh%2FVideoScripy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luewh%2FVideoScripy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luewh%2FVideoScripy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luewh","download_url":"https://codeload.github.com/luewh/VideoScripy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234808940,"owners_count":18890087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dash-plotly","ffmpeg","hardware-acceleration","python","video-interpolation","video-processing","video-upscaling","webui","windows"],"created_at":"2024-11-15T21:10:01.048Z","updated_at":"2025-08-19T21:20:55.717Z","avatar_url":"https://github.com/luewh.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n\r\n# \u003cimg src=\"./assets/favicon.ico\" alt=\"drawing\" width=\"20px\"/\u003e VideoScripy\r\n\r\n**English** | [**中文简体**](./README_CN.md)\r\n\r\n**Quality preserved, Storage saved.**\r\n\r\nCollection of video processing module such as compression, upscale, interpolation and stream manipulation.\r\n\r\n![demo.gif](./doc/demo_upscale.gif)\r\n\r\n\u003c/div\u003e\r\n\r\n\r\n\r\n## Table of contents\r\n\r\n- [Processing module](#processing-module)\r\n- [Requirements](#requirements)\r\n- [Embedded version](#embedded-version)\r\n- [Self setup version](#self-setup-version)\r\n- [Credits](#credits)\r\n\u003c!-- - [Benchmarking](#benchmarking) --\u003e\r\n\r\n\r\n\r\n## Processing module\r\n\r\n- compress  \r\n    Reduce the video bitRate in order to gain storage space.  \r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eexpand more\u003c/summary\u003e\r\n        The processed videos will have a bitRate = width * height * quality, quality=3 is generally the lowest value before appearance of artifacts (bad images, blurry...). In other words, humain won't notice the visual difference between video of quality 3 and 6.\r\n    \u003c/details\u003e\r\n\r\n    ![demo_upscale_s](./doc/demo_compress_illus.png)\r\n\r\n- resize  \r\n    Reduce the video width and height.\r\n\r\n    ![demo_upscale_s](./doc/demo_resize_illus.png)\r\n\r\n- upscale  \r\n    Increase video size by factor of 2,3 or 4 with AI, enhance video quality.  \r\n    It has the ability to start from last upscal progress if the \"_upscaledx?_frame\" wasn't deleted. \r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eexpand more\u003c/summary\u003e\r\n        Begin with a transformation of video to image frames, then upscale each frames, finally reassemble to video.  \r\n    \u003c/details\u003e\r\n\r\n    \u003cins\u003eOriginal : 266x200\u003c/ins\u003e\r\n\r\n    ![demo_upscale_s](./doc/demo.gif)\r\n\r\n    \u003cins\u003eUpscal x2 : 532x400\u003c/ins\u003e\r\n\r\n    ![demo_upscale_b](./doc/demo_upscale_x2.gif)\r\n\r\n    \u003cins\u003eUpscal x3 : 798x600\u003c/ins\u003e\r\n    \r\n    ![demo_upscale_b](./doc/demo_upscale_x3.gif)\r\n\r\n    \u003cins\u003eUpscal x4 1064x800\u003c/ins\u003e\r\n    \r\n    ![demo_upscale_b](./doc/demo_upscale_x4.gif)\r\n\r\n- interpolate  \r\n    Increase video frame rate (FPS), smooth video.  \r\n    \u003cdetails\u003e\r\n    \u003csummary\u003eexpand more\u003c/summary\u003e\r\n        Begin with a transformation of video to image frames, then interpolate between frames, finally reassemble to video.\r\n    \u003c/details\u003e\r\n    \r\n    \u003cins\u003einterpolate 25fps -\u003e 60fps\u003c/ins\u003e\r\n\r\n    ![demo_upscale_s](./doc/demo.gif)\r\n    ![demo_upscale_s](./doc/demo_interpolate_60fps.gif)\r\n\r\n    (The 60fps gif may be slowed down due to markdown, use a proper viewer may solve the problem)\r\n\r\n- preview  \r\n    Generate a grid of images.  \r\n\r\n    \u003cins\u003e3x2 grid of 2min countdown video\u003c/ins\u003e\r\n\r\n    ![demo_preview](./doc/demo_preview.png)\r\n\r\n- frame  \r\n    Graph each frame's size of a video \r\n\r\n    \u003cins\u003e266x200 10s long video\u003c/ins\u003e\r\n\r\n    ![demo_preview](./doc/demo_frame.png)\r\n\r\n- stream  \r\n    Merge selected stream of multiple videos into one video.  \r\n    And also modify metadata as tile and language.  \r\n    Then use media player as PotPlayer to switch between video/audio/subtitle.\r\n\r\n    ![demo_upscale_s](./doc/demo_stream_illus.png)\r\n\r\n\r\n\r\n## Requirements\r\n\r\n- Windows OS\r\n- NVIDIA GPU for faster video process\r\n- Atleast 50 Go disk space free for Upscale process | 10 Go for Interpolate process\r\n- Python 3.10\r\n- [Tools](#installation-1)\r\n\r\n\r\n## Embedded version\r\n\r\nSimplest. Python, Tools are already setup.  \r\nAdvantage : **Beginner-friendly**\r\n\r\n### Installation\r\n\r\nDownload and extract the [Embedded release](https://github.com/luewh/Video-Script/releases/latest)\r\n\r\n### Usage\r\n\r\nRun the `VideoScripyWebUI.bat`\r\n\r\n\r\n\r\n## Self setup version\r\n\r\nNeed to download the source codes, install Python and its dependencies, download tools and include them to tools folder or add them to PATH.    \r\nAdvantage : **Freedom**\r\n\r\n### Installation\r\n\r\n1. Download the source code and extract.\r\n\r\n1. Download and install Python 3.10 if you dont have.\r\n\r\n2. Install dependencies\r\n    ```shell\r\n    pip install -r requirements.txt\r\n    ```\r\n \r\n3. Download tools\r\n\r\n    [FFmpeg](https://www.gyan.dev/ffmpeg/builds/) full build for hardware acceleration.  \r\n    [Real-ESRGAN-ncnn-vulkan](https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan/releases) for video upscaling.  \r\n    [Ifrnet-ncnn-vulkan](https://github.com/nihui/ifrnet-ncnn-vulkan/releases) for video frame interpolation.  \r\n    [NVEncC](https://github.com/rigaya/NVEnc) for GPU feature detection.  \r\n\r\n4. Include tools\r\n    \r\n    Create a \"tools\" folder and place tools in like this:\r\n    ```\r\n    VideoScripy\r\n    │   ...\r\n    │   VideoScripyWebUI.py \r\n    └───tools\r\n    │   └───ffmpeg-full_build\r\n    │   │   │   ...\r\n    │   │   └───bin\r\n    │   │       │   ffmpeg.exe\r\n    │   │       │   ffprobe.exe\r\n    │   └───Real-ESRGAN\r\n    │   │   │   ...\r\n    │   │   │   realesrgan-ncnn-vulkan.exe\r\n    │   └───Ifrnet\r\n    │   │   │   ...\r\n    │   │   │   ifrnet-ncnn-vulkan.exe\r\n    |...\r\n    ```\r\n\r\n    Or add them in the environment variable *PATH*\r\n    - `\u003cpathTo\u003e\\ffmpeg-full_build\\bin`\r\n    - `\u003cpathTo\u003e\\Real-ESRGAN`\r\n    - `\u003cpathTo\u003e\\Ifrnet`\r\n    - `\u003cpathTo\u003e\\NVEnc`\r\n\r\n### Usage\r\n\r\nRun the `VideoScripyWebUI.py`\r\n\r\n\r\n\r\n\u003c!-- \r\n## Benchmarking\r\n\r\n- ### x3 Faster FFprobe by running it \"asynchronously\"\r\n\r\n    \u003cins\u003effprobe on 64 videos, ~2h long each\u003c/ins\u003e\r\n\r\n    ![Fast FFprobe](./doc/faster_way_to_run_ffprobe.png)\r\n --\u003e\r\n\r\n\r\n## Credits\r\n\r\nThis project relies on the following software and projects :\r\n- [alive-progress](https://github.com/rsalmei/alive-progress)\r\n- [Real-ESRGAN](https://github.com/xinntao/Real-ESRGAN)\r\n- [IFRNet](https://github.com/ltkong218/IFRNet)\r\n- [FFmpeg](https://www.ffmpeg.org/)\r\n- [FFmpeg-python](https://github.com/kkroening/ffmpeg-python)\r\n- [Dash](https://dash.plotly.com/)\r\n- [NVEncC](https://github.com/rigaya/NVEnc)\r\n\r\nSounds come from :\r\n- [Pixabay](https://pixabay.com/sound-effects/search/typewriter/)\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluewh%2Fvideoscripy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluewh%2Fvideoscripy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluewh%2Fvideoscripy/lists"}