Releases: fourMs/MGT-python
Releases · fourMs/MGT-python
v1.4.4
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 anMgAudio. Closes #171.MgVideo.motionvectors()— visualises the motion vectors carried by inter-frame codecs (MPEG/H.264/H.265) via FFmpeg'scodecview. Closes #254.
Fixed
- EVM/sonomotiongram timing:
MgVideo.lengthis a frame count (not seconds), so audio duration is computed aslength/fpsand progress is tracked in frames.
v1.4.3
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 pose —
pose()uses MediaPipe's GPU delegate; whendevice='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/MgFigureno longer auto-render as a cell's last expression — display happens only viashow(). This removes the duplicate (small + large) outputs from the audio figure methods and makesaverage()display only whenshow()is called. HTML helper kept asto_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
Fixed
- Critical: repaired a
thresholdoldcorruption (from a botchedthresh→threshold
replace) that broke the FFmpegthresholdfilter, leavingmotion(),motiongrams()
and related functions producing no frames and crashing. Motion analysis works again. skipwith large values no longer crashes:atempofilters 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), andaudio.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
Fixed
average()method restored — was accidentally removed in a prior refactor; now an alias forblend(component_mode='average')average()silently accepts legacy kwargsmethod=andnormalize=for backward compatibilitymotiongrams()andmotion()silently acceptnormalize=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.mdcorrected 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 (musicalgesturescommand)- Typed exceptions, enums, module-level logging
Changed
- Minimum Python version raised to 3.10
thresholdparameter name now consistent across all public APIscontrast/brightnessuse integer range −100 to 100
v1.3.3
NEW FUNCTIONALITIES
Mg360Videoclass: support 360-degree video input #315Mg360Video.convert_projection(): projection conversion, supports FFmpeg projections, and GoPro MAX's special.360projection (#324)Mg360Videois inherited fromMgVideo, therefore supports all existing video analysis functions
ISSUES
v.1.3.2
NEW FUNCTIONALITIES
_blurfaces.py: Embed audio in video and process files usingFFmpeg_input_test.py: Add a function to check ifFFmpegis 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
v1.2.9
NEW FUNCTIONALITIES
ISSUES