Skip to content

draftysumo/Draftys-VideoBrowser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Drafty's VideoBrowser

A Qt-based desktop application to browse and preview local video files with custom thumbnails, hover previews, and pinning support.

Table of Contents

Features

  • 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.

UI Components

  • 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.

Notes

  • 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.

How It Works

  1. On first launch, select a video folder.
  2. 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.
  3. Hovering over a video card displays a short multi-frame preview. Frames are generated asynchronously and cached.
  4. Right-click on a video card to pin or unpin it. Pinned videos always appear at the start of the grid.
  5. Search dynamically filters videos by title or channel name.
  6. Click a video card to open the video using your system’s default video player.
  7. Reloading the video folder refreshes all thumbnails and hover previews safely without crashes.

Requirements For Building

  • Qt 6 or higher
  • C++17 compatible compiler
  • ffmpeg and ffprobe installed and accessible in system PATH (for thumbnail generation)
  • CMake (for building cross-platform)

Compilation

Linux

  1. Clone the repository:
git clone https://github.com/draftysumo/draftys-videobrowser.git
cd draftys-videobrowser
  1. Create a build directory and run:
mkdir build && cd build
cmake ..
make -j$(nproc)
  1. Run the application:
./Draftys-VideoBrowser

Windows (MinGW / Qt 6.x)

  1. Install Requirements

    • Qt 6.x MinGW 64-bit
    • CMake
    • FFmpeg (ffmpeg.exe and ffprobe.exe)
    • Draftys-VideoBrowser source code
  2. 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#)

  3. Create Build Directory

mkdir build
cd build
  1. Configure with CMake:
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:/Qt/6.9.2/mingw_64"
  1. Build the project:
mingw32-make
  1. Deploy Qt DLLs:
C:\Qt\6.9.2\mingw_64\bin\windeployqt.exe Draftys-VideoBrowser.exe
  1. Include FFmpeg:
Copy ffmpeg.exe and ffprobe.exe into the same folder as VideoBrowserApp.exe, or add them to PATH.

Contributing

  1. Fork the repository.
  2. Create a feature branch:
git checkout -b feature/your-feature
  1. Make changes, commit with clear messages:
git commit -am "Add feature description"
  1. Push to your branch:
git push origin feature/your-feature
  1. 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.

Installation (Pre-Built)

Download Latest Release

! Hover preview and thumbnail generation require FFmpeg and FFprobe installed on your distro (linux).


Suggested Repository Structure

video-browser/
├── main.cpp
├── README.md
├── CMakeLists.txt
└── LICENSE

About

A YouTube-like UI for local videos. With all the bells and whistles! (made with Qt, coded in C++)

Resources

License

Stars

Watchers

Forks

Packages

No packages published