Skip to content

Desktop tool to turn a single image and audio file into a clean 16:9 MP4 video. Includes native file dialogs on Linux. Free and open source.

License

Notifications You must be signed in to change notification settings

Nickpanek/panek-video-program

Repository files navigation

Panek Video Program

A powerful desktop video editor that creates professional 1920×1080 MP4 videos with advanced features like text overlays, fade transitions, and support for both image and video inputs. Designed for artists, musicians, designers, and anyone making YouTube, TikTok, Loom, Shorts, Reels, or visual loop content.

Current Version: v3.0.0 (Enhanced Edition) | Download Latest Previous Version: v2.0.0 (PySide6) | v1.0.1 (PyQt5)

✨ NEW in v3.0: Enhanced Video Editing Features

🎨 Text Overlays

Add custom text to your videos with full styling control:

  • Position Control: Top, Center, or Bottom placement
  • Font Sizing: 12-200pt adjustable text size
  • Color Picker: Choose any color for your text
  • Perfect for titles, credits, captions, and watermarks

🎬 Video File Input

No longer limited to just images! Now supports:

  • Video Formats: MP4, MOV, AVI, MKV, WEBM, FLV, WMV, M4V, MPG, MPEG
  • Image Formats: JPG, PNG, WEBP (as before)
  • Intelligent processing based on input type

🌅 Fade Transitions

Add professional polish with fade effects:

  • Video Fades: Smooth fade in/out for visual content
  • Audio Fades: Synchronized audio fading
  • Precise Control: 0-10 seconds in 0.5 second increments
  • Independent fade in and fade out settings

🚀 v2.0: The PySide6 Modernization Refactor (Released!)

We are excited to announce the release of v2.0, a major rewrite of the Panek Video Program. This update completely modernizes the codebase, improves the user experience, and establishes a professional architecture that is more stable, maintainable, and responsive.

Summary of Changes

The application has been rebuilt from the ground up, moving from a single-file PyQt5 script to a modern, decoupled PySide6 application. This addresses several long-standing bugs, simplifies the code, and adds critical new features.

Key Architectural & Feature Changes

  • Framework Migration: PyQt5 to PySide6 The entire application has been ported from PyQt5 to PySide6. This moves the project to a more modern toolkit with a more flexible (LGPL) license, ensuring future compatibility and easier distribution.

  • New Architecture: Decoupled UI and Backend

    • Before: The original script was a single monolithic class (MainUI) that handled both the UI layout and the QProcess execution.
    • After: The new architecture (based on the "Modern Python Application" guide) separates concerns. The MainWindow class now only handles UI events. A new FFmpegRunner class now lives in the "core" and manages all QProcess logic, emitting signals for logs, progress, and completion. This makes the application far more stable and prevents the UI from freezing.
  • New UI: Professional Dark Theme & Minimalist Layout

    • Before: The UI used custom-coded stylesheets (e.g., the gray/green render button, colored labels) that were difficult to maintain.
    • After: All custom stylesheets have been removed. The app now uses the qdarktheme library to apply a consistent, professional, and fully-featured dark theme with a single line of code. The layout has also been simplified from manual QHBoxLayouts to a clean QFormLayout.
  • New Feature: File Overwrite Confirmation

    • Before: The app used an ffmpeg -y flag, which would silently overwrite any existing video with the same name.
    • After: The app now checks if the output file exists before rendering. If it does, a native confirmation dialog asks the user if they wish to proceed, preventing accidental data loss.
  • New Feature: Pre-flight File Validation

    • Before: A render could be started, only to fail 30 seconds later because an input file was moved or deleted.
    • After: The app now performs validation before starting ffmpeg. It checks that the selected image file, audio file, and output directory all exist, showing a clear warning if anything is missing.
  • Code Simplification: Removed Dialog Cascade

    • Before: The original script included ~100 lines of complex "cascade" logic (kde_getopenfilename, zenity_getopenfilename, osascript_choose_file) to manually detect the user's OS and show the "correct" native file dialog.
    • After: This entire system has been removed. The new script uses QFileDialog directly, which PySide6 automatically and correctly maps to the native system dialog on Windows, macOS, KDE, and GNOME.
  • Bug Fix: Correct Progress Bar Parsing

    • Before: The original script had a bug where it used ffmpeg -nostats, which disables the progress information it was trying to read.
    • After: The bug is fixed. The ffmpeg command now correctly pipes progress to stdout (which the FFmpegRunner reads for the progress bar) and logs to stderr (which is shown in the log window). This results in a reliable and responsive progress bar.

New Dependencies (for v2.0)

To run this new version, the dependencies will change.

Old Dependencies:

  • python3-pyqt5

New Dependencies:

  • PySide6
  • qdarktheme

They can be installed via pip:

pip install PySide6 qdarktheme

📖 Documentation & Support

  • User Manual - Complete guide with installation, usage, and troubleshooting
  • 🤖 AI Help Desk - Get instant help with installation and debugging across all platforms

Features

New in v3.0:

  • Text Overlays with position, size, and color controls
  • 🎬 Video File Input support (MP4, MOV, AVI, MKV, WEBM, and more)
  • 🌅 Fade Transitions for professional video and audio fading

Core Features:

  • Supports JPG, PNG, WEBP images and 10+ video formats
  • Supports MP3 and WAV audio
  • Output: H.264 MP4, yuv420p, CRF 20, faststart enabled
  • Native system file dialogs via QFileDialog
  • Render button only enables when both files are selected
  • Output filename auto-generates if no title is given
  • Real-time progress tracking
  • Overwrite protection with confirmation
  • Pre-flight file validation

Requirements

  • ffmpeg and ffprobe must be installed

Need help installing FFmpeg?AI Help Desk

Install (Linux)

Download the .AppImage or .deb from Releases:

➡️ https://github.com/Nickpanek/panek-video-program/releases/latest

Installation issues?AI Help Desk for step-by-step guidance

Run (Source)

# Install dependencies
pip install PySide6 qdarktheme

# Run the program
python3 panek_video_program.py

Support

About

Desktop tool to turn a single image and audio file into a clean 16:9 MP4 video. Includes native file dialogs on Linux. Free and open source.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •