DecklinkPlayer is a Windows desktop playout tool for Blackmagic DeckLink cards. It is built for quick studio use: browse a media library, preview inside the app, seek, pause, shuttle, play playlists, and output SDI through the Blackmagic DeckLink SDK.
FFmpeg is used only for decoding, probing, preview helpers, and PC preview audio. DeckLink SDI output is handled by the Blackmagic SDK.
DeckLink playout is fixed to one clean broadcast output mode:
- Device: selected from the DeckLink card dropdown
- Format:
1080i50 - DeckLink mode code:
Hi50 - Size:
1920x1080 - Frame rate:
25 fps - Field order: upper field first
- Pixel format:
uyvy422 - Audio: 48 kHz, 32-bit PCM, stereo embedded in SDI
There is no manual sync control and no DeckLink mode selector. This avoids accidental format drift.
For DeckLink output, judge sync using SDI video with embedded SDI audio.
PC audio is intentionally disabled during DeckLink playout because Windows/ffplay monitoring latency can make sync look wrong. PC audio is available only in Preview-only mode.
- Desktop WinForms GUI.
- Blackmagic DeckLink SDK playout with embedded audio.
- Fixed
1080i50SDI output. - DeckLink card selector with refresh.
- Preview-only mode when no DeckLink output is needed.
- In-app video preview beside SDI output.
- Vertical left/right audio meters in dBFS.
- Media tree and search, defaulting to
C:\casparcg\_media. - Video and still-image browsing.
- Pause, resume, stop, seekbar, frame step, 5-frame, 10-frame, and 1-second seek buttons.
- Forward and reverse shuttle speeds.
- Playlist playback.
- MediaInfo window.
- Playback logs in a
logssubfolder. - x64-only build.
- Windows x64.
- .NET Desktop Runtime 10, unless you publish self-contained.
- Blackmagic Desktop Video drivers.
DeckLinkAPI.Interop.dllin the output folder.- Your bundled 64-bit FFmpeg binaries beside the running exe:
ffmpeg.exeffprobe.exeffplay.exeonly for Preview-only PC audio
The app uses the bundled FFmpeg binaries beside the executable, not random FFmpeg from PATH.
Build x64:
dotnet build .\ffmpegplayer.csproj -p:Platform=x64The build target automatically:
- Closes old running
decklinkplayer*,ffmpegplayer*, andffmpegprocesses. - Removes old timestamped player exe files from the output folder.
- Builds into
bin\x64\Debug\DecklinkPlayer. - Creates a timestamped exe like
decklinkplayer_130626_100808.exe. - Deletes the plain
decklinkplayer.exe. - Starts the new timestamped exe automatically.
Use the latest timestamped exe in:
bin\x64\Debug\DecklinkPlayer
Example:
.\bin\x64\Debug\DecklinkPlayer\decklinkplayer_130626_100808.exe- Choose a media library folder, or use the default
C:\casparcg\_media. - Select a file from the media tree or search results.
- Select the DeckLink card.
- Keep
Preview onlyunchecked for SDI output. - Use SDI embedded audio to judge lip sync.
- Use
Preview onlyif you want local preview without DeckLink output.
The app has keyboard shortcuts that can be mapped from Contour ShuttlePRO v2.
General transport:
F1orEsc: stopF2: play selected playlist rowF3: cue selected playlist rowF4orSpace: pause/resumeF5: cue next playlist rowF6: play next playlist rowCtrl+Enter: play selected media-library clipJ: step reverse shuttle speedK: 0x pauseL: step forward shuttle speed
Seek and marks:
Left/Right: -1 / +1 frameShift+Left/Shift+Right: -5 / +5 framesCtrl+Left/Ctrl+Right: -10 / +10 framesAlt+Left/Alt+Right: -1 / +1 secondI/O: mark IN / mark OUTHome/End: go to IN / go to OUTF7/F8: mark IN / mark OUTF9/F10: go to IN / go to OUT
Exact ShuttlePRO ring speed shortcuts:
Ctrl+Shift+1toCtrl+Shift+9:-0.25x,-0.50x,-0.75x,-1x,-1.5x,-2x,-5x,-10x,-20xCtrl+Alt+1toCtrl+Alt+9:+0.25x,+0.50x,+0.75x,+1x,+1.5x,+2x,+5x,+10x,+20xCtrl+Shift+0orCtrl+Alt+0:0x
The generated ShuttlePRO v2 profile maps the physical ring to the practical 7-position speeds:
- Reverse:
-0.25x,-0.50x,-1x,-2x,-5x,-10x,-20x - Forward:
+0.25x,+0.50x,+1x,+2x,+5x,+10x,+20x - The farther you rotate the ring, the faster the shuttle speed becomes.
- When the ring is released/centered, the app auto-returns to
0x.
Regenerate and install the profile:
powershell.exe -ExecutionPolicy Bypass -File .\tools\Create-ShuttleProV2Profile.ps1The script creates ShuttleProfiles\DeckLinkPlayer.pref, backs up the Contour active database, inserts a DeckLinkPlayer profile for decklinkplayer_*.exe, and restarts the Contour helper.
Settings are saved here:
%APPDATA%\DeckLinkPlayer\settings.txt
Saved values include:
- DeckLink device
- Media root folder
- Preview-only preference
- PC audio preference
The SDI output mode is not saved because it is fixed to 1080i50.
Playback logs are written to:
bin\x64\Debug\DecklinkPlayer\logs
Log file names look like:
ffmpeg_playout_DDMMYY_HHMMSS.log
Logs include decoder commands, FFmpeg messages, SDK playback status, and troubleshooting notes.
- If DeckLink is not installed or not detected, the app remains usable in Preview-only mode.
- If playback cannot start, check that
ffmpeg.exeandffprobe.exeare beside the timestamped exe. - If Preview-only PC audio does not start, check that
ffplay.exeis beside the timestamped exe. - If SDI sync looks wrong, make sure you are not listening to PC audio while watching DeckLink video.
- If the app asks for .NET runtime, install the x64 .NET Desktop Runtime 10.
- Main GUI:
MainForm.cs - DeckLink SDK playout engine:
DeckLinkSdkPlayer.cs - FFmpeg command helpers and CLI parsing:
FfmpegDeckLink.cs,Cli.cs - Audio meter control:
AudioMeterBar.cs - MediaInfo integration:
MediaInfoForm.cs,MediaInfoProvider.cs - Media root browser:
MediaRootDialog.cs - Reverse playback/cache:
ReverseFrameCache.cs,ReverseAudioChunkQueue.cs - DeckLink COM interop:
Interop\DeckLinkAPI.Interop.dll
The project file is still named ffmpegplayer.csproj for history, but the built app is decklinkplayer.
