{"id":26873605,"url":"https://github.com/itsmestevieg/fluidvid","last_synced_at":"2026-04-30T01:37:40.150Z","repository":{"id":285334408,"uuid":"957753003","full_name":"ItsMeStevieG/fluidvid","owner":"ItsMeStevieG","description":"🎥 GPU-accelerated video optimiser \u0026 thumbnail generator with a modern terminal UI — built with Python \u0026 FFmpeg.","archived":false,"fork":false,"pushed_at":"2025-03-31T05:00:33.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T06:19:32.111Z","etag":null,"topics":["automation","cli-tool","cross-platform","developer-tools","ffmpeg","ffmpeg-wrapper","gpu-encoding","media-tools","nvenc","open-source","productivity","prompt-toolkit","python","python-script","rich-python","terminal-ui","thumbnail-generator","video-compression","video-optimization","video-processing"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ItsMeStevieG.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.MD","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":"2025-03-31T04:15:09.000Z","updated_at":"2025-03-31T05:04:39.000Z","dependencies_parsed_at":"2025-03-31T06:19:33.765Z","dependency_job_id":"94bebb90-e224-42a8-a364-20459378e282","html_url":"https://github.com/ItsMeStevieG/fluidvid","commit_stats":null,"previous_names":["itsmestevieg/fluidvid"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsMeStevieG%2Ffluidvid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsMeStevieG%2Ffluidvid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsMeStevieG%2Ffluidvid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsMeStevieG%2Ffluidvid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ItsMeStevieG","download_url":"https://codeload.github.com/ItsMeStevieG/fluidvid/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246443534,"owners_count":20778252,"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":["automation","cli-tool","cross-platform","developer-tools","ffmpeg","ffmpeg-wrapper","gpu-encoding","media-tools","nvenc","open-source","productivity","prompt-toolkit","python","python-script","rich-python","terminal-ui","thumbnail-generator","video-compression","video-optimization","video-processing"],"created_at":"2025-03-31T09:19:37.946Z","updated_at":"2026-04-30T01:37:40.087Z","avatar_url":"https://github.com/ItsMeStevieG.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎥 FluidVid v1.0.0\r\n\r\nFluidVid is a modern, lightweight, and GPU-accelerated video optimisation and thumbnail generation tool written in Python. It uses **FFmpeg** under the hood and features a fully interactive, visually polished terminal interface powered by **Rich** and **Prompt Toolkit**.\r\n\r\n---\r\n\r\n## 🚀 Features\r\n\r\n✅ Auto GPU Detection \u0026 NVENC Encoding (NVIDIA)  \r\n✅ Supports MP4 (H.264) and WebM (VP9) outputs  \r\n✅ Generates adaptive thumbnails per resolution  \r\n✅ Smooth, modern terminal UI with rounded panels  \r\n✅ Confirmation pre-start screen  \r\n✅ Progress tracker with current task indicator  \r\n✅ Detailed logging to `fluidvid.log`\r\n\r\n---\r\n\r\n## 📝 Requirements \u0026 Prerequisites\r\n\r\n- **Python 3.10+**\r\n\r\n  - Download from [https://www.python.org/downloads/](https://www.python.org/downloads/)\r\n  - Ensure Python is added to your `PATH` during installation.\r\n\r\n- **FFmpeg** (Required for video processing)\r\n\r\n  - Download from [https://ffmpeg.org/download.html](https://ffmpeg.org/download.html)\r\n  - Recommended build: [Gyan.dev FFmpeg Builds](https://www.gyan.dev/ffmpeg/builds/)\r\n  - Example path (Windows):  \r\n    `C:\\ffmpeg\\bin\\ffmpeg.exe`\r\n\r\n- **Python Dependencies:**\r\n  - `rich`\r\n  - `prompt_toolkit`\r\n\r\nInstall Python dependencies with:\r\n\r\n```bash\r\npip install rich prompt_toolkit\r\n```\r\n\r\n---\r\n\r\n## ⚙️ Configuration\r\n\r\nConfiguration is done via a `config.json` file located in the same folder as `FluidVid.py`.\r\n\r\n### Full Example\r\n\r\n```json\r\n{\r\n  \"ffmpeg_path\": \"C:\\\\ffmpeg\\\\bin\\\\ffmpeg.exe\",\r\n  \"output_dir\": \"./output\",\r\n  \"sizes\": [576, 768, 1200, 1600, 1920],\r\n  \"encoders\": {\r\n    \"default\": \"libx264\",\r\n    \"nvenc\": \"h264_nvenc\",\r\n    \"qsv\": \"h264_qsv\",\r\n    \"amf\": \"h264_amf\",\r\n    \"hevc_nvenc\": \"hevc_nvenc\",\r\n    \"hevc_qsv\": \"hevc_qsv\",\r\n    \"hevc_amf\": \"hevc_amf\",\r\n    \"av1_nvenc\": \"av1_nvenc\",\r\n    \"av1_qsv\": \"av1_qsv\",\r\n    \"av1_amf\": \"av1_amf\"\r\n  },\r\n  \"preferred_encoder_priority\": [\"nvenc\", \"qsv\", \"amf\"]\r\n}\r\n```\r\n\r\n### Configuration Breakdown\r\n\r\n| Key                          | Type     | Description                                                                                                 |\r\n| ---------------------------- | -------- | ----------------------------------------------------------------------------------------------------------- |\r\n| `ffmpeg_path`                | `string` | **Required.** Full path to your FFmpeg executable.                                                          |\r\n| `output_dir`                 | `string` | Default output folder for converted videos and thumbnails.                                                  |\r\n| `sizes`                      | `array`  | List of output video widths in pixels. Videos will be resized accordingly.                                  |\r\n| `encoders`                   | `object` | Available encoder mappings for NVIDIA (NVENC), Intel (QSV), AMD (AMF), and default software encoder.        |\r\n| `preferred_encoder_priority` | `array`  | The order in which FluidVid will try to use hardware encoders. Defaults to `nvenc`, then `qsv`, then `amf`. |\r\n\r\n**💡 Example:**\r\nIf you want to change the output directory and resolutions:\r\n\r\n```json\r\n{\r\n  \"output_dir\": \"./myvideos\",\r\n  \"sizes\": [720, 1080, 1440]\r\n}\r\n```\r\n\r\n**🔍 How to check available encoders in your FFmpeg build:**\r\nYou can list all available encoders by running:\r\n\r\n```bash\r\nffmpeg -encoders\r\n```\r\n\r\nYou should see output similar to:\r\n\r\n```\r\nffmpeg version 7.1.1-full_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers\r\nbuilt with gcc 14.2.0 (Rev1, Built by MSYS2 project)\r\nconfiguration: --enable-gpl --enable-version3 --enable-static ...\r\n\r\nEncoders:\r\n V..... = Video\r\n A..... = Audio\r\n S..... = Subtitle\r\n ...\r\n V....D libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)\r\n V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)\r\n V..... h264_qsv             H.264 (Intel Quick Sync Video acceleration) (codec h264)\r\n V....D h264_amf             AMD AMF H.264 encoder (codec h264)\r\n V....D hevc_nvenc           NVIDIA NVENC HEVC encoder (codec hevc)\r\n V..... hevc_qsv             HEVC (Intel Quick Sync Video acceleration) (codec hevc)\r\n V....D hevc_amf             AMD AMF HEVC encoder (codec hevc)\r\n V....D av1_nvenc            NVIDIA NVENC AV1 encoder (codec av1)\r\n V..... av1_qsv              AV1 (Intel Quick Sync Video acceleration) (codec av1)\r\n V....D av1_amf              AMD AMF AV1 encoder (codec av1)\r\n```\r\n\r\nThis helps you verify if your system supports hardware acceleration.\r\n\r\n**💡 Note:**\r\nEnsure your `ffmpeg_path` is correctly set. Example paths:\r\n\r\n- Windows: `C:\\ffmpeg\\bin\\ffmpeg.exe`\r\n- Linux: `/usr/bin/ffmpeg`\r\n- macOS (using Homebrew): `/opt/homebrew/bin/ffmpeg`\r\n\r\n---\r\n\r\n## 💻 Installation \u0026 Setup\r\n\r\n### 🪟 Windows\r\n\r\n1. Download and install **Python 3.10+** from [https://www.python.org/downloads/](https://www.python.org/downloads/).\r\n2. Download **FFmpeg** from [https://www.gyan.dev/ffmpeg/builds/](https://www.gyan.dev/ffmpeg/builds/) and extract it to `C:\\ffmpeg`.\r\n3. Add Python and FFmpeg to your `PATH` environment variable _(optional but recommended)_.\r\n4. Clone this repo and navigate to the folder.\r\n5. Install dependencies:\r\n\r\n```bash\r\npip install rich prompt_toolkit\r\n```\r\n\r\n6. Configure your `config.json` file.\r\n\r\n### 🍎 macOS\r\n\r\n1. Install **Homebrew** if you haven’t already:\r\n\r\n```bash\r\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\r\n```\r\n\r\n2. Install Python \u0026 FFmpeg:\r\n\r\n```bash\r\nbrew install python ffmpeg\r\n```\r\n\r\n3. Clone this repo and install dependencies:\r\n\r\n```bash\r\npip3 install rich prompt_toolkit\r\n```\r\n\r\n4. Set `ffmpeg_path` to `/opt/homebrew/bin/ffmpeg` (Apple Silicon) or `/usr/local/bin/ffmpeg` (Intel).\r\n\r\n### 🐧 Linux\r\n\r\n1. Install Python \u0026 FFmpeg:\r\n\r\n```bash\r\nsudo apt update\r\nsudo apt install python3 ffmpeg\r\n```\r\n\r\n2. Clone this repo and install dependencies:\r\n\r\n```bash\r\npip3 install rich prompt_toolkit\r\n```\r\n\r\n3. Set `ffmpeg_path` to `/usr/bin/ffmpeg`.\r\n\r\n---\r\n\r\n## 💻 Usage\r\n\r\n### Command Line\r\n\r\n```bash\r\npython FluidVid.py \"input_video.mp4\"\r\n```\r\n\r\nYou can also supply an output directory:\r\n\r\n```bash\r\npython FluidVid.py \"input_video.mp4\" \"./myoutput\"\r\n```\r\n\r\n### No Parameters Supplied?\r\n\r\nIf you run FluidVid without any parameters:\r\n\r\n```bash\r\npython FluidVid.py\r\n```\r\n\r\nIt will prompt you interactively to:\r\n\r\n- Enter input file path\r\n- Enter output directory (optional, defaults to `./output`)\r\n- Select GPU if multiple detected\r\n\r\n---\r\n\r\n## 🔥 Demo Screenshots\r\n\r\n**Pre-Start Confirmation Screen**\r\n\r\n![Pre-Start Screen](./screenshots/pre-start.png)\r\n\r\n**Live Progress Screen**\r\n\r\n![Progress Screen](./screenshots/progress.png)\r\n\r\n---\r\n\r\n## 📄 Log File\r\n\r\nA detailed log is saved in your output directory:  \r\n`fluidvid.log`\r\n\r\n---\r\n\r\n## ❤️ Credits\r\n\r\nBuilt by **Stevie G** 🇦🇺  \r\nOptimised for NVIDIA NVENC GPUs 🎮  \r\nTerminal UI crafted with **Rich** \u0026 **Prompt Toolkit** ✨\r\n\r\n---\r\n\r\n## ☕ Support\r\n\r\nIf you like this project, give it a ⭐️ on GitHub!\r\n\r\n---\r\n\r\n## 🔓 License\r\n\r\nMIT License. See [LICENSE](./LICENSE) file.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsmestevieg%2Ffluidvid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsmestevieg%2Ffluidvid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsmestevieg%2Ffluidvid/lists"}