Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

WebODM Setup for Drone Video Processing

A comprehensive setup repository for WebODM installation and drone video processing workflows with GPU acceleration support. This repository contains installation scripts, Docker configurations, and utilities for processing drone imagery and videos.

NEW: Now includes GPU acceleration for 2-5x faster processing! See GPU_SETUP.md for details.

📋 Table of Contents

🎯 Overview

WebODM is an open-source drone mapping software built on OpenDroneMap. This repository provides:

  • Automated Installation Scripts for Windows, Linux, and macOS
  • Docker Compose Configuration for easy deployment
  • Video Processing Tools to extract frames from drone videos
  • Batch Processing Scripts for multiple datasets
  • Utility Scripts for common tasks

� Screenshots

Dashboard & Project View

WebODM DashboardMain dashboard showing project overview and management interface

Task Processing

Task ProcessingProcessing interface with options and task configuration

3D Model Viewer

3D Model ViewerInteractive 3D model viewer with texture mapping

Orthophoto Map

Orthophoto MapGenerated orthophoto map visualization

Processing Results

Processing ResultsDetailed processing results and outputs

�📦 Prerequisites

System Requirements

  • OS: Windows 10/11, Ubuntu 20.04+, macOS 10.14+ (including Apple Silicon)
  • RAM: Minimum 8GB (16GB+ recommended)
  • Disk Space: 50GB+ free space
  • CPU: Multi-core processor (4+ cores recommended)
  • GPU (Optional): NVIDIA GPU with 4GB+ VRAM for accelerated processing
    • See GPU_SETUP.md for GPU acceleration guide
    • Note: GPU acceleration is not available on macOS Apple Silicon (M1/M2/M3/M4). CPU-only processing is used instead.

Required Software

  1. Docker Desktop (Windows/macOS) or Docker Engine (Linux)

  2. Python 3.8+ (for video processing scripts)

  3. Git (for cloning the repository)

🚀 Quick Start

Windows (PowerShell)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Run installation script
.\scripts\install-windows.ps1# Start WebODM
.\scripts\start-webodm.ps1

Linux/macOS (Bash)

# Clone the repository
git clone https://github.com/prashplus/WebODM-Setup.git
cd WebODM-Setup
# Make scripts executable
chmod +x scripts/*.sh
# Run installation script
./scripts/install-linux.sh
# Start WebODM
./scripts/start-webodm.sh

Apple Silicon (M1/M2/M3/M4): The scripts automatically detect Apple Silicon and use the correct CPU-only Docker images (arm64 native). No extra steps needed. See MACOS_APPLE_SILICON.md for details.

Access WebODM at: http://localhost:8000

📥 Installation

Detailed Installation Steps

  1. Install Docker

    # Windows: Download and install Docker Desktop# Ensure WSL2 is enabled for Windows
  2. Clone Repository

    git clone https://github.com/prashplus/WebODM-Setup.git
    cd WebODM-Setup
  3. Install Python Dependencies

    pip install -r requirements.txt
  4. Configure Settings (Optional)

    • Edit config/webodm-config.env for custom settings
    • Adjust Docker resources in Docker Desktop settings
  5. Run Installation Script

    • Windows: .\scripts\install-windows.ps1
    • Linux/Mac: ./scripts/install-linux.sh

🎥 Drone Video Processing

Extract Frames from Drone Videos

The repository includes scripts to extract frames from drone videos at specified intervals:

# Basic usage
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 1
# Advanced usage with GPS data extraction
python scripts/extract-frames.py --input video.mp4 --output ./frames --fps 2 --extract-gps

Parameters

  • --input: Path to drone video file
  • --output: Output directory for extracted frames
  • --fps: Frames per second to extract (default: 1)
  • --extract-gps: Extract GPS metadata from video (if available)
  • --format: Output image format (default: jpg)
  • --quality: JPEG quality 1-100 (default: 95)

Batch Processing

Process multiple videos at once:

python scripts/batch-process.py --input-dir ./videos --output-dir ./frames

💻 Usage

Starting WebODM

# Windows
.\scripts\start-webodm.ps1
# Linux/Mac
./scripts/start-webodm.sh

Stopping WebODM

# Windows
.\scripts\stop-webodm.ps1
# Linux/Mac
./scripts/stop-webodm.sh

Updating WebODM

# Windows
.\scripts\update-webodm.ps1
# Linux/Mac
./scripts/update-webodm.sh

Creating a New Project

  1. Access WebODM at http://localhost:8000
  2. Create an account (first user becomes admin)
  3. Click "Add Project"
  4. Upload your processed drone images
  5. Configure processing options
  6. Start processing

⚙️ Configuration

Environment Variables

Edit config/webodm-config.env:

# WebODM ConfigurationWO_PORT=8000WO_HOST=0.0.0.0WO_DEBUG=NO# Processing OptionsWO_DEFAULT_NODES=1WO_BROKER_URL=redis://broker# StorageMEDIA_ROOT=/webodm/app/media

Docker Resources

Adjust in Docker Desktop Settings:

  • CPUs: 4+ cores recommended
  • Memory: 8GB+ recommended
  • Disk: 50GB+ recommended

🔧 Troubleshooting

Common Issues

Docker not running

# Check Docker status
docker --version
docker ps
# Start Docker Desktop (Windows/Mac)# Or start Docker service (Linux)
sudo systemctl start docker

Port 8000 already in use

Edit config/webodm-config.env and change WO_PORT to another port (e.g., 8080)

Out of memory errors

Increase Docker memory allocation in Docker Desktop settings

Video processing errors

# Ensure FFmpeg is installed
ffmpeg -version
# Install if missing# Windows: choco install ffmpeg# Ubuntu: sudo apt install ffmpeg# macOS: brew install ffmpeg

Logs

View WebODM logs:

docker-compose logs -f webapp

📁 Repository Structure

WebODM-Setup/
├── config/
│ ├── webodm-config.env
│ └── processing-presets.json
├── scripts/
│ ├── common.sh # Shared helpers (compose detection, Apple Silicon)
│ ├── install-windows.ps1
│ ├── install-linux.sh
│ ├── start-webodm.ps1
│ ├── start-webodm.sh
│ ├── stop-webodm.ps1
│ ├── stop-webodm.sh
│ ├── update-webodm.ps1
│ ├── update-webodm.sh
│ ├── extract-frames.py
│ └── batch-process.py
├── docker-compose.yml # Default (Linux/Windows with GPU)
├── docker-compose.apple-silicon.yml # macOS Apple Silicon (CPU-only, arm64)
├── requirements.txt
├── .gitignore
├── LICENSE
├── MACOS_APPLE_SILICON.md
└── README.md

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Resources

👨‍💻 Author

Prashant Piprotar


⭐ If this repository helped you, please give it a star!

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages