Node.js bindings for asynchronous capture and playback with Blackmagic Design video devices.
Macadam is a Node.js native addon that provides asynchronous bindings to Blackmagic Design capture and playback devices. It allows developers to read video/audio from capture cards and output to playback hardware using a simple JavaScript API, supporting features like keying, timecode, and device configuration.
Node.js developers building video applications that interface with Blackmagic hardware, such as live streaming systems, video processing pipelines, broadcast tools, or media servers.
It offers a high-level, promise-based API that abstracts the low-level DeckLink SDK, enabling rapid development of cross-platform video applications without sacrificing performance or hardware capabilities.
Async node.js interface to Blackmagic Design capture and playback devices.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses async/await patterns for straightforward capture and playback of video frames and audio packets, as demonstrated in the README examples with promise-based frame retrieval.
Supports Linux, Windows, and macOS with Blackmagic Desktop Video software, enabling consistent development across major operating systems as stated in the installation prerequisites.
Includes keying support for graphics overlays with alpha control and comprehensive timecode handling, essential for broadcast and live production workflows detailed in the keying and timecode sections.
Allows programmatic control over DeckLink device parameters via getDeviceConfig and setDeviceConfig, offering fine-grained hardware management beyond the Desktop Video Setup utility.
Requires Blackmagic SDK, node-gyp, a C/C++ development kit, and Python 2.7, making installation and compilation more involved than pure JavaScript modules, as noted in the prerequisites.
Only works with Blackmagic devices, and USB3 devices are explicitly unsupported on Linux, restricting hardware flexibility and cross-vendor compatibility.
Relies on Node.js experimental N-API features in older versions, which could lead to instability or breaking changes, as mentioned in the status section.