FluidVid 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.
โ
Auto GPU Detection & NVENC Encoding (NVIDIA)
โ
Supports MP4 (H.264) and WebM (VP9) outputs
โ
Generates adaptive thumbnails per resolution
โ
Smooth, modern terminal UI with rounded panels
โ
Confirmation pre-start screen
โ
Progress tracker with current task indicator
โ
Detailed logging to fluidvid.log
-
Python 3.10+
- Download from https://www.python.org/downloads/
- Ensure Python is added to your
PATH
during installation.
-
FFmpeg (Required for video processing)
- Download from https://ffmpeg.org/download.html
- Recommended build: Gyan.dev FFmpeg Builds
- Example path (Windows):
C:\ffmpeg\bin\ffmpeg.exe
-
Python Dependencies:
rich
prompt_toolkit
Install Python dependencies with:
pip install rich prompt_toolkit
Configuration is done via a config.json
file located in the same folder as FluidVid.py
.
{
"ffmpeg_path": "C:\\ffmpeg\\bin\\ffmpeg.exe",
"output_dir": "./output",
"sizes": [576, 768, 1200, 1600, 1920],
"encoders": {
"default": "libx264",
"nvenc": "h264_nvenc",
"qsv": "h264_qsv",
"amf": "h264_amf",
"hevc_nvenc": "hevc_nvenc",
"hevc_qsv": "hevc_qsv",
"hevc_amf": "hevc_amf",
"av1_nvenc": "av1_nvenc",
"av1_qsv": "av1_qsv",
"av1_amf": "av1_amf"
},
"preferred_encoder_priority": ["nvenc", "qsv", "amf"]
}
Key | Type | Description |
---|---|---|
ffmpeg_path |
string |
Required. Full path to your FFmpeg executable. |
output_dir |
string |
Default output folder for converted videos and thumbnails. |
sizes |
array |
List of output video widths in pixels. Videos will be resized accordingly. |
encoders |
object |
Available encoder mappings for NVIDIA (NVENC), Intel (QSV), AMD (AMF), and default software encoder. |
preferred_encoder_priority |
array |
The order in which FluidVid will try to use hardware encoders. Defaults to nvenc , then qsv , then amf . |
๐ก Example: If you want to change the output directory and resolutions:
{
"output_dir": "./myvideos",
"sizes": [720, 1080, 1440]
}
๐ How to check available encoders in your FFmpeg build: You can list all available encoders by running:
ffmpeg -encoders
You should see output similar to:
ffmpeg version 7.1.1-full_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static ...
Encoders:
V..... = Video
A..... = Audio
S..... = Subtitle
...
V....D libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
V..... h264_qsv H.264 (Intel Quick Sync Video acceleration) (codec h264)
V....D h264_amf AMD AMF H.264 encoder (codec h264)
V....D hevc_nvenc NVIDIA NVENC HEVC encoder (codec hevc)
V..... hevc_qsv HEVC (Intel Quick Sync Video acceleration) (codec hevc)
V....D hevc_amf AMD AMF HEVC encoder (codec hevc)
V....D av1_nvenc NVIDIA NVENC AV1 encoder (codec av1)
V..... av1_qsv AV1 (Intel Quick Sync Video acceleration) (codec av1)
V....D av1_amf AMD AMF AV1 encoder (codec av1)
This helps you verify if your system supports hardware acceleration.
๐ก Note:
Ensure your ffmpeg_path
is correctly set. Example paths:
- Windows:
C:\ffmpeg\bin\ffmpeg.exe
- Linux:
/usr/bin/ffmpeg
- macOS (using Homebrew):
/opt/homebrew/bin/ffmpeg
- Download and install Python 3.10+ from https://www.python.org/downloads/.
- Download FFmpeg from https://www.gyan.dev/ffmpeg/builds/ and extract it to
C:\ffmpeg
. - Add Python and FFmpeg to your
PATH
environment variable (optional but recommended). - Clone this repo and navigate to the folder.
- Install dependencies:
pip install rich prompt_toolkit
- Configure your
config.json
file.
- Install Homebrew if you havenโt already:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Install Python & FFmpeg:
brew install python ffmpeg
- Clone this repo and install dependencies:
pip3 install rich prompt_toolkit
- Set
ffmpeg_path
to/opt/homebrew/bin/ffmpeg
(Apple Silicon) or/usr/local/bin/ffmpeg
(Intel).
- Install Python & FFmpeg:
sudo apt update
sudo apt install python3 ffmpeg
- Clone this repo and install dependencies:
pip3 install rich prompt_toolkit
- Set
ffmpeg_path
to/usr/bin/ffmpeg
.
python FluidVid.py "input_video.mp4"
You can also supply an output directory:
python FluidVid.py "input_video.mp4" "./myoutput"
If you run FluidVid without any parameters:
python FluidVid.py
It will prompt you interactively to:
- Enter input file path
- Enter output directory (optional, defaults to
./output
) - Select GPU if multiple detected
Pre-Start Confirmation Screen
Live Progress Screen
A detailed log is saved in your output directory:
fluidvid.log
Built by Stevie G ๐ฆ๐บ
Optimised for NVIDIA NVENC GPUs ๐ฎ
Terminal UI crafted with Rich & Prompt Toolkit โจ
If you like this project, give it a โญ๏ธ on GitHub!
MIT License. See LICENSE file.