Open SourceLinuxVideoPrivacyPyQt6HandBrakeCLI

MoTekLabVideoEncoder:ThePrivacy-FirstVideoConverterBuiltforLinux

Motaz Hefny
2026-05-16
10 min read
Share article
MoTekLab Video Encoder: The Privacy-First Video Converter Built for Linux

MoTekLab Video Encoder: The Privacy-First Video Converter Built for Linux

Every Linux user eventually faces the same problem: you have a video file that needs converting — maybe it is an MKV that won't play on your TV, a folder of raw footage destined for a project, or a screen recording that needs compression before sharing. The tools that exist are either CLI-only, abandoned, or violate your privacy. vconv exists to solve that, and it does so beautifully.

What Is MoTekLab Video Encoder?

MoTekLab Video Encoder (vconv) is a Linux-native video conversion GUI (with full CLI mode) powered by HandBrakeCLI and built on PyQt6. It handles everything from a one-off MP4 conversion to batch-processing an entire TV show season — all without telemetry, ads, or account creation. The application detects your hardware automatically, recommends optimal encoders, preserves folder structures, and manages subtitles better than any HandBrake GUI wrapper we have seen.

It is open-source under GPLv3, written entirely in Python, and designed to integrate seamlessly into a Linux workflow.

Best Use Cases

Media Archivists & Hoarders

You have a growing collection of video files in mixed formats — some in bloated AVI, others in obscure container formats that modern players choke on. vconv normalizes everything to MP4 or MKV with your choice of codec, preserves your directory tree, and lets you queue up thousands of files overnight.

TV Show & Movie Batch Processing

Downloaded an entire season and need it in a consistent format? Point vconv at the root folder, enable recursive scanning, choose a preset (the tv_show preset is tuned for this), and walk away. vconv mirrors your source folder hierarchy in the output — BreakingBad/Season1/ stays BreakingBad/Season1/ on the other side.

Content Creators on Linux

You recorded tutorials, gameplay, or screencasts in high-bitrate lossless format. Before uploading or archiving, you need sensible compression without sacrificing quality. Use the high_quality preset (RF 22) or tune it yourself. vconv's hardware acceleration detection picks the fastest encoder available on your GPU.

Privacy-Conscious Users

Every file stays on your machine. No telemetry, no analytics, no phone-home. The only network request vconv makes is to check for updates via GitHub's public API — and that is optional, configurable, and cached for 24 hours.

Arabic-Speaking Users & Multilingual Workflows

vconv is fully bilingual (English and Arabic) with RTL layout support in the help browser, UI tooltips, and all documentation. If your video files contain Arabic-named SRT subtitles, vconv automatically handles UTF-8 encoding — something HandBrakeCLI alone gets wrong (it defaults to latin1 for external subtitle files, garbling non-Latin text).

How It Works

GUI Mode

Launch the application and you are greeted by a dark-themed glassmorphism interface with neon accents. Drag in a folder or navigate to it. vconv scans for video files, shows you detailed metadata (codec, resolution, bitrate, frame rate) via ffprobe, and presents every conversion option in a clean, organized panel.

CLI / Headless Mode

For scripting and automation, vconv offers a full command-line interface:

# Batch convert with hardware encoding in one line
vconv -i /path/to/videos -O /output -e nvenc_h265 -q 23 -f mp4 --batch

# Analyze before converting
vconv -i /path/to/videos --analyze

# Full help
vconv --help

Conversion Queue

Add any number of files — they process sequentially with real-time per-file and overall progress bars. The queue persists across application restarts (stored at ~/.config/vconv/queue.json). Cancel individual jobs or stop the entire queue; vconv cleans up gracefully every time.

Presets

| Preset | RF Quality | Speed | When to Use | |--------|-----------|-------|-------------| | fast | 27 | Fast | Quick encoding, social media uploads | | balanced | 25 | Medium | Everyday use (default) | | high_quality | 22 | Slow | Important files, YouTube uploads | | archive | 20 | Slow | Long-term preservation | | nvenc_fast | 27 | Very Fast | Quick NVIDIA GPU encoding | | nvenc_balanced | 25 | Fast | Daily NVIDIA use | | nvenc_quality | 22 | Medium | High quality NVIDIA encoding | | tv_show | 24 | Medium | Optimized for TV episodes |

Hardware Acceleration

vconv auto-detects your GPU and recommends the best encoder:

| Encoder | Type | Speed | Best For | |---------|------|-------|----------| | nvenc_h265 | NVIDIA GPU | Very Fast | Fast HEVC | | nvenc_h264 | NVIDIA GPU | Very Fast | Fast H.264, compatibility | | qsv_h265 | Intel GPU | Fast | Low power HEVC | | qsv_h264 | Intel GPU | Fast | Low power H.264 | | amf_h265 | AMD GPU | Fast | AMD HEVC | | amf_h264 | AMD GPU | Fast | AMD H.264 | | x265 | CPU | Medium-High | Best compression | | x264 | CPU | Medium | Maximum compatibility | | libsvtav1 | CPU | Slow | Future-proof AV1 |

Subtitle Handling

vconv's subtitle support exceeds any other HandBrakeCLI GUI wrapper:

  • Embedded subtitle passthrough with --all-subtitles
  • External SRT, ASS, and SSA import with per-file language tagging
  • Burn-in (hardcode) subtitles into the output
  • Automatic UTF-8 encoding fixes Arabic and non-Latin text that HandBrakeCLI garbles by default

Architecture

vconv is a complete PyQt6 re-architecture — migrated from PySimpleGUI (which was abandoned and had critical Linux threading bugs). The threading model uses dedicated QThread workers for HandBrakeCLI subprocess management with signal/slot patterns for thread-safe UI updates. No freezes, no crashes, just responsive progress.

The project structure reflects clean separation of concerns:

vconv/
├── vconv.py              # Entry point
├── core/                 # Converter, encoder detection, analyzer, queue
├── ui/                   # PyQt6 main window, help browser
├── utils/                # Config, i18n, logging, tools
├── docs/                 # User guide, future plan
├── presets/              # Preset JSON files
└── locales/              # Arabic/English translation files

Getting Started

Installation

# Debian/Ubuntu — system package
sudo dpkg -i vconv_9.2.0_all.deb
sudo apt install -f

# Any distro — AppImage (portable)
chmod +x vconv-9.2.0-x86_64.AppImage
./vconv-9.2.0-x86_64.AppImage

# From source
git clone https://github.com/motaz-hefny/MoTekLab-vconv.git
cd MoTekLab-vconv
pip install PyQt6 markdown
python3 vconv.py --gui

Quick Start

# Launch GUI
vconv --gui

# Batch convert with hardware acceleration
vconv -i /videos -e nvenc_h265 -q 23 -f mp4 --batch

# Analyze media files
vconv -i /path/to/videos --analyze

Prerequisites

sudo apt-get install handbrake-cli ffmpeg    # Required for conversion + analysis
pip install PyQt6 markdown                    # GUI framework

Roadmap

Community-requested features on the horizon include parallel batch processing (multiple files simultaneously), more preset options, enhanced audio track management, and a flatpak distribution. The MoTekLab Video Encoder is an active project — contributions, issues, and feature requests are welcome on GitHub.


Download MoTekLab Video Encoder (vconv) from GitHub Releases or the MotekLab Downloads page. Free, open-source, private, and built for Linux.

MH

Motaz Hefny

Founder of MotekLab | Senior Identity & Security Engineer

Motaz is a Senior Engineer specializing in Identity, Authentication, and Cloud Security for the enterprise tech industry. As the Founder of MotekLab, he bridges human intelligence with AI, building privacy-first tools like Fahhim to empower creators worldwide.

Discussions (0)

Join the Conversation

Sign in with your Google account to share your insights with the community.

StayAheadoftheCurve

Join tech leaders receiving our weekly briefing on AI agents, high-performance architecture, and the future of digital product building.