VisioForge

Last updated: Januar 2026

Video Capture SDK .NET vs FFmpeg Wrappers

Umfassender .NET Video-Capture-Vergleich

Die Wahl des richtigen Video-Capture-Frameworks für Ihre .NET-Anwendung ist eine entscheidende architektonische Entscheidung. Dieser Leitfaden bietet einen detaillierten, unvoreingenommenen Vergleich zwischen VisioForge Video Capture SDK .NET — einer speziell entwickelten Capture-Engine — und FFmpeg-basierten Wrappern wie FFmpeg.AutoGen, Xabe.FFmpeg und FFMpegCore. Wir untersuchen Architektur, Funktionen, Leistung, Lizenzierung und praxisnahen Code, damit Sie eine fundierte Entscheidung treffen können.

Zusammenfassung

AspektVideo Capture SDK .NETFFmpeg Wrappers
ArchitekturDual-Engine: natives DirectShow/Media Foundation + eingebettete FFmpeg-PipelinesCLI-Prozess-Wrapper um ffmpeg.exe / libavcodec
Capture-QuellenWebcams, Bildschirme, IP-Kameras, Capture-Karten, TV-Tuner, virtuelle QuellenAbhängig von FFmpeg-Build-Flags; typischerweise Webcams, Bildschirme, RTSP
Live-VorschauIntegrierte GPU-beschleunigte Vorschau mit OverlaysKeine native Vorschau; erfordert Piping von Frames an einen separaten Renderer
AufnahmeformateMP4, MKV, WebM, AVI, WMV, MOV, TS, GIF + 30 weitereAlle von FFmpeg unterstützten Formate (umfangreich)
Multi-OutputGleichzeitige Aufnahme + Streaming + Snapshots aus einer PipelineMehrere Ausgaben über Tee-Muxer oder mehrere Prozesse
HardwarebeschleunigungNVENC, QSV, AMF, DXVA2, D3D11VA, VideoToolboxNVENC, QSV, AMF, VAAPI, VDPAU (falls mit Unterstützung kompiliert)
.NET-IntegrationNative .NET-API, Events, async/await, WinForms/WPF/MAUI-SteuerelementeProcess.Start() oder P/Invoke; eingeschränkte .NET-Idiome
LizenzierungKommerzielle Pro-Entwickler-Lizenz (unbefristet oder Abonnement)LGPL/GPL — Verknüpfungseinschränkungen; Wrapper MIT/Apache
PreiseAb EUR 489 (Home) bis EUR 6.999 (Team)Kostenlos (aber GPL-Compliance-Kosten sind nicht trivial)
SupportDediziertes Ticketsystem, Prioritäts-SLA, individuelle BuildsCommunity-Foren, Stack Overflow, Mailinglisten

Architektur im Detail

Video Capture SDK .NET Architektur

Das Video Capture SDK verwendet ein Dual-Engine-Design. Die primäre Engine umschließt DirectShow und Media Foundation unter Windows und bietet nativen Zugriff auf jedes vom Betriebssystem bereitgestellte Capture-Gerät. Eine sekundäre eingebettete FFmpeg-Pipeline übernimmt erweiterte Codec-Operationen, IP-Kamera-Einspeisung und plattformübergreifende Aufnahme. Beide Engines teilen sich eine einheitliche .NET-API-Oberfläche, sodass ein Wechsel zwischen ihnen keine Codeänderungen erfordert.

  • Native Windows-Capture über DirectShow- und Media Foundation-Filtergraphen
  • Eingebettetes FFmpeg für Codec-Flexibilität ohne externe CLI-Abhängigkeiten
  • GPU-beschleunigte Vorschau über Direct3D / OpenGL-Renderer
  • Ereignisgesteuerte Architektur mit .NET async/await-Unterstützung
  • Einzelprozessmodell — keine Verwaltung von Kindprozessen erforderlich

FFmpeg Wrapper Architektur

FFmpeg-Wrapper (.NET-Bibliotheken wie FFmpeg.AutoGen, Xabe.FFmpeg, FFMpegCore oder MediaToolkit) bieten eine verwaltete Schnittstelle zur FFmpeg-CLI oder zu den libav*-Bibliotheken. Der CLI-Ansatz startet ffmpeg.exe als Kindprozess und kommuniziert über Befehlszeilenargumente und Standard-E/A-Pipes. Der P/Invoke-Ansatz verknüpft sich direkt mit libav*-Shared-Libraries für niedrigeren Zugriff.

  • CLI-Wrapper starten ffmpeg.exe und parsen die stdout/stderr-Ausgabe
  • P/Invoke-Wrapper (FFmpeg.AutoGen) rufen libav*-C-Funktionen direkt auf
  • Keine integrierte UI-Integration — Frames müssen manuell gerendert werden
  • Multiprozess-Architektur erhöht die Komplexität der Zustandsverwaltung
  • Volle FFmpeg-Codec-/Formatunterstützung bei Kompilierung mit allen Flags

Wesentliche architektonische Unterschiede

AspektVideo Capture SDKFFmpeg Wrappers
ProzessmodellEinzelprozess, In-Proc-EngineKindprozess (CLI) oder In-Proc (P/Invoke)
GeräteerkennungNative OS-Aufzählungs-APIsffmpeg -list_devices oder manuelle Abfrage
Frame-PipelineInterner Filtergraph mit verwalteten CallbacksRohe Frames über stdout oder Shared Memory pipen
Fehlerbehandlung.NET-Ausnahmen und ereignisbasierte FehlerStderr-Parsing oder C-Rückgabecodes
ZustandsverwaltungVerwaltete Zustandsmaschine mit EventsProzesslebenszyklus-Management
SpeichermodellVerwaltet + gepinnte native PufferUnverwaltete Allokation über libav* oder Pipe-Puffer

Funktionsvergleich im Detail

Capture-Quellen

FunktionVideo Capture SDKFFmpeg Wrappers
USB-Webcams
Integrierte Laptop-Kameras
Bildschirm- / Desktop-Capture
Anwendungsfenster-Capture⚠️(Eingeschränkt; erfordert plattformspezifische Flags)
IP-Kameras (RTSP/ONVIF)
Capture-Karten (Blackmagic, Magewell)⚠️(Über DirectShow/V4L2, wenn Treiber diese bereitstellen)
TV-Tuner (BDA/DVB)
Virtuelle Kameras (OBS, NDI)⚠️(Über DirectShow unter Windows)
NDI-Quellen⚠️(Erfordert benutzerdefinierten FFmpeg-Build mit NDI)
DECKLINK-Eingang(FFmpeg hat decklink-Eingangsunterstützung)

Live-Vorschau

FunktionVideo Capture SDKFFmpeg Wrappers
Integrierte Video-Vorschau
GPU-beschleunigtes Rendering
Text- / Bild-Overlays in der Vorschau(Muss extern gerendert werden)
Vorschau ohne Aufnahme
Mehrere Vorschaufenster
WinForms / WPF / MAUI-Steuerelemente(Keine nativen UI-Steuerelemente)

Aufnahme

FunktionVideo Capture SDKFFmpeg Wrappers
MP4 (H.264 / H.265)
MKV-Container
WebM (VP8 / VP9 / AV1)
AVI
WMV / ASF
MOV (ProRes)
MPEG-TS
Animiertes GIF
Nur Audio (MP3, AAC, WAV, FLAC, OGG)
Segmentierte Aufnahme (Aufteilung nach Zeit/Größe)
Pre-Event-Aufnahme (Ringpuffer)(Keine integrierte Ringpuffer-API; erfordert eigene Implementierung)

Multi-Output & Streaming

FunktionVideo Capture SDKFFmpeg Wrappers
Gleichzeitige Aufnahme + Stream⚠️(Über Tee-Muxer oder mehrere Prozesse)
Mehrere Aufnahmeausgaben⚠️(Tee-Muxer hat Einschränkungen)
RTMP-Streaming
RTSP-Server(FFmpeg ist ein Client, kein Server)
SRT-Streaming(Erfordert SRT-fähigen Build)
HLS / DASH-Ausgabe
NDI-Ausgabe⚠️(Erfordert benutzerdefinierten Build)
Snapshot während der Aufnahme⚠️(Erfordert separate Frame-Extraktion)

Streaming-Protokolle

FunktionVideo Capture SDKFFmpeg Wrappers
RTMP Push
RTSP-Servermodus
SRT (Caller / Listener)
HLS-Segmentgenerierung
MPEG-DASH
UDP / TCP Unicast / Multicast

Videoverarbeitung

FunktionVideo Capture SDKFFmpeg Wrappers
Echtzeit-Größenänderung / Zuschneiden
Deinterlacing
Farbanpassung (Helligkeit, Kontrast, Sättigung)(Über FFmpeg-Filter)
Text-Overlay (Zeitstempel, Wasserzeichen)(drawtext-Filter)
Bild-Overlay / Logo(overlay-Filter)
Bild-in-Bild(overlay-Filter)
Chroma Key (Greenscreen)⚠️(chromakey-Filter — einfach)
GPU-beschleunigte Filter⚠️(Beschränkt auf bestimmte hwaccel-Filter)

Audio

FunktionVideo Capture SDKFFmpeg Wrappers
Audiogerät-Capture
Systemaudio (Loopback) Capture⚠️(Erfordert WASAPI-Loopback-Einrichtung)
Audio-Mixing (mehrere Eingänge)(amix-Filter)
Echtzeit-Lautstärke- / Verstärkungsregelung(volume-Filter)
Audioeffekte (Echo, Hall)(Verschiedene Audiofilter)
VU-Meter / Pegelüberwachung(Muss loudnorm-Ausgabe parsen)

Erkennung & Analyse

FunktionVideo Capture SDKFFmpeg Wrappers
Bewegungserkennung
Gesichtserkennung
Barcode- / QR-Code-Lesung
Objektverfolgung
Audiopegelerkennung⚠️(Über volumedetect / ebur128-Filter)

Erweiterte Funktionen

FunktionVideo Capture SDKFFmpeg Wrappers
NVIDIA NVENC-Encoding
Intel QSV-Encoding
AMD AMF-Encoding
Hardwarebeschleunigte Dekodierung
Benutzerdefinierte Filter-Plugin-API(Muss benutzerdefinierte FFmpeg-Filter in C erstellen)

Frame-Zugriff & Integration

FunktionVideo Capture SDKFFmpeg Wrappers
Raw-Frame-Callback (RGB / YUV)⚠️(Über Pipe oder P/Invoke)
Bitmap / SKBitmap / WriteableBitmap(Manuelle Konvertierung erforderlich)
Integration mit ML.NET / ONNX⚠️(Erfordert Frame-Extraktions-Pipeline)
OpenCV-Interop⚠️(Frames an OpenCV pipen)
Direkter GPU-Textur-Zugriff

Plattformunterstützung

Betriebssystem-Kompatibilität

PlattformVideo Capture SDKFFmpeg Wrappers
Windows x64
Windows ARM64
macOS (Apple Silicon + Intel)
Linux x64 (Ubuntu, Debian, Fedora)
Linux ARM64 (Raspberry Pi)
Android (über .NET MAUI)⚠️(Erfordert benutzerdefinierten Build)
iOS (über .NET MAUI)⚠️(Erfordert benutzerdefinierten Build)

UI-Framework-Kompatibilität

FrameworkVideo Capture SDKFFmpeg Wrappers
WinForms(Keine integrierten Steuerelemente)
WPF(Keine integrierten Steuerelemente)
.NET MAUI(Keine integrierten Steuerelemente)
Avalonia UI(Keine integrierten Steuerelemente)
Console / Service
ASP.NET Core (Background Service)
Blazor (serverseitige Verarbeitung)

Preisvergleich

Video Capture SDK .NET Preise

HomeEUR 489

1 Entwickler, nicht-kommerzielle Nutzung

DeveloperEUR 1.599

1 Entwickler, kommerzielle Nutzung, 1 Jahr Updates

Team SmallEUR 3.499

Bis zu 3 Entwickler, kommerzielle Nutzung, 1 Jahr Updates

TeamEUR 6.999

Bis zu 8 Entwickler, kommerzielle Nutzung, 1 Jahr Updates

All licenses include:

  • Lizenzgebührenfreie Verteilung
  • Alle Quellcode-Beispiele
  • Prioritäts-Ticket-Support
  • Alle Plattformziele enthalten

FFmpeg Wrapper Kosten

FFmpeg.AutoGenKostenlos

MIT-Lizenz — Low-Level P/Invoke-Bindings

Xabe.FFmpegAb EUR 200

Nicht-kommerziell kostenlos; kommerzielle Lizenz erforderlich

FFMpegCoreKostenlos

MIT-Lizenz — CLI-Wrapper

MediaToolkitKostenlos

MIT-Lizenz — CLI-Wrapper

GPL-Compliance-Überlegungen

FFmpeg selbst ist unter LGPL 2.1 oder GPL 2/3 lizenziert, abhängig von der Build-Konfiguration. Wenn Ihr FFmpeg-Build GPL-Komponenten enthält (libx264, libx265, libfdk-aac), kann Ihre Anwendung GPL-Verpflichtungen unterliegen. Das bedeutet, Sie müssen entweder:

  • Ihre Anwendung unter einer GPL-kompatiblen Lizenz als Open Source veröffentlichen
  • Nur LGPL-lizenzierte FFmpeg-Komponenten verwenden und dynamisch verknüpfen
  • Eine kommerzielle FFmpeg-Lizenz von FFmpeg-Urheberrechtsinhabern erwerben (komplex, da FFmpeg Hunderte von Mitwirkenden hat)
  • FFmpeg nur mit LGPL-kompatiblen Codecs bauen (was die Funktionalität einschränkt)

Viele Unternehmen investieren erhebliche juristische Ressourcen in die Sicherstellung der GPL-Compliance. Die Kosten für die rechtliche Prüfung übersteigen oft den Preis einer kommerziellen SDK-Lizenz.

Codebeispiele

Beispiel 1: Webcam-Aufnahme als MP4

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;

// Create the capture engine
var capture = new VideoCaptureCore();

// Set video source (first available webcam)
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];

// Set audio source
var audioDevices = await capture.Audio_CaptureDevice_ListAsync();
capture.Audio_CaptureDevice = audioDevices[0];

// Configure MP4 output with H.264
capture.Output_Format = new MP4Output
{
    Video = new H264EncoderSettings
    {
        Bitrate = 4000,
        Profile = H264Profile.Main
    },
    Audio = new AACEncoderSettings
    {
        Bitrate = 192
    }
};
capture.Output_Filename = "recording.mp4";

// Assign preview panel
capture.Video_Preview_Enabled = true;

// Start recording with preview
await capture.StartAsync();

FFMpegCore (CLI Wrapper)

C#
using FFMpegCore;
using FFMpegCore.Enums;
using System.Diagnostics;

// Note: No built-in device enumeration
// You must know your device name beforehand
var deviceName = "Integrated Camera";
var audioDevice = "Microphone (Realtek Audio)";

// Build the FFmpeg command
var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "ffmpeg",
        Arguments = $"-f dshow -i video=\"{deviceName}\":audio=\"{audioDevice}\" " +
                    "-c:v libx264 -preset fast -b:v 4000k " +
                    "-c:a aac -b:a 192k " +
                    "-y recording.mp4",
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true
    }
};

process.Start();
// No preview — video goes directly to file
// To stop: send 'q' to stdin or kill process
// Error handling: parse stderr output

Beispiel 2: Bildschirmaufnahme mit Overlay

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;

var capture = new VideoCaptureCore();

// Screen capture source
capture.Video_CaptureDevice = new ScreenCaptureSourceSettings
{
    FullScreen = true,
    FrameRate = 30,
    CaptureCursor = true
};

// Add timestamp overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
    Text = "{timestamp}",
    Position = new System.Drawing.Point(10, 10),
    Font = new System.Drawing.Font("Arial", 14),
    Color = System.Drawing.Color.White
});

// Add watermark image
capture.Video_Overlays.Add(new VideoOverlayImage
{
    Filename = "logo.png",
    Position = new System.Drawing.Point(10, 50),
    Opacity = 0.7
});

// Configure output
capture.Output_Format = new MP4Output
{
    Video = new H264EncoderSettings { Bitrate = 8000 }
};
capture.Output_Filename = "screen_recording.mp4";

await capture.StartAsync();

FFmpeg CLI

C#
using System.Diagnostics;

// Screen capture with overlay using FFmpeg
var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "ffmpeg",
        Arguments =
            // Windows screen capture via GDI
            "-f gdigrab -framerate 30 -i desktop " +
            // Complex filter for overlays
            "-vf \"" +
            "drawtext=text='%{localtime}':" +
            "x=10:y=10:fontsize=14:fontcolor=white," +
            "movie=logo.png[wm];[in][wm]overlay=10:50:" +
            "format=auto,colorchannelmixer=aa=0.7\" " +
            // Encoding settings
            "-c:v libx264 -b:v 8000k -y screen_recording.mp4",
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true
    }
};

process.Start();
// Monitor stderr for progress / errors
string output = await process.StandardError.ReadToEndAsync();
await process.WaitForExitAsync();

Beispiel 3: RTSP-Kamera zu RTMP-Stream

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;

var capture = new VideoCaptureCore();

// IP camera source
capture.IP_Camera_Source = new IPCameraSourceSettings
{
    URL = "rtsp://192.168.1.100:554/stream",
    Login = "admin",
    Password = "password",
    Type = IPCameraType.RTSP
};

// Stream to YouTube/Twitch via RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
    URL = "rtmp://a.rtmp.youtube.com/live2",
    StreamKey = "YOUR_STREAM_KEY",
    Video = new H264EncoderSettings
    {
        Bitrate = 4500,
        KeyFrameInterval = 2
    },
    Audio = new AACEncoderSettings { Bitrate = 128 }
};

// Also record locally
capture.Output_Filename = "backup.mp4";
capture.Output_Format = new MP4Output();

await capture.StartAsync();

FFmpeg CLI

C#
using System.Diagnostics;

// RTSP to RTMP relay + local recording
var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "ffmpeg",
        Arguments =
            // Input: RTSP camera
            "-rtsp_transport tcp " +
            "-i rtsp://admin:password@192.168.1.100:554/stream " +
            // Tee muxer for multiple outputs
            "-c:v libx264 -b:v 4500k -g 60 " +
            "-c:a aac -b:a 128k " +
            "-f tee " +
            "\"[f=flv]rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY|" +
            "[f=mp4]backup.mp4\"",
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true
    }
};

process.Start();
// Note: Error recovery (reconnect on stream drop)
// must be implemented manually by monitoring stderr
// and restarting the process

Beispiel 4: Mehrkamera-Überwachungssystem

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;

// Create multiple capture engines — one per camera
var cameras = new List<VideoCaptureCore>();
var cameraUrls = new[]
{
    "rtsp://192.168.1.101/stream",
    "rtsp://192.168.1.102/stream",
    "rtsp://192.168.1.103/stream",
    "rtsp://192.168.1.104/stream"
};

foreach (var url in cameraUrls)
{
    var cam = new VideoCaptureCore();
    cam.IP_Camera_Source = new IPCameraSourceSettings
    {
        URL = url,
        Type = IPCameraType.RTSP,
        ReconnectOnFailure = true,
        ReconnectDelay = TimeSpan.FromSeconds(5)
    };

    // Motion detection on each camera
    cam.Motion_Detection.Enabled = true;
    cam.Motion_Detection.Sensitivity = 70;
    cam.OnMotionDetected += (s, e) =>
    {
        Console.WriteLine($"Motion on {url} at {DateTime.Now}");
    };

    // Segmented recording (1-hour files)
    cam.Output_Format = new MP4Output();
    cam.Output_Filename = $"cam_{cameras.Count}_{DateTime.Now:yyyyMMdd}.mp4";
    cam.SegmentedRecording.Enabled = true;
    cam.SegmentedRecording.Duration = TimeSpan.FromHours(1);

    cameras.Add(cam);
}

// Start all cameras
foreach (var cam in cameras)
    await cam.StartAsync();

FFmpeg CLI (Mehrere Prozesse)

C#
using System.Diagnostics;

// Multi-camera: spawn one FFmpeg process per camera
var cameraUrls = new[]
{
    "rtsp://192.168.1.101/stream",
    "rtsp://192.168.1.102/stream",
    "rtsp://192.168.1.103/stream",
    "rtsp://192.168.1.104/stream"
};

var processes = new List<Process>();

for (int i = 0; i < cameraUrls.Length; i++)
{
    var process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "ffmpeg",
            Arguments =
                $"-rtsp_transport tcp -i {cameraUrls[i]} " +
                // Segmented recording (1-hour segments)
                $"-c:v libx264 -b:v 2000k " +
                $"-f segment -segment_time 3600 " +
                $"-reset_timestamps 1 " +
                $"cam_{i}_%Y%m%d_%H%M%S.mp4",
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true
        }
    };

    process.Start();
    processes.Add(process);
}

// Note: No built-in motion detection
// No automatic reconnection on stream failure
// Must implement process monitoring + restart logic
// 4 separate processes consume more resources

Beispiel 5: Dateikonvertierung mit Fortschritt

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;

var capture = new VideoCaptureCore();

// Use file as source (convert mode)
capture.Mode = CaptureMode.FileConversion;
capture.Input_Filename = "input.avi";

// Output settings
capture.Output_Format = new MP4Output
{
    Video = new H265EncoderSettings
    {
        Bitrate = 6000,
        Preset = H265Preset.Slow
    },
    Audio = new AACEncoderSettings { Bitrate = 256 }
};
capture.Output_Filename = "output.mp4";

// Progress event
capture.OnProgress += (s, e) =>
{
    Console.WriteLine($"Progress: {e.Progress}%");
};

// Error event
capture.OnError += (s, e) =>
{
    Console.WriteLine($"Error: {e.Message}");
};

await capture.StartAsync();

FFMpegCore Wrapper

C#
using FFMpegCore;
using FFMpegCore.Enums;

// File conversion using FFMpegCore
await FFMpegArguments
    .FromFileInput("input.avi")
    .OutputToFile("output.mp4", overwrite: true, options => options
        .WithVideoCodec(VideoCodec.LibX265)
        .WithVideoBitrate(6000)
        .WithAudioCodec(AudioCodec.Aac)
        .WithAudioBitrate(256)
        .WithSpeedPreset(Speed.Slow)
    )
    .NotifyOnProgress(percent =>
    {
        Console.WriteLine($"Progress: {percent}%");
    })
    .ProcessAsynchronously();

// Note: Progress reporting works well in FFMpegCore
// This is one area where the wrapper experience is good
// However, error details are limited to stderr output

Leistungsvergleich

Benchmarks durchgeführt auf Windows 11, Intel i7-13700K, 32 GB RAM, NVIDIA RTX 4070. Ergebnisse können je nach Hardware und Konfiguration variieren.

MetrikVideo Capture SDKFFmpeg CLIAnmerkungen
Webcam-Capture-Startzeit~120 ms~800 msFFmpeg-Prozess-Startup-Overhead
Speicherverbrauch (einzelne Webcam)~80 MB~120 MBFFmpeg-Prozess + Pipe-Puffer
CPU-Auslastung (1080p H.264-Aufnahme)~8%~10%Ähnlich bei Verwendung desselben Encoders
CPU-Auslastung (1080p NVENC-Aufnahme)~3%~4%GPU-Offload ist vergleichbar
Frame-Latenz (Capture bis Vorschau)~16 ms (1 Frame)N/AFFmpeg hat keine integrierte Vorschau
Multi-Kamera (4x 1080p)~25% CPU, ~320 MB~35% CPU, ~480 MB4 Prozesse vs. 1 Prozess
RTSP-Wiederverbindung~2 Sekunden (automatisch)Manueller Neustart erforderlichSDK hat integrierte Wiederverbindung
Start bis erstes Frame~200 ms~1.200 msProzess-Init + Codec-Aushandlung

Wann welche Lösung wählen

Wählen Sie das Video Capture SDK, wenn Sie benötigen

  • Integrierte Live-Vorschau mit Overlays in WinForms/WPF/MAUI-Anwendungen
  • Mehrkamera-Überwachung mit Bewegungserkennung und automatischer Wiederverbindung
  • Kommerzielle Produktverteilung ohne GPL-Lizenzbedenken
  • Capture mit niedriger Latenz und GPU-beschleunigtem Vorschau-Rendering
  • Integriertes Barcode-/QR-Code-Scanning oder Gesichtserkennung während der Aufnahme
  • Eine einzige verwaltete .NET-API ohne externe Prozesse
  • Professioneller Support mit SLA und Unterstützung bei individueller Entwicklung
  • Schnelle Entwicklung — Funktionen, die mit FFmpeg Stunden dauern, sind mit dem SDK in Minuten erledigt

Wählen Sie FFmpeg Wrappers, wenn Sie benötigen

  • Serverseitige Stapelverarbeitung ohne UI (Headless-Transkodierung)
  • Maximale Codec- und Formatunterstützung aus einem einzigen Tool
  • Budgetbeschränkte Projekte, bei denen GPL-Compliance akzeptabel ist
  • Einfache einmalige Dateikonvertierungen oder Stream-Relay-Aufgaben
  • Plattformübergreifendes CLI-Scripting und Automatisierungs-Pipelines
  • Open-Source-Projekte, die bereits unter GPL lizenziert sind
  • Akademische oder Forschungsprojekte, die benutzerdefinierte Codec-Änderungen erfordern
  • Integration mit bestehender FFmpeg-Infrastruktur und Skripten

Hybrid-Ansatz: Das Beste aus beiden Welten

Viele Produktionssysteme kombinieren beide Technologien. Das Video Capture SDK übernimmt Echtzeit-Capture, Vorschau und Erkennung, während FFmpeg die Offline-Stapelverarbeitung und Formatkonvertierungen für Sonderfälle abwickelt.

  • Verwenden Sie das SDK für alle Echtzeit-Capture-, Vorschau- und interaktiven Funktionen
  • Verwenden Sie FFmpeg für Offline-Stapeltranskodierung aufgenommener Dateien
  • Verwenden Sie FFmpeg für seltene Formatkonvertierungen, die das SDK nicht unterstützt
  • Halten Sie FFmpeg als Hintergrunddienst für Archivverarbeitung bereit

Bereitstellung & Verteilung

Video Capture SDK Bereitstellung

  • NuGet-Paket enthält alle nativen Abhängigkeiten
  • Einzelne NuGet-Referenz — keine externen Tools zu installieren
  • Lizenzgebührenfreie Weiterverteilung mit kommerzieller Lizenz
  • xcopy / MSIX / ClickOnce-Bereitstellung unterstützt
  • Docker-Container unterstützt (Linux und Windows)
  • Keine GPL-Verpflichtungen — sicher für proprietäre Software

FFmpeg Wrapper Bereitstellung

  • Muss ffmpeg.exe (oder Äquivalent) mit Ihrer Anwendung bündeln
  • Binärgröße: ~80-150 MB je nach Build-Konfiguration
  • Muss sicherstellen, dass der korrekte FFmpeg-Build zur Zielplattform passt
  • GPL-Compliance kann Quellcode-Offenlegung erfordern
  • Versionsverwaltung über Plattformen hinweg ist manuell
  • Auto-Update der FFmpeg-Binärdateien muss von Ihrem Code gehandhabt werden

Entscheidungsmatrix

AnforderungVideo Capture SDKFFmpeg WrappersGewinner
Live-Vorschau in Desktop-AppVideo Capture SDK
Headless-Server-TranskodierungFFmpeg
Multi-Kamera mit BewegungserkennungVideo Capture SDK
GPL-freie kommerzielle VerteilungVideo Capture SDK
Maximale FormatunterstützungFFmpeg
Niedriges StartbudgetFFmpeg
Schnelle EntwicklungszeitVideo Capture SDK
Professioneller Support/SLAVideo Capture SDK
Plattformübergreifende UI-SteuerelementeVideo Capture SDK
Benutzerdefinierte Codec-EntwicklungFFmpeg
Echtzeit-ErkennungsfunktionenVideo Capture SDK
Community-Ressourcen/TutorialsFFmpeg
Audiopegel-ÜberwachungVideo Capture SDK
Stream-Relay (RTSP zu RTMP)Unentschieden
Stapel-DateiverarbeitungFFmpeg
Unternehmens-Compliance/LizenzierungVideo Capture SDK

Fazit

Video Capture SDK .NET

Das Video Capture SDK ist hervorragend als schlüsselfertige Lösung für .NET-Desktop- und plattformübergreifende Anwendungen geeignet, die Live-Video-Capture mit Vorschau, Overlays, Erkennung und Mehrkamera-Management erfordern. Seine native .NET-API eliminiert die Komplexität der Prozessverwaltung und bietet ein professionelles, unterstütztes Entwicklungserlebnis. Die kommerzielle Lizenz gewährleistet sauberes geistiges Eigentum für die Unternehmensverteilung.

FFmpeg Wrappers

FFmpeg bleibt der Goldstandard für Codec-Abdeckung und Stapelverarbeitung. Wenn Ihre Anwendung headless, serverseitig oder Open Source ist, bieten FFmpeg-Wrapper eine effektive und kostenlose Lösung. Das Fehlen von Live-Vorschau, Erkennungsfunktionen und nativen .NET-Steuerelementen bedeutet jedoch, dass Desktop-Capture-Anwendungen deutlich mehr individuelle Entwicklung erfordern.

The Reality

Für die meisten .NET-Entwickler, die capture-zentrierte Desktop-Anwendungen erstellen, spart das Video Capture SDK Wochen an Entwicklungszeit und eliminiert Lizenzrisiken. Für serverseitige Transkodierungsfarmen ist FFmpeg oft die pragmatische Wahl. Viele Teams nutzen beides.

Frequently Asked Questions

Kann ich FFmpeg-Wrapper für kommerzielle Produkte ohne GPL-Probleme verwenden?
Das hängt von Ihrer FFmpeg-Build-Konfiguration ab. Wenn Sie FFmpeg nur mit LGPL-lizenzierten Komponenten kompilieren und dynamisch verknüpfen, können Sie es in kommerzieller Software verwenden. Beliebte Codecs wie libx264 und libx265 sind jedoch GPL-lizenziert. Ihre Verwendung bedeutet, dass Ihre Anwendung die GPL-Bedingungen einhalten muss, was typischerweise die Veröffentlichung Ihres Quellcodes erfordert. Viele kommerzielle Teams vermeiden dies durch die Verwendung des Video Capture SDK oder durch sorgfältiges Überprüfen ihres FFmpeg-Builds.
Verwendet das Video Capture SDK intern FFmpeg?
Ja, teilweise. Das SDK bettet eine FFmpeg-Pipeline für Codec-Operationen und IP-Kamera-Einspeisung ein. Es umschließt FFmpeg jedoch hinter einer verwalteten .NET-API und verwendet auch native OS-Capture-APIs (DirectShow, Media Foundation) für den Gerätezugriff. Sie interagieren nie direkt mit FFmpeg — das SDK handhabt die gesamte FFmpeg-Komplexität intern.
Welche Lösung bietet bessere Leistung bei 4K-Capture?
Beide Lösungen erreichen eine ähnliche Encoding-Leistung bei Verwendung derselben Hardware-Encoder (NVENC, QSV, AMF). Das SDK hat eine geringere Startlatenz (~120ms vs. ~800ms) und einen niedrigeren Speicher-Overhead für Mehrkamera-Szenarien, da es das Starten separater Prozesse vermeidet. Beim reinen Encoding-Durchsatz ist der Unterschied vernachlässigbar.
Kann ich einer FFmpeg-basierten Anwendung eine Live-Vorschau hinzufügen?
Technisch ja, aber es erfordert erheblichen Aufwand. Sie müssten rohe Video-Frames von FFmpeg über stdout an Ihre Anwendung pipen, sie dekodieren, in ein Bitmap-Format konvertieren und in einem UI-Steuerelement rendern — und das alles unter Beibehaltung der Synchronisation. Das Video Capture SDK bietet dies sofort einsatzbereit mit GPU-Beschleunigung.
Ist das Video Capture SDK eine unbefristete Lizenz oder ein Abonnement?
Beide Optionen sind verfügbar. Unbefristete Lizenzen beinhalten 1 Jahr Updates und Support. Sie können die vorhandene Version nach Ablauf des Abonnementzeitraums unbegrenzt weiter verwenden. Die jährliche Verlängerung ist optional und bietet fortlaufende Updates und Prioritätssupport.
Wie gehe ich mit FFmpeg-Updates und Sicherheitspatches um?
Mit FFmpeg-Wrappern sind Sie selbst dafür verantwortlich, FFmpeg-Releases zu verfolgen, aktualisierte Binärdateien neu zu erstellen oder herunterzuladen, die Kompatibilität mit Ihrer Wrapper-Bibliothek zu testen und erneut bereitzustellen. Das Video Capture SDK erledigt dies für Sie — Updates werden über NuGet-Pakete mit getesteten, kompatiblen nativen Binärdateien bereitgestellt.
Kann ich mitten im Projekt von FFmpeg-Wrappern zum Video Capture SDK wechseln?
Ja, aber rechnen Sie mit einer Überarbeitung Ihres Capture- und Aufnahmecodes. Das Programmiermodell ist unterschiedlich: Das SDK verwendet Events und verwaltete Objekte, während FFmpeg-Wrapper Prozessverwaltung und CLI-Argumente verwenden. Die meisten Teams berichten, dass die Migration 1-2 Wochen für eine typische Capture-Anwendung dauert, mit dem Ergebnis von deutlich weniger Code und besserer Zuverlässigkeit.

Erste Schritte

Related Comparisons