Ndilibdotnet2 Apr 2026

p_ndi_name = "My .NET Sender", // visible on network p_groups = null, // optional group filtering clock_video = true, // auto timestamp clock_audio = true ; IntPtr sender = NDIlib.send_create(ref sendSettings); // Prepare frame (e.g., 1920x1080, RGBA) var videoFrame = new NDIlib.video_frame_v2_t

using NewTek.NDI; class Program

var metadata = new NDIlib.metadata_frame_t p_data = "\"command\":\"tally\"" ; NDIlib.send_send_metadata(sender, ref metadata); Receive: ndilibdotnet2

NDIlib.recv_recv_metadata(receiver, out metadataFrame); | Problem | Solution | |---------|----------| | Exception DllNotFoundException | Ensure NDIlib_x64.dll in PATH or bin folder | | High CPU usage | Use recv_bandwidth_lowest for preview; call NDIlib.recv_free_* immediately | | Video tearing | Use NDIlib.send_send_video_async_v2 with a frame queue | | Source not found | Check firewall; set p_groups = null or correct group name | 8. Minimal Complete Sender Example using NewTek.NDI; NDIlib.initialize();

source_to_connect_to = selectedSource, color_format = NDIlib.recv_color_format_e.recv_color_format_RGBX_RGBA, bandwidth = NDIlib.recv_bandwidth_e.recv_bandwidth_highest, allow_video_fields = true ; IntPtr receiver = NDIlib.recv_create_v3(ref recvSettings); while (running) p_ndi_name = "My

sample_rate = 48000, no_channels = 2, no_samples = 960, // 20ms @ 48kHz timecode = 0, p_data = audioDataPtr ; NDIlib.send_send_audio_v2(sender, ref audioFrame); Send:

var recvSettings = new NDIlib.recv_create_v3_t p_ndi_name = "My .NET Sender"

// Copy frame data (videoFrame.p_data, line_stride, etc.) // Don't forget to call NDIlib.recv_free_video_v2(receiver, ref videoFrame)

var videoFrame = new NDIlib.video_frame_v2_t(); var audioFrame = new NDIlib.audio_frame_v2_t(); var metadataFrame = new NDIlib.metadata_frame_t(); NDIlib.recv_recv_v3(receiver, out videoFrame, out audioFrame, out metadataFrame);

Console.WriteLine("Failed to initialize NDI"); return;

xres = 1920, yres = 1080, FourCC = NDIlib.FourCC_type_e.FourCC_type_RGBA, frame_format_type = NDIlib.frame_format_type_e.frame_format_type_progressive, timecode = 0, p_data = yourPixelBufferPtr, // IntPtr to raw RGBA data line_stride_in_bytes = 1920 * 4 ; NDIlib.send_send_video_v2(sender, ref videoFrame);