Summary: Multi-input FFdecoder support, async per-frame metadata extraction, and high-performance luma-only YUV decoding. 🎉
Full Changelog: https://abhitronix.github.io/deffcode/latest/changelog/#v027-2026-04-20
What's Changed
✨ New Features
- Added multi-input source list support in
FFdecoderandSourcer, enabling simultaneous decoding from multiple input streams (e.g., multiple RTSP sources). - Added async per-frame metadata extraction via FFmpeg's
showinfofilter inFFdecoder, exposing frame number, PTS time, and keyframe info per decoded frame. - Added fast luma-only (
-extract_luma) YUV decoding inFFdecoder— slices the Y-plane directly from YUV/NV bytestreams into a 2D uint8 ndarray, bypassing FFmpeg colorspace conversion for significant speed gains overframe_format="gray".
⚡️ Updates/Improvements
- Migrated packaging from
setup.pytopyproject.tomlwith Python 3.12/3.13 classifier support. - Adopted Ruff project-wide for linting and formatting, replacing flake8/black.
- Added new documentation recipes for multi-input sources, per-frame metadata, YUV grayscale fast-path.
- Restructured installation guide with dedicated Poetry support.
💥 Breaking Updates/Changes
- ☠️ Minimum supported Python version raised to 3.10+; Python 3.8 and 3.9 are no longer supported.
🐛 Bug-fixes
- Fixed
StopIterationcrash inget_supported_demuxerswhen FFmpeg-demuxersoutput lacks the expected--separator — now returns an empty list with a warning. - Fixed regex expression bugs in
FFhelper.get_supported_demuxersaffecting multi-line output and demuxer names containing commas.
You can become a sponsor via GitHub Sponsors by clicking the button below:
Thanks a million! 😊