Stream Falcon BMS avionics displays—MFD, DED, PFL, RWR, and HUD—over the network as an MPEG‑TS/UDP video stream using FFmpeg.
The tool reads display textures from Falcon BMS shared memory, composites them into a configurable screen layout, encodes the result with FFmpeg, and streams it via UDP. You can then display it with ffplay (or any UDP receiver) as an overlay or window.
- Reads Falcon BMS texture shared memory (
FalconTexturesSharedMemoryArea). - Crops individual displays: HUD, MFDLeft, MFDRight, DED, RWR, PFL.
- Composes them into a single video frame according to a JSON layout.
- Encodes the frame with FFmpeg (H.264) and sends it over UDP.
- You display it with ffplay (or any UDP‑capable player) as an overlay/window.
- Falcon BMS (4.35+ with RTT texture export enabled)
- .NET 6+ runtime
- FFmpeg
- Included in the release package, or
- Any system
ffmpeg(just configure the path inconfig.json)
In your Falcon BMS config (typically User\Config\Falcon BMS.cfg), ensure RTT texture export is enabled:
set g_bExportRTTTexture 1(The exact line name may vary by version; look for “RTT” or “export texture” in your config comments.)
Restart Falcon BMS after changing this.
Create or edit config.json in the same folder as FalconDisplay.exe.
Example:
{
"OutputWidth": 1920,
"OutputHeight": 1080,
"TargetIp": "192.168.1.22",
"TargetPort": 11000,
"FfmpegPath": "ffmpeg.exe",
"Fps": 60,
"Sensors": [
{
"Name": "HUD",
"X": 0,
"Y": 0,
"Width": 640,
"Height": 480
},
{
"Name": "MFDLeft",
"X": 640,
"Y": 0,
"Width": 400,
"Height": 400
},
{
"Name": "MFDRight",
"X": 1040,
"Y": 0,
"Width": 400,
"Height": 400
},
{
"Name": "DED",
"X": 0,
"Y": 480,
"Width": 400,
"Height": 300
},
{
"Name": "RWR",
"X": 400,
"Y": 480,
"Width": 400,
"Height": 300
},
{
"Name": "PFL",
"X": 800,
"Y": 480,
"Width": 400,
"Height": 300
}
]
}Fields:
OutputWidth,OutputHeight– final composed resolution.TargetIp,TargetPort– where FFmpeg sends the UDP stream.FfmpegPath– path toffmpeg.exe(e.g."ffmpeg.exe"if in PATH, or a full path).Fps– target framerate (e.g.60). If omitted or0, defaults to 60.Sensors– list of displays to include:Name– one of:HUD,MFDLeft,MFDRight,DED,RWR,PFL.X,Y– top‑left position in the output frame.Width,Height– size in the output frame (the tool will scale from the real sensor).
Launch:
FalconDisplay.exeor with a custom config:
FalconDisplay.exe config.jsonThe program will:
- Wait for Falcon BMS shared memory.
- Initialize the sensors and read their rectangles.
- Start FFmpeg and begin streaming to
TargetIp:TargetPort.
Keep this window open while flying. Press any key to stop.
On the same PC (or another one, if you point TargetIp to it), open a command prompt and run:
ffplay -window_title "FalconDisplay" -alwaysontop -noborder -left 0 -top 0 -flags low_delay -fflags nobuffer udp://0.0.0.0:11000Adjust:
udp://0.0.0.0:11000→ matchTargetPort(and optionally bind to a specific IP).-left 0 -top 0→ position on your screen.- Remove
-noborderor-alwaysontopif you prefer a normal window.
Example: windowed, not fullscreen, on a second monitor at offset 1920×0:
ffplay -window_title "FalconDisplay" -left 1920 -top 0 -flags low_delay -fflags nobuffer udp://0.0.0.0:11000You should now see your composed Falcon BMS displays in a separate window.