Skip to main content

Estimate the distance to an explosion from video and audio analysis

Project description

Explosion Distance Estimator

Install this package with:

pip install explosion_distance_estimator

Then run:

explosion-distance-estimator --help

Overview

The Explosion Distance Estimator is a Python tool that estimates the distance to an explosion in a video. It calculates the distance based on the delay between the visible flash and the sound of the blast, using video and audio analysis, real-world temperature data from Open-Meteo, and basic physics principles.

Features:

  • Video Analysis: Extracts frames from the video to detect the moment of the explosion (flash).
  • Audio Analysis: Extracts the audio and detects the peak of the explosion's sound.
  • Temperature Data: Fetches temperature data from Open-Meteo for the given date and location.
  • Distance Calculation: Uses basic physics to estimate the distance to the explosion:
    v = 331 + 0.6 × T
    distance = (sound_time - flash_time) × v
    

Basic run

explosion_distance_estimator

Uses:

  • Default video: test_explosion.mp4
  • Today’s date
  • Kyiv coordinates (lat: 50.4501, lon: 30.5234)

Full CLI options

explosion_distance_estimator   --video explosion.mp4   --lat 47.0951   --lon 37.5496   --temp 1   --plot   --keep   --outdir output

Options:

Flag Description
--video Path to the video file (MP4 with audio)
--temp Weather date: either a day offset (0 = today, 1 = yesterday) or exact date (2024-03-27)
--lat Latitude of the explosion location
--lon Longitude of the explosion location
--plot Generate 3 plots: brightness, audio spectrogram, and combined view
--keep Keep extracted frames and audio after analysis
--outdir Output folder for logs, plots, and CSV (default: output)

Output

  • Plots: brightness_plot.png, audio_spectrogram.png, combined_plot.png (if --plot is set)
  • Run log: output/run_YYYYMMDD_HHMMSS.log
  • CSV log: output/log.csv
  • Temporary frames and audio (only if --keep is used)

Example Plot Output

Brightness Plot

Brightness Plot

Audio Spectrogram

Audio Spectrogram

Combined Timeline

Combined Plot


Example Scenarios

# Detect explosion from a video recorded yesterday in Mariupol
explosion_distance_estimator   --video mariupol_blast.mp4   --temp 1   --lat 47.0951   --lon 37.5496   --plot

# Estimate using a historical date and keep all intermediate files
explosion_distance_estimator   --temp 26.03.2025   --keep

How It Works

  1. Extract frames from the video and analyze brightness
  2. Detect the flash moment (spike in brightness)
  3. Extract audio and detect the sound peak (blast)
  4. Fetch temperature for the provided date/location via Open-Meteo
  5. Estimate the distance using basic physics:
    v = 331 + 0.6 × T
    distance = (sound_time - flash_time) × v
    

Requirements

🔧 FFmpeg Required

This tool uses ffmpeg under the hood to extract audio from video files. You must have the FFmpeg binary installed and accessible in your system’s PATH.

🛠️ How to install FFmpeg:

macOS

  1. With Homebrew (recommended):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew install ffmpeg
    
  2. Manual download:

    • Download from: https://evermeet.cx/ffmpeg/
    • Move the downloaded ffmpeg binary to /usr/local/bin/:
      sudo mv ~/Downloads/ffmpeg /usr/local/bin/
      chmod +x /usr/local/bin/ffmpeg
      

Windows

  1. Download FFmpeg from: https://ffmpeg.org/download.html
  2. Extract and move the bin/ directory to a known location (e.g., C:\ffmpeg\bin)
  3. Add that location to your system PATH:
    • Open Start Menu → search “Environment Variables”
    • Edit PATH and add C:\ffmpeg\bin

Linux (Debian/Ubuntu)

sudo apt update
sudo apt install ffmpeg

Check installation

After installing, confirm ffmpeg is available:

ffmpeg -version

Credits

  • The core logic for estimating the distance between flash and sound is based on an approach shared by @Dmojavensis. Follow him, please. He has done some incredible geolocations.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

explosion_distance_estimator-1.0.6.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

explosion_distance_estimator-1.0.6-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file explosion_distance_estimator-1.0.6.tar.gz.

File metadata

File hashes

Hashes for explosion_distance_estimator-1.0.6.tar.gz
Algorithm Hash digest
SHA256 e515b7878e05b6831c2111c7b29a6bc66b7a542bdd98929fd1f780856b62a5d1
MD5 d9b3735e9c2653e9595bdc027f1f1cfb
BLAKE2b-256 ddb19b49c647acb1b848565d29e979e881d11d95054c6a4532baafd363426a12

See more details on using hashes here.

File details

Details for the file explosion_distance_estimator-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for explosion_distance_estimator-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cd29e305e02340128b2724d10a69ef80f6099914cac99dcad0fa6cd82ac3863d
MD5 fe84a5f982440393152c937677f82ad1
BLAKE2b-256 315491124544e3ebb090f160e0259edf3ab49197dc1c5fda7b70f7dd6f6c847b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page