A Qt-based desktop application to browse and preview local video files with custom thumbnails, hover previews, and pinning support.
- Local Video Browsing: Scan a folder recursively for video files (
.mp4
,.mkv
,.avi
,.mov
) and display them as clickable video cards. - Custom Thumbnails: Supports custom thumbnail images stored in the same or a separate folder. If no custom thumbnail exists, it generates one from the video automatically.
- Hover Previews: Hovering over a video shows a short frame sequence preview extracted from the video.
- Duration Display: Each video shows its total duration on a pill-style overlay.
- Pin Videos: Pin videos to keep them at the top of the grid. Right-click on a video to pin or unpin.
- Home Page Randomly sorted to mimick an algorithmic home page to rediscover videos.
- Search: Filter videos by title or channel dynamically as you type.
- Resizable Layout: Video grid adjusts to window size with scroll support, keeping consistent spacing between cards.
- Open Videos: Click a video card to open it in the system's default video player.
-
Top Bar:
- Search bar for filtering videos.
- Buttons to change the video folder and refresh the app.
-
Video Grid: Displays video cards with thumbnail, title, channel, duration, and pinned state. Scrollable when content exceeds window size.
- Hover preview and thumbnail generation require FFmpeg and FFprobe installed on your system (linux).
- Pinned videos are preserved across sessions using
QSettings
. - Space between videos is based on how many videos are loaded into the app, if you only have a few videos the gaps will be really large - thats normal.
- On first launch, select a video folder.
- The app scans the directory recursively for supported video files and thumbnails with the name file name and generates video cards with auto gen thumbnails when custom ones arent avaliable.
- Hovering over a video card displays a short multi-frame preview. Frames are generated asynchronously and cached.
- Right-click on a video card to pin or unpin it. Pinned videos always appear at the start of the grid.
- Search dynamically filters videos by title or channel name.
- Click a video card to open the video using your system’s default video player.
- Reloading the video folder refreshes all thumbnails and hover previews safely without crashes.
- Qt 6 or higher
- C++17 compatible compiler
ffmpeg
andffprobe
installed and accessible in system PATH (for thumbnail generation)- CMake (for building cross-platform)
- Clone the repository:
git clone https://github.com/draftysumo/draftys-videobrowser.git
cd draftys-videobrowser
- Create a build directory and run:
mkdir build && cd build
cmake ..
make -j$(nproc)
- Run the application:
./Draftys-VideoBrowser
-
Install Requirements
- Qt 6.x MinGW 64-bit
- CMake
- FFmpeg (
ffmpeg.exe
andffprobe.exe
) - Draftys-VideoBrowser source code
-
Unzip the source code .zip file, then open the Qt MinGW Command Prompt and navigate (cd) into the project directory (c:\users\user\downloads\draftys-videobrowser-v#)
-
Create Build Directory
mkdir build
cd build
- Configure with CMake:
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:/Qt/6.9.2/mingw_64"
- Build the project:
mingw32-make
- Deploy Qt DLLs:
C:\Qt\6.9.2\mingw_64\bin\windeployqt.exe Draftys-VideoBrowser.exe
- Include FFmpeg:
Copy ffmpeg.exe and ffprobe.exe into the same folder as VideoBrowserApp.exe, or add them to PATH.
- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature
- Make changes, commit with clear messages:
git commit -am "Add feature description"
- Push to your branch:
git push origin feature/your-feature
- Open a Pull Request to merge your changes into
main
.
Guidelines:
- Use clear, consistent code formatting.
- Document new functionality in the README.
- Keep commits atomic and descriptive.
- Ensure
ffmpeg
commands work on all platforms.
! Hover preview and thumbnail generation require FFmpeg and FFprobe installed on your distro (linux).
video-browser/
├── main.cpp
├── README.md
├── CMakeLists.txt
└── LICENSE