Skip to content

Releases: fourMs/MGT-python

v1.4.4

26 Jun 10:53

Choose a tag to compare

What's new in 1.4.4

Added

  • MgVideo.eulerian() — Eulerian Video Magnification (Wu et al., SIGGRAPH 2012) to reveal subtle changes. mode='color' amplifies subtle colour changes (pulse/breathing); mode='motion' amplifies subtle motion. Reads/writes via the FFmpeg pipe (any format) and is memory-conscious (two-pass color / streaming-IIR motion), addressing the format & memory limits of existing PyEVM ports. Closes #212.
  • MgVideo.sonomotiongram() — sonifies the motiongram by treating it as a magnitude spectrogram and resynthesising audio via inverse STFT (Griffin–Lim). Returns an MgAudio. Closes #171.
  • MgVideo.motionvectors() — visualises the motion vectors carried by inter-frame codecs (MPEG/H.264/H.265) via FFmpeg's codecview. Closes #254.

Fixed

  • EVM/sonomotiongram timing: MgVideo.length is a frame count (not seconds), so audio duration is computed as length/fps and progress is tracked in frames.

v1.4.3

26 Jun 10:11

Choose a tag to compare

What's new in 1.4.3

Added

  • MgVideo.heatmap() — motion heatmap showing which parts of the video change the most (optionally overlaid on the average frame).
  • MgVideo.motiontempo() — estimates dominant movement tempo (Hz + BPM) from the quantity of motion (addresses #158).
  • descriptors(save_data=True) — save per-frame audio descriptors to csv/tsv/txt (closes #124).
  • MediaPipe GPU posepose() uses MediaPipe's GPU delegate; when device='gpu' is requested but OpenCV lacks CUDA, it auto-switches to the MediaPipe backend so the GPU is actually used.
  • cuda_build_available() / cuda_unavailable_reason() helpers.

Changed

  • Display model: MgImage/MgFigure no longer auto-render as a cell's last expression — display happens only via show(). This removes the duplicate (small + large) outputs from the audio figure methods and makes average() display only when show() is called. HTML helper kept as to_html().
  • GPU-fallback messages now explain the real cause (pip OpenCV is built without CUDA) rather than implying a missing GPU.

Fixed

  • spectrogram()/descriptors() time axis pinned to the actual data extent — no more trailing whitespace or mislabeled timeline when the container is longer than the decoded audio.

V1.4.2

26 Jun 09:29

Choose a tag to compare

Fixed

  • Critical: repaired a thresholdold corruption (from a botched threshthreshold
    replace) that broke the FFmpeg threshold filter, leaving motion(), motiongrams()
    and related functions producing no frames and crashing. Motion analysis works again.
  • skip with large values no longer crashes: atempo filters are chained for ratios
    above FFmpeg's per-filter limit of 100, and colons are stripped from output filenames.
  • Restored consistent behaviour of the threshold/filtertype options in motiongrams().

Added

  • info(type='summary') now reports video codec/profile, pixel format, color space,
    and audio codec/sample-rate/bit-rate alongside resolution, frames, fps, and duration.
  • audio.mfcc(), audio.tempo() (beat tracking with tempo, beat times, inter-beat
    intervals and beat regularity), and audio.beat_statistics() (circular timing analysis).
  • musicalgestures/_analysis.py: general signal/statistics utilities (smooth,
    bandpass, dominant_frequency, circular_stats, rayleigh_test, synchrony),
    exported at package level.

v1.4.0

26 Jun 08:26

Choose a tag to compare

Fixed

  • average() method restored — was accidentally removed in a prior refactor; now an alias for blend(component_mode='average')
  • average() silently accepts legacy kwargs method= and normalize= for backward compatibility
  • motiongrams() and motion() silently accept normalize= kwarg for backward compatibility
  • OGG video conversion, from_numpy() path bug, optical flow export, history weights parsing, cropping stall on Linux
  • All examples in docs/examples.md corrected to match current API

Added

  • MediaPipe pose estimation backend
  • GPU support (optional) for optical flow, face blurring, and pose estimation
  • Region-of-interest support for motion data
  • MgFeatures, MgVideoReader, MgPipeline, MgDataset, CLI (musicalgestures command)
  • Typed exceptions, enums, module-level logging

Changed

  • Minimum Python version raised to 3.10
  • threshold parameter name now consistent across all public APIs
  • contrast/brightness use integer range −100 to 100

v1.3.3

24 Mar 16:24

Choose a tag to compare

NEW FUNCTIONALITIES

  • Mg360Video class: support 360-degree video input #315
    • Mg360Video.convert_projection(): projection conversion, supports FFmpeg projections, and GoPro MAX's special .360 projection (#324)
    • Mg360Video is inherited from MgVideo, therefore supports all existing video analysis functions

ISSUES

  • Fix problems with info() #316
  • Adding pixelarray function ref #322

v.1.3.2

04 Jan 15:10

Choose a tag to compare

NEW FUNCTIONALITIES

  • _blurfaces.py: Embed audio in video and process files using FFmpeg
  • _input_test.py: Add a function to check if FFmpeg is properly installed
  • Add github actions workflows and automate documentation on pushes
  • Update MusicalGesturesToolbox notebook

ISSUES

  • Add VMAF motion score #314
  • Fix missing amplitude values in color-waveform #309
  • Fix blur_faces() error 2 #308
  • Fix progress bar problem blur_faces() #307
  • Fix blur_faces numpy issue #306
  • Fix mac ffmpeg issues #304
  • Fix not compatible with python 3.12 #303
  • Fix read/write original files as arrays #294
  • Add a completely memory-based processing flow #294
  • Fix integrating Github CI, and more #291
  • Fix add coloured waveforms #159

v1.3.0

04 Oct 08:55

Choose a tag to compare

NEW FUNCTIONALITIES

ISSUES

  • Fix keyframe history images #203
  • Fix problems downloading models for pose #299
  • Fix index out of range in audio object #300
  • Fix harmonic/percussive waveform #301

v1.2.9

30 May 08:48

Choose a tag to compare

NEW FUNCTIONALITIES

  • Add harmonic/percussive source separation #272
  • Add optional title SSM #286
  • Add MgAudio object #273

ISSUES

  • Fix motion() chokes on rotated video files #289
  • Fix crop preview #288
  • Fix metadata rotation #287
  • Fix titles on waveforms and spectrograms #285
  • Fix SSM on videograms #284
  • Fix time in trimmed videos #279
  • Fix Error with SSM #278

v1.2.8

04 Mar 19:26

Choose a tag to compare

ISSUES

Fix video playback in Colab #277
Fix MP4 conversion #282
Normalized pixel values in motion() #290

v1.2.7

12 Jan 11:48

Choose a tag to compare

NEW FUNCTIONALITIES

  • Update MGT promo picture

ISSUES

  • Fix filtering functions don't work #274
  • Fix strange inversion #275
  • Fix SSM issue #276