BlackMagic DeckLink Capture v3
BlackMagic DeckLink Capture v3 input properties for Script Engine. Captures live video and audio from a Blackmagic DeckLink card connected over SDI or HDMI — cameras, switchers, players, or any other source the card can receive. Supports either stereo (2-channel) or multi-channel (8-channel) audio capture, useful for multi-language programmes, surround sound, and split-feed workflows. Pick the desired device, channel, and audio channel count, and the input feeds the source into Composer's pipeline. Includes auto-start on load, freeze-frame on pause or lost input, automatic black-video detection with a script callback, an on-board still store for reference frames or fallback graphics, and a rich set of capture statistics for diagnostics.
| Property | Type | Access | Description |
|---|---|---|---|
ShowAdvancedOptions |
bool |
get/set |
Show or hide the input's advanced settings in the editor UI. [default=false]. |
DecklinkCaptureChannel |
DecklinkCaptureChannel |
get/set |
Which physical Decklink input port to capture from. Picks one of the Decklink input channels detected on the system. A card may expose multiple channels (e.g. SDI 1, SDI 2, HDMI), and only one input instance can capture from each channel at a time. Must be set before capture can start. If no Decklink card is found on startup, this is empty — make sure the BMD drivers are installed and the card is recognised by the system. |
DeviceName |
string |
get |
Friendly name of the Decklink device currently in use (read-only). Reflects the model/identifier reported by the Decklink driver for the selected DecklinkCaptureChannel (for example "DeckLink 8K Pro (1)"). Useful from scripts to confirm the right card was picked when more than one Decklink device is installed. |
AudioChannels |
AudioNumberOfChannels |
get/set |
Number of audio channels to capture from the source. [default=Two]. Two (stereo) is the standard choice for most workflows. Eight enables 8-channel capture, used for multi-language programmes (each language pair on its own channel pair), surround sound, or split-feed productions. The selected count must be supported by both the DeckLink card and the upstream source. |
PlaybackState |
PlaybackState |
get |
Current playback state of the input (read-only). Reflects whether the input is Stopped, Running, Paused, or in an error state. Driven indirectly by StartCommand, StopCommand, PauseCommand, and by AutostartCapture at load time. Read this from a script to decide whether the source is live; the value also drives the running indicator and the enabled state of the capture buttons. |
StartCommand |
Command |
get |
Start capturing from the selected Decklink input. |
StopCommand |
Command |
get |
Stop capturing from the Decklink input. |
PauseCommand |
Command |
get |
Pause or resume capture, freezing on the last frame while paused. |
AutostartCapture |
bool |
get/set |
Whether capture starts automatically as soon as the project loads. [default=true]. When true, the input invokes its start logic immediately on load (equivalent to running StartCommand). Disable to require an explicit start, useful when the source should only come live on operator action or via a script trigger. |
IsGenLockedToSyncSource |
bool |
get/set |
Whether the source is genlocked to a shared sync reference. [default=false]. In multi-camera productions where every camera is locked to a common sync generator (genlock), enabling this lets Composer take advantage of that shared timing for tighter inter-camera sync. Leave off when the source is free-running. |
KeepLastFrameOnLostInput |
bool |
get/set |
Whether to keep showing the last good frame when the input signal is lost. [default=true]. When true, a dropped or disconnected source freezes the picture on the most recent frame instead of going black — useful for productions where a brief signal glitch shouldn't be visible on air. Disable to show a clear "no signal" indication instead. |
FreezeFrameOnPause |
bool |
get/set |
Whether the picture freezes on the last frame when capture is paused. [default=true]. When true, PauseCommand holds the most recent frame on screen until capture resumes. Disable to go to black on pause instead. |
UsePinnedMemory |
bool |
get/set |
Use a high-performance memory mode for transferring frames from the card. [default=true]. When true, frames are received into a special memory area that is faster to copy across to the rest of the pipeline, at the cost of holding a bit more memory. Most users should leave this on; disable only when memory is very tight. |
UseSwrConverter |
bool |
get/set |
Whether to convert audio using the FFmpeg audio resampler. [default=false, debug]. Internal toggle that switches between the default audio converter and an alternative path. Leave off unless instructed otherwise during troubleshooting. |
NumVideoTransferTargets |
int |
get/set |
How many internal frame buffers the input keeps in flight. [min=5, max=30, default=10, debug]. More buffers absorb more capture jitter and momentary backpressure but use more memory. Increase only when troubleshooting dropped frames; leave at the default for normal use. |
ComponentLog |
ComponentLog |
get |
Recent log lines from the input — capture events and status messages (read-only). A short history of the most recent events, useful for diagnosing why capture failed to start, why the signal dropped, or why a black-video event fired. |
BlackVideoDetectionAction |
BlackVideoDetectionAction |
get/set |
What to do when the captured picture is detected as black (more than 99% black pixels). Choose how Composer reacts to a fully black input — for example logging a warning, raising an error indicator, or doing nothing. Useful for catching a disconnected camera or a misrouted feed that's still sending a valid signal but no actual picture. |
OnBlackVideoEventFunction |
string |
get/set |
Name of a Script Engine function to call when black video is detected or recovered. The function receives a single boolean argument — true when the picture has just gone black, false when a real picture has come back. Useful for triggering automatic follow-up actions (switch to a backup feed, send an alert, log the event). Leave blank to skip the callback. |
BlackVideoActive |
bool |
get |
True while the captured picture is currently detected as black (read-only). true when more than 99% of the picture is black, false when a real picture is present. Useful from a script to react to the live state directly, in addition to or instead of OnBlackVideoEventFunction. |
StillStoreMode |
BMDCaptureStillStoreMode |
get/set |
How the still store image is used in relation to the live capture. Choose between disabling the still store entirely, falling back to the still image only when input is lost, or always showing the still image instead of the live capture. Useful for keeping a clean reference frame on screen during cable swaps or rehearsals. |
StillStoreInputSelector |
StringCollectionEnum |
get/set |
Picker for which Still Image input feeds the still store. Lists all Still Image inputs in the project plus a "None" option. Selecting one copies its image into the still store, where it's used according to StillStoreMode. Selecting "None" clears the still store input link. |
StillStoreImageCount |
int |
get |
Number of snapshots currently saved in the still store on disk (read-only). Counts the saved images in the project's Snapshots folder. Increases each time StoreCommand runs. |
NewestStillStoreImageString |
string |
get |
File name of the most recent snapshot saved to the still store (read-only). |
LoadedStillStoreImageInfoString |
string |
get |
Information about the still store image currently loaded into memory (read-only). Typically the file name and basic dimensions. Useful for confirming which still image is actually being used right now. |
StillStoreImageActive |
bool |
get |
True when the still store image is currently being shown instead of the live capture (read-only). Reflects the runtime effect of StillStoreMode — for example, true when the source has dropped and the still store is filling in. Useful from a script to react to fallback behaviour. |
StoreCommand |
Command |
get |
Save the current captured frame as a snapshot in the still store. Writes the live frame to the project's Snapshots folder so it can be reused as a reference image or fallback graphic. |
RefreshStillStoreInputCommand |
Command |
get |
Reload the still store image from the input selected in StillStoreInputSelector. Useful when the source still image has changed since it was last copied in. |
Width |
int |
get |
Width of the video frames currently being captured, in pixels (read-only). |
Height |
int |
get |
Height of the video frames currently being captured, in pixels (read-only). |
CapturedFrames |
int |
get |
Total number of frames the input has captured since it was started (read-only). Should grow steadily at the source's frame rate during healthy capture. A counter that stops moving while the input is Running is a clear sign the source has gone silent or the cable has dropped. |
LastFrameCaptureDateTime |
DateTime |
get |
Local timestamp of the most recently captured frame (read-only). Updates continuously during capture. Useful for detecting "no frames in N seconds" type stalls. |
NumBlackPixels |
int |
get |
Number of black pixels detected in the most recently analysed frame (read-only, debug). Used internally by the black-video detection logic. |
OnVideoFrameArriveCounter |
int |
get |
Total number of "frame arrived" events the Decklink card has fired (read-only, debug). Counts every video frame the card delivers to Composer, including frames discarded before reaching the rendered output. |
PlaybackFrames |
int |
get |
Total number of frames Composer has rendered from this input (read-only). Compare against CapturedFrames and OnVideoFrameArriveCounter to confirm the input is keeping up with the source. |
LastVideoFormatChange |
string |
get |
Description of the most recent automatic video-format change detected on the input (read-only, debug). Updated when the Decklink card detects that the source has switched resolution or frame rate. Useful for diagnosing surprise format changes mid-production. |
AudioVideoQueueSize |
int |
get |
Number of captured audio/video frames currently waiting to be rendered (read-only, debug). Should sit close to zero on a healthy system. A growing queue means the rest of the pipeline is consuming frames more slowly than the card is delivering them. |
NumZeroDataFramesCaptured |
int |
get |
Number of frames the card delivered with no actual picture data (read-only, debug). A non-zero value usually indicates a problem at the source — for example a camera that dropped its signal mid-stream. |
NumInputlessFramesCapturedWhileWaitingForCorrectFormat |
int |
get |
Number of frames received before the input had locked on to a stable video format (read-only, debug). Counts the warm-up frames before the card finalises the source format. Normal during startup; a growing count later indicates repeated format changes. |
NumInputlessFramesCapturedWhileFormatDetected |
int |
get |
Number of empty frames received after the source format was locked in (read-only, debug). A growing value while the input is Running is a strong signal of source dropouts — the format is known but no real picture is arriving. |
NumSyncEventsSkipped |
int |
get |
Number of frames skipped because the source frame rate didn't match the project's frame rate (read-only, debug). Composer expects the source frame rate to match the project's master frame rate; frames that don't fit are dropped. A non-zero value points to a frame-rate mismatch on the cable. |
NumSampleZeroAudioFramesCaptured |
int |
get |
Number of audio frames received with zero samples (read-only, debug). Indicates moments where the card delivered an audio frame but it contained no samples — usually a sign of an upstream audio glitch. |
NumSampleErrorCountAudioFramesCaptured |
int |
get |
Number of audio frames received with an unexpected sample count (read-only, debug). Indicates moments where the card delivered an audio frame whose sample count didn't match what was expected for the running frame rate. |
NumAudioVideoFramesClearedOnFirstFrameRender |
int |
get |
Number of buffered audio/video frames discarded when the first real frame finally arrived (read-only, debug). Internal diagnostic counter that tracks how much warm-up data was thrown away to start playback cleanly. |
CapturePerformance |
string |
get |
Time spent on the capture thread per frame, formatted as a millisecond string (read-only, debug). Shows how long the input takes to receive each frame from the card. Persistently high values indicate the system or driver is under pressure. |
CaptureTimeDelta |
string |
get |
Time between successive captured frames on the capture thread, formatted as a millisecond string (read-only, debug). Should hover near the source's frame interval (e.g. ~20 ms at 50 fps). Spikes indicate the source is delivering frames irregularly. |
CaptureTimeWarningThreshold |
int |
get/set |
How much capture-time variation, in milliseconds, counts as a warning. [default=2, debug]. When the actual CaptureTimeDelta differs from the expected frame interval by more than this many milliseconds, NumCaptureTimeWarnings is incremented. Lower values are stricter; raise it on systems with naturally jittery capture timing. |
NumCaptureTimeWarnings |
int |
get |
Number of capture-time deltas that exceeded CaptureTimeWarningThreshold (read-only, debug). A growing value indicates persistent capture-thread jitter. |
ColorSpaceConversionPerformance |
string |
get |
Time spent converting captured frames to Composer's internal format, formatted as a millisecond string (read-only, debug). Should be a small fraction of the frame interval. Persistently high values indicate the conversion step is becoming a bottleneck. |
NumAudioVideoFramesRepeated |
int |
get |
Number of times the input had to repeat the previous frame because no new one was ready (read-only, debug). A growing value while running indicates the source isn't delivering frames at the expected rate. |
NumAudioVideoFramesFlushed |
int |
get |
Number of times the input dropped its accumulated buffer to recover from drift (read-only, debug). Buffer flushes happen when the captured stream has fallen too far behind real time. Non-zero values indicate sustained pressure somewhere in the pipeline. |
FirstCorrectFrameArrived |
bool |
get |
True once the first valid captured frame has been rendered after starting (read-only, debug). Useful to gate behaviour that should only fire after the input has actually started producing real output. |
Temperature |
int |
get |
Reported operating temperature of the Decklink card, in degrees Celsius (read-only, debug). Useful for monitoring long-running productions where thermal pressure can cause instability. |
PciLinkWidth |
int |
get |
PCI Express link width the Decklink card is currently negotiated at (read-only, debug). Reflects the number of PCIe lanes in use (e.g. x4, x8, x16). A lower value than the card's maximum can indicate it's running below its rated bandwidth. |
PciLinkSpeed |
int |
get |
PCI Express link speed the Decklink card is currently negotiated at (read-only, debug). Reflects the PCIe generation in use (1, 2, 3, 4). A lower value than the card's maximum can indicate motherboard or slot limitations. |
Inherits from: AbstractInput, AbstractAudioProcessing, AbstractAudioMetering.
See also: BlackMagic DeckLink Capture v3 in Inputs — user-facing introduction, screenshots, and section summaries.