diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..1c09a41 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,151 @@ +# DJI Telemetry Viewer - Python Dependencies +# This file specifies all Python packages required to run the DJI Telemetry Overlay Viewer +# Install all dependencies using: pip install -r requirements.txt +# +# It's recommended to use a virtual environment: +# python -m venv dji_viewer_env +# source dji_viewer_env/bin/activate # On Windows: dji_viewer_env\Scripts\activate +# pip install --upgrade pip +# pip install -r requirements.txt + +# ============================================================================= +# CORE GUI FRAMEWORK +# ============================================================================= + +# PyQt5 - Main GUI framework for cross-platform desktop application +# Provides widgets, layouts, event handling, and window management +# Version 5.15.0+ required for stability and modern features +PyQt5>=5.15.0,<5.16.0 + +# PyQtWebEngine - Web engine integration for PyQt5 applications +# Required for displaying interactive maps using HTML/JavaScript (Folium/Leaflet) +# Provides QWebEngineView widget for embedding web content +PyQtWebEngine>=5.15.0,<5.16.0 + +# ============================================================================= +# MEDIA PLAYBACK +# ============================================================================= + +# python-vlc - Python bindings for VLC media player +# Handles video playback, seeking, volume control, and media information +# Requires VLC media player to be installed on the system +# Version 3.0.12118+ includes important bug fixes for subtitle handling +python-vlc>=3.0.12118 + +# ============================================================================= +# MAPPING AND VISUALIZATION +# ============================================================================= + +# folium - Python library for creating interactive maps +# Generates HTML/JavaScript maps using Leaflet.js +# Used for displaying flight paths and real-time drone position +# Version 0.12.0+ includes performance improvements and new map styles +folium>=0.12.0,<0.15.0 + +# ============================================================================= +# DATA PROCESSING +# ============================================================================= + +# srt - Library for parsing and manipulating SubRip subtitle files +# DJI drones embed telemetry data in SRT format within MP4 files +# This library extracts and parses GPS coordinates, altitude, speed, etc. +# Version 3.5.0+ provides better error handling and Unicode support +srt>=3.5.0,<4.0.0 + +# ============================================================================= +# OPTIONAL DEPENDENCIES (Recommended) +# ============================================================================= + +# requests - HTTP library for downloading map tiles and updates +# Used by folium for fetching map data from various tile servers +# Version 2.25.0+ includes security improvements +requests>=2.25.0,<3.0.0 + +# Pillow - Python Imaging Library for image processing +# Used for handling video thumbnails and image exports +# Version 8.0.0+ includes security fixes and performance improvements +Pillow>=8.0.0,<11.0.0 + +# numpy - Numerical computing library +# Used for efficient telemetry data processing and calculations +# Required by folium for coordinate transformations +numpy>=1.19.0,<2.0.0 + +# ============================================================================= +# DEVELOPMENT DEPENDENCIES (Optional - for contributors) +# ============================================================================= +# Uncomment these lines if you're developing or contributing to the project +# Install with: pip install -r requirements.txt -r requirements-dev.txt + +# pytest>=6.0.0 # Testing framework +# pytest-qt>=4.0.0 # PyQt-specific testing utilities +# black>=21.0.0 # Code formatter +# flake8>=3.8.0 # Linting tool +# mypy>=0.800 # Type checking +# pre-commit>=2.10.0 # Git hooks for code quality + +# ============================================================================= +# SYSTEM-SPECIFIC NOTES +# ============================================================================= + +# WINDOWS USERS: +# - Install Microsoft Visual C++ Redistributable if you encounter DLL errors +# - Ensure FFmpeg is in your system PATH +# - Some antivirus software may flag python-vlc - add exceptions if needed + +# MACOS USERS: +# - Install Xcode command line tools: xcode-select --install +# - Use Homebrew for FFmpeg: brew install ffmpeg +# - You may need to install Rosetta 2 on Apple Silicon Macs + +# LINUX USERS: +# - Install system packages: sudo apt install python3-dev python3-pip +# - Install FFmpeg: sudo apt install ffmpeg +# - For audio support: sudo apt install pulseaudio-dev +# - Qt dependencies: sudo apt install qt5-default + +# ============================================================================= +# TROUBLESHOOTING COMMON INSTALLATION ISSUES +# ============================================================================= + +# Issue: "Failed building wheel for PyQt5" +# Solution: Install pre-compiled binaries +# pip install --only-binary=all PyQt5 PyQtWebEngine + +# Issue: "Microsoft Visual C++ 14.0 is required" (Windows) +# Solution: Install Microsoft C++ Build Tools +# Download from: https://visualstudio.microsoft.com/visual-cpp-build-tools/ + +# Issue: "vlc.dll not found" (Windows) +# Solution: Install VLC media player system-wide +# Download from: https://www.videolan.org/vlc/ + +# Issue: "No module named '_ctypes'" (Linux) +# Solution: Install libffi development package +# sudo apt install libffi-dev + +# Issue: Segmentation fault on startup (Linux) +# Solution: Install additional Qt libraries +# sudo apt install python3-pyqt5.qtwebengine + +# ============================================================================= +# VERSION COMPATIBILITY MATRIX +# ============================================================================= +# Python 3.7: All packages supported +# Python 3.8: All packages supported (recommended) +# Python 3.9: All packages supported (recommended) +# Python 3.10: All packages supported +# Python 3.11: Most packages supported (some may need --pre flag) +# Python 3.12: Limited support (check individual packages) + +# ============================================================================= +# INSTALLATION VERIFICATION +# ============================================================================= +# After installation, verify all dependencies with: +# python -c "import PyQt5, vlc, folium, srt, requests, PIL, numpy; print('✓ All dependencies installed successfully!')" + +# Test GUI availability: +# python -c "from PyQt5.QtWidgets import QApplication; app = QApplication([]); print('✓ GUI framework ready')" + +# Test VLC integration: +# python -c "import vlc; instance = vlc.Instance(); print('✓ VLC integration working')" \ No newline at end of file