Last updated: Januar 2026
Video Capture SDK .NET vs LibVLCSharp
Umfassender .NET Video-Capture-Vergleich
Die Wahl des richtigen Video-Capture-Frameworks für Ihre .NET-Anwendung ist eine kritische Architekturentscheidung. Dieser Leitfaden bietet einen detaillierten, unvoreingenommenen Vergleich zwischen VisioForge Video Capture SDK .NET — einer speziell entwickelten Capture-Engine — und LibVLCSharp, der .NET-Bindung für die VLC-Media-Engine. Während LibVLCSharp bei der Medienwiedergabe hervorragend ist und Aufnahmegeräte öffnen kann, wurde das Video Capture SDK speziell für professionelle Videoaufnahme-Workflows entwickelt. Wir untersuchen Architektur, Funktionen, Leistung, Lizenzierung und praxisnahen Code, damit Sie eine fundierte Entscheidung treffen können.
Zusammenfassung
| Aspekt | Video Capture SDK .NET | LibVLCSharp |
|---|---|---|
| Architektur | Dual-Engine: natives DirectShow/Media Foundation + eingebettete GStreamer-Pipelines | Monolithische VLC-Media-Engine über libvlc C-Interop |
| Hauptzweck | Professionelle Videoaufnahme, Aufzeichnung, Streaming und Verarbeitung | Medienwiedergabe-Bibliothek mit grundlegendem Zugriff auf Aufnahmegeräte |
| Aufnahmequellen | Webcams, Bildschirme, IP-Kameras, Capture-Karten, TV-Tuner, NDI, Industriekameras | Webcams über dshow://, Bildschirme über screen://, IP-Kameras über URL |
| Live-Vorschau | Integrierte GPU-beschleunigte Vorschau mit Overlays und Effekten | Integriertes Video-Surface-Rendering (wiedergabeorientiert) |
| Aufnahmeformate | MP4, MKV, WebM, AVI, WMV, MOV, TS, GIF + 30 weitere mit typisierten Ausgabeklassen | Über sout-Transcode-Kette — stringbasierte Konfiguration |
| Multi-Ausgabe | Native Outputs_Add API für gleichzeitige Aufnahme + Stream + Vorschau | Über sout-Duplicate-Direktive — fragile String-Syntax |
| Videoeffekte | 40+ CPU- und GPU-beschleunigte Effekte während der Aufnahme | Keine Echtzeiteffekte während der Aufnahme |
| Erkennung | Bewegungs-, Gesichts-, Barcode/QR-Erkennung integriert | Keine Erkennungsfunktionen |
| Lizenzierung | Kommerzielle Pro-Entwickler-Lizenz (Abonnement oder unbefristet) | LGPL 2.1 — kostenlos bei dynamischer Verlinkung |
| Preise | Ab EUR 250 (Abonnement) bis EUR 1.500 (Team-Lebenslang) | Kostenlos (LGPL 2.1) |
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 Aufnahmegerät. Eine sekundäre eingebettete GStreamer-Pipeline übernimmt plattformübergreifende Aufnahme, erweiterte Codec-Operationen und IP-Kamera-Einbindung. Beide Engines teilen eine einheitliche .NET-API-Oberfläche, sodass der Wechsel zwischen ihnen keine Codeänderungen erfordert.
- ▶Native Windows-Aufnahme über DirectShow und Media Foundation Filtergraphen
- ▶Plattformübergreifende GStreamer-Engine für macOS, Linux, iOS und Android
- ▶GPU-beschleunigte Vorschau über Direct3D / OpenGL Renderer
- ▶Ereignisgesteuerte Architektur mit .NET async/await-Unterstützung
- ▶Einzelprozess-Modell — kein Kindprozess-Management erforderlich
- ▶Typisierte Ausgabeklassen für Aufnahme- und Streaming-Konfiguration
LibVLCSharp Architektur
LibVLCSharp ist die offizielle .NET-Bindung für libvlc, die Kern-Engine hinter dem VLC Media Player. Es bietet einen verwalteten Wrapper um VLCs C-API und ermöglicht Zugriff auf VLCs umfangreiche Medienwiedergabefähigkeiten. Obwohl primär für die Wiedergabe konzipiert, kann es Aufnahmegeräte über VLCs Media-Resource-Locator-Syntax öffnen (dshow://, screen://, v4l2://).
- ▶Verwalteter .NET-Wrapper um libvlc C API über P/Invoke
- ▶Monolithische VLC-Engine übernimmt alle Medienoperationen
- ▶Aufnahmegeräte werden über URL-artige Media-Resource-Locatoren angesprochen
- ▶Aufnahme wird über sout (Stream-Output) String-Ketten konfiguriert
- ▶Wiedergabe-orientiertes Design — Aufnahme ist ein sekundärer Anwendungsfall
- ▶Plattformübergreifend über plattformspezifische native VLC-Bibliotheken
Wesentliche Architekturunterschiede
| Aspekt | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Design-Fokus | Speziell für Videoaufnahme-Workflows entwickelt | Medienwiedergabe-Bibliothek mit Aufnahme als Sekundärfunktion |
| Geräteerkennung | Native OS-Enumerierungs-APIs mit vollständigen Gerätemetadaten | Manuelle dshow:// oder v4l2:// URL-Konstruktion |
| Aufnahmekonfiguration | Typisierte .NET-Ausgabeklassen (MP4Output, H264EncoderSettings) | Stringbasierte sout-Transcode-Ketten |
| Fehlerbehandlung | .NET-Ausnahmen und ereignisbasierte Fehler | VLC-Log-Callbacks und Event-Abonnements |
| Multi-Ausgabe | Native Outputs_Add API — verwaltet und typsicher | sout-Duplicate-Direktive — fragiles String-Parsing |
| Effekt-Pipeline | Integrierte CPU + GPU Effektkette während der Aufnahme | Keine Echtzeit-Effekt-Pipeline für Aufnahme |
Funktionsvergleich im Detail
Aufnahmequellen
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| USB-Webcams | ✅ | ⚠️(Über dshow:// mit eingeschränkter Steuerung) |
| Integrierte Laptop-Kameras | ✅ | ⚠️(Über dshow:// URL) |
| Bildschirm- / Desktop-Aufnahme | ✅ | ⚠️(Einfach über screen:// — keine Bereichsauswahl) |
| Anwendungsfenster-Aufnahme | ✅ | ❌ |
| IP-Kameras (RTSP/ONVIF) | ✅ | ⚠️(URL-basiert, keine automatische Wiederverbindung) |
| Capture-Karten (Blackmagic DeckLink) | ✅ | ❌ |
| TV-Tuner (BDA/DVB) | ✅ | ❌ |
| NDI-Quellen | ✅ | ❌ |
| Industriekameras (GigE Vision, USB3 Vision) | ✅ | ❌ |
| Virtuelle Kameras (OBS Virtual Cam) | ✅ | ⚠️(Über dshow:// nur unter Windows) |
Live-Vorschau
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Integrierte Videovorschau | ✅ | ✅(Wiedergabeorientierte Oberfläche) |
| GPU-beschleunigtes Rendering | ✅ | ✅ |
| Text- / Bild-Overlays in der Vorschau | ✅ | ❌(Keine Overlay-API während der Aufnahme) |
| Vorschau ohne Aufnahme | ✅ | ✅ |
| Mehrere Vorschaufenster | ✅ | ⚠️(Erfordert mehrere MediaPlayer-Instanzen) |
| WinForms / WPF / MAUI Steuerelemente | ✅ | ✅(VideoView-Steuerelement verfügbar) |
Aufnahme
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| MP4 (H.264 / H.265) | ✅ | ⚠️(Über sout-Transcode-String) |
| MKV-Container | ✅ | ⚠️(Über sout-Transcode-String) |
| WebM (VP8 / VP9) | ✅ | ⚠️(Über sout-Transcode-String) |
| AVI | ✅ | ⚠️(Über sout-Transcode-String) |
| WMV / ASF | ✅ | ⚠️(Über sout-Transcode-String) |
| Typisierte Ausgabekonfiguration | ✅ | ❌(Alle Konfiguration ist stringbasiert) |
| Nur-Audio-Aufnahme | ✅ | ⚠️(Über sout-Transcode-String) |
| Segmentierte Aufnahme (Aufteilung nach Zeit/Größe) | ✅ | ❌ |
| Pre-Event-Aufnahme (Ringpuffer) | ✅ | ❌ |
Multi-Ausgabe
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Gleichzeitige Aufnahme + Streaming | ✅ | ⚠️(Über sout duplicate — fragil) |
| Mehrere Aufnahmeausgaben | ✅ | ⚠️(Über sout duplicate — fragil) |
| Native Outputs_Add API | ✅ | ❌ |
| Unabhängige Ausgabesteuerung | ✅ | ❌ |
| Schnappschuss während der Aufnahme | ✅ | ⚠️(TakeSnapshot verfügbar, aber eingeschränkt) |
Streaming
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| RTMP Push | ✅ | ⚠️(Über sout — eingeschränkte Steuerung) |
| RTSP-Servermodus | ✅ | ❌ |
| SRT (Caller / Listener) | ✅ | ❌ |
| HLS-Segment-Generierung | ✅ | ⚠️(Über sout — eingeschränkt) |
| UDP / TCP Unicast / Multicast | ✅ | ⚠️(Über sout rtp/udp) |
| Typisierte Streaming-Konfiguration | ✅ | ❌(Alle Konfiguration basiert auf stringbasierten sout-Ketten) |
Videoverarbeitung
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Echtzeit-Größenänderung / Zuschnitt | ✅ | ❌(Keine Verarbeitung während der Aufnahme) |
| Deinterlacing | ✅ | ✅(VLC hat eingebautes Deinterlacing) |
| Farbanpassung (Helligkeit, Kontrast) | ✅ | ❌(Keine Effekte während der Aufnahme) |
| Text-Overlay / Wasserzeichen | ✅ | ❌(Kein Overlay während der Aufnahme) |
| Bild-Overlay / Logo | ✅ | ❌(Kein Overlay während der Aufnahme) |
| Bild-in-Bild | ✅ | ❌ |
| Chroma Key (Greenscreen) | ✅ | ❌ |
| GPU-beschleunigte Filter | ✅ | ❌ |
Audio
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Audiogerät-Aufnahme | ✅ | ⚠️(Über dshow:// Audio) |
| Systemaudio (Loopback) Aufnahme | ✅ | ❌ |
| Audio-Mischung (mehrere Eingänge) | ✅ | ❌ |
| Echtzeit-Lautstärke / Verstärkungsregelung | ✅ | ⚠️(Einfache Lautstärkeregelung) |
| Audio-Effekte (40+ integriert) | ✅ | ❌ |
| VU-Meter / Pegelüberwachung | ✅ | ❌ |
Erkennung & Analyse
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Bewegungserkennung | ✅ | ❌ |
| Gesichtserkennung | ✅ | ❌ |
| Barcode / QR-Code Lesen | ✅ | ❌ |
| Objektverfolgung | ✅ | ❌ |
| Audio-Pegelerkennung | ✅ | ❌ |
Frame-Zugriff & Integration
| Funktion | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Raw Frame Callback (RGB / YUV) | ✅ | ⚠️(Über SetVideoCallbacks — komplexe Einrichtung) |
| Bitmap / SKBitmap / WriteableBitmap | ✅ | ❌(Manuelle Konvertierung erforderlich) |
| Integration mit ML.NET / ONNX | ✅ | ⚠️(Erfordert manuelle Frame-Extraktion) |
| OpenCV Interop | ✅ | ⚠️(Über Video-Callbacks) |
| Direkter GPU-Textur-Zugriff | ✅ | ❌ |
| Virtuelle Kamera-Ausgabe | ✅ | ❌ |
Plattformunterstützung
Betriebssystem-Kompatibilität
| Plattform | Video Capture SDK | LibVLCSharp |
|---|---|---|
| Windows x64 | ✅ | ✅ |
| Windows ARM64 | ✅ | ✅ |
| macOS (Apple Silicon + Intel) | ✅ | ✅ |
| Linux x64 (Ubuntu, Debian, Fedora) | ✅ | ✅ |
| Linux ARM64 (Raspberry Pi) | ✅ | ✅ |
| Android (über .NET MAUI) | ✅ | ✅ |
| iOS (über .NET MAUI) | ✅ | ✅ |
UI-Framework-Kompatibilität
| Framework | Video Capture SDK | LibVLCSharp |
|---|---|---|
| WinForms | ✅ | ✅(VideoView-Steuerelement) |
| WPF | ✅ | ✅(VideoView-Steuerelement) |
| .NET MAUI | ✅ | ✅(VideoView-Steuerelement) |
| Avalonia UI | ✅ | ✅(VideoView-Steuerelement) |
| Konsole / Dienst | ✅ | ✅ |
| ASP.NET Core (Hintergrunddienst) | ✅ | ⚠️(Wiedergabeorientiertes Design) |
| Blazor (Serverseitige Verarbeitung) | ✅ | ⚠️(Eingeschränkte serverseitige Aufnahme) |
Preisvergleich
Video Capture SDK .NET Preise
1 Entwickler, kommerzielle Nutzung, 1 Jahr Updates
Bis zu 8 Entwickler, unbefristete Lizenz mit lebenslangen Updates
All licenses include:
- ✓ Lizenzgebührenfreie Verteilung
- ✓ Alle Quellcode-Beispiele
- ✓ Prioritäts-Ticket-Support
- ✓ Alle Plattformziele inklusive
LibVLCSharp Kosten
LGPL 2.1 Lizenz — dynamische Verlinkung erforderlich
Für proprietäres statisches Linken oder LGPL-inkompatible Nutzung
LGPL-Compliance-Überlegungen
LibVLCSharp und libvlc sind unter LGPL 2.1 lizenziert. Das bedeutet, Sie können sie in kommerzieller proprietärer Software verwenden, solange Sie die LGPL-Bedingungen einhalten. Zu den wichtigsten Anforderungen gehören:
- ⚠Sie müssen dynamisch gegen libvlc linken (nicht statisch linken)
- ⚠Sie müssen Benutzern die Möglichkeit bieten, die LGPL-lizenzierte Bibliothek durch eine modifizierte Version zu ersetzen
- ⚠Sie müssen eine Kopie der LGPL-Lizenz beifügen und die Verwendung von libvlc deutlich erwähnen
- ⚠Wenn Sie libvlc selbst modifizieren, müssen Sie diese Änderungen unter LGPL veröffentlichen
- ⚠Statisches Linken oder bestimmte eingebettete Szenarien erfordern möglicherweise eine kommerzielle Lizenz von VideoLAN
Obwohl LGPL permissiver als GPL ist, erfordert die Einhaltung dennoch sorgfältige Beachtung der Link- und Verteilungsanforderungen. Einige Rechtsabteilungen von Unternehmen verlangen eine kommerzielle Lizenzierung, um jedes Open-Source-Compliance-Risiko zu vermeiden.
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";
// Enable preview
capture.Video_Preview_Enabled = true;
// Start recording with preview
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
// Initialize VLC engine
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Open webcam via dshow:// URL
// Note: device name must be known in advance
using var media = new Media(libVLC,
"dshow://",
FromType.FromLocation);
// Add recording via sout transcode chain
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=4000," +
"acodec=aac,ab=192" +
"}:duplicate{" +
"dst=std{access=file," +
"mux=mp4," +
"dst=recording.mp4}," +
"dst=display" +
"}");
// Set dshow device (string-based)
media.AddOption(
":dshow-vdev=Integrated Camera");
media.AddOption(
":dshow-adev=Microphone (Realtek Audio)");
// Start — no typed API, errors in VLC log
mediaPlayer.Play(media);
// To stop: mediaPlayer.Stop();
// No progress events, no state machineBeispiel 2: Bildschirmaufnahme mit Overlay + Streaming
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
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
});
// Record to file
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings { Bitrate = 8000 }
};
capture.Output_Filename = "screen.mp4";
// Also stream via RTMP
capture.Outputs_Add(new RTMPOutput
{
URL = "rtmp://streaming-server/live/key"
});
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Screen capture via screen:// URL
using var media = new Media(libVLC,
"screen://",
FromType.FromLocation);
// Configure screen capture
media.AddOption(":screen-fps=30");
media.AddOption(":screen-follow-mouse");
// Record to file via sout
// Note: No overlay support during capture
// Note: No text/image overlay API
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=8000" +
"}:std{" +
"access=file," +
"mux=mp4," +
"dst=screen.mp4" +
"}");
// Cannot simultaneously stream via RTMP
// sout duplicate is fragile and often fails
// for screen capture + streaming combos
// No overlay API — cannot add timestamps
// No watermark support during capture
// No region selection for capture area
mediaPlayer.Play(media);Beispiel 3: Multi-Ausgabe: Aufnahme + Stream + Vorschau
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;
var capture = new VideoCaptureCore();
// Set webcam source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];
// Primary output: MP4 recording
capture.Output_Format = new MP4Output
{
Video = new H264EncoderSettings { Bitrate = 4000 },
Audio = new AACEncoderSettings { Bitrate = 192 }
};
capture.Output_Filename = "recording.mp4";
// Second output: RTMP stream
capture.Outputs_Add(new RTMPOutput
{
URL = "rtmp://live.server/app/stream_key",
Video = new H264EncoderSettings { Bitrate = 2500 },
Audio = new AACEncoderSettings { Bitrate = 128 }
});
// Third output: Low-res backup
capture.Outputs_Add(new MP4Output
{
Video = new H264EncoderSettings
{
Bitrate = 1000,
Width = 640,
Height = 360
}
}, "backup.mp4");
// Preview is always available
capture.Video_Preview_Enabled = true;
// All outputs start simultaneously
await capture.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
// Open webcam
using var media = new Media(libVLC,
"dshow://",
FromType.FromLocation);
media.AddOption(
":dshow-vdev=Integrated Camera");
// Attempt multi-output via sout duplicate
// WARNING: This is fragile and often fails
media.AddOption(
":sout=#transcode{" +
"vcodec=h264,vb=4000," +
"acodec=aac,ab=192" +
"}:duplicate{" +
"dst=std{access=file," +
"mux=mp4," +
"dst=recording.mp4}," +
"dst=std{access=rtmp," +
"mux=flv," +
"dst=rtmp://live.server/app/key}," +
"dst=display" +
"}");
// No independent bitrate per output
// No low-res backup option
// Single transcode shared across all outputs
// If one output fails, all may fail
// No typed API — string errors at runtime
mediaPlayer.Play(media);Beispiel 4: RTSP IP-Kamera-Überwachung mit Erkennung
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
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
cam.Motion_Detection.Enabled = true;
cam.Motion_Detection.Sensitivity = 70;
cam.OnMotionDetected += (s, e) =>
{
Console.WriteLine($"Motion on {url}");
};
// Barcode detection
cam.Barcode_Reader.Enabled = true;
cam.OnBarcodeDetected += (s, e) =>
{
Console.WriteLine($"Barcode: {e.Value}");
};
// Segmented recording
cam.Output_Format = new MP4Output();
cam.Output_Filename = $"cam_{cameras.Count}.mp4";
cam.SegmentedRecording.Enabled = true;
cam.SegmentedRecording.Duration = TimeSpan.FromHours(1);
cameras.Add(cam);
}
foreach (var cam in cameras)
await cam.StartAsync();LibVLCSharp
C#using LibVLCSharp.Shared;
Core.Initialize();
using var libVLC = new LibVLC();
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 players = new List<MediaPlayer>();
foreach (var url in cameraUrls)
{
var player = new MediaPlayer(libVLC);
var media = new Media(libVLC, url,
FromType.FromLocation);
// Record via sout
media.AddOption(
":sout=#transcode{vcodec=h264,vb=2000}" +
":std{access=file,mux=mp4," +
$"dst=cam_{players.Count}.mp4}}");
// No motion detection — not available
// No barcode detection — not available
// No face detection — not available
// No auto-reconnection on stream failure
// No segmented recording support
// Must implement reconnection manually:
player.EndReached += (s, e) =>
{
// Manual reconnect attempt
// ThreadPool.QueueUserWorkItem(_ =>
// player.Play(media));
};
player.Play(media);
players.Add(player);
}
// No event-driven detection
// No managed surveillance features
// Manual process monitoring requiredWann welche Lösung wählen
Wählen Sie Video Capture SDK, wenn Sie brauchen
- ✓Professionelle Aufnahme mit Echtzeit-Videoeffekten und Overlays
- ✓Multi-Ausgabe-Aufnahme + Streaming aus einer einzigen Pipeline
- ✓Überwachungssysteme mit Bewegungs-, Gesichts- und Barcode-Erkennung
- ✓Echtzeit-Audioeffekte (40+) während der Aufnahme
- ✓Virtuelle Kamera-Ausgabe für Broadcasting-Anwendungen
- ✓Industrie- und professionelle Hardware-Unterstützung (DeckLink, GigE Vision)
- ✓Bild-in-Bild und Chroma-Key-Compositing während der Aufnahme
- ✓Bildschirmaufnahme mit Bereichsauswahl und Overlays
- ✓Eine vollständig typisierte .NET-API ohne stringbasierte Konfiguration
Wählen Sie LibVLCSharp, wenn Sie brauchen
- ✓Medienwiedergabe mit grundlegendem Zugriff auf Aufnahmegeräte
- ✓Budget-freie Projekte, bei denen LGPL-Compliance akzeptabel ist
- ✓Einfache Webcam-Aufnahme ohne Effekte oder Erkennung
- ✓Plattformübergreifende Medienwiedergabe in .NET MAUI-Anwendungen
- ✓Projekte, die bereits VLC-Infrastruktur und -Workflows verwenden
- ✓Open-Source-Projekte, die mit LGPL-Lizenzierung kompatibel sind
- ✓Schnelle Prototypen für grundlegende Videoaufnahme-Funktionalität
- ✓Anwendungen, bei denen Wiedergabe primär und Aufnahme sekundär ist
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 LGPL-Verpflichtungen — sicher für proprietäre Software
LibVLCSharp Bereitstellung
- ⚠NuGet-Pakete verfügbar (LibVLCSharp + VideoLAN.LibVLC Plattformpakete)
- ⚠Muss plattformspezifische native VLC-Bibliotheken mitliefern (~80-150 MB)
- ⚠LGPL-Compliance erfordert dynamisches Linken und Lizenzhinweis
- ⚠Muss Mechanismus bereitstellen, damit Benutzer die libvlc-Bibliothek ersetzen können
- ⚠Plattformpakete übernehmen die Verteilung nativer Bibliotheken
- ⚠Statisches Linken erfordert kommerzielle VideoLAN-Lizenz
Entscheidungsmatrix
| Anforderung | Video Capture SDK | LibVLCSharp | Gewinner |
|---|---|---|---|
| Professionelle Aufnahmeanwendung | Video Capture SDK | ||
| Multi-Ausgabe (Aufnahme + Stream) | Video Capture SDK | ||
| Überwachung mit Erkennung | Video Capture SDK | ||
| Echtzeiteffekte während der Aufnahme | Video Capture SDK | ||
| Virtuelle Kamera-Ausgabe | Video Capture SDK | ||
| Industrie- / professionelle Hardware | Video Capture SDK | ||
| PiP / Chroma-Key-Compositing | Video Capture SDK | ||
| 40+ Audioeffekte während der Aufnahme | Video Capture SDK | ||
| Bildschirmaufnahme mit Overlays | Video Capture SDK | ||
| Budget ist 0 $ (Open Source) | LibVLCSharp | ||
| Einfache Webcam-Aufnahme | LibVLCSharp | ||
| LGPL-kompatibles Projekt | LibVLCSharp |
Fazit
Video Capture SDK .NET
Das Video Capture SDK ist eine speziell entwickelte Capture-Engine, die bei professionellen Videoaufnahme-Workflows glänzt. Seine typisierte .NET-API, integrierte Effekt-Pipeline, Multi-Ausgabe-Architektur, Erkennungsfähigkeiten und professionelle Hardware-Unterstützung machen es zur klaren Wahl für Anwendungen, bei denen Aufnahmequalität und Funktionen entscheidend sind. Die kommerzielle Lizenz gewährleistet sauberes geistiges Eigentum für die Unternehmensverteilung.
LibVLCSharp
LibVLCSharp ist eine ausgezeichnete Medienwiedergabe-Bibliothek, die auch Aufnahmegeräte öffnen kann. Wenn Ihre Anwendung hauptsächlich auf Wiedergabe mit gelegentlicher einfacher Aufnahme ausgerichtet ist, ist LibVLCSharp eine leistungsfähige und kostenlose Option. Allerdings bedeuten die stringbasierte sout-Konfiguration, das Fehlen von Echtzeiteffekten und fehlende Erkennungsfunktionen, dass professionelle Aufnahmeanwendungen deutlich mehr individuelle Entwicklung erfordern — oder mit LibVLCSharp allein schlicht nicht realisiert werden können.
The Reality
Für die meisten .NET-Entwickler, die aufnahmezentrierte Anwendungen erstellen, bietet das Video Capture SDK professionelle Funktionen, die LibVLCSharp nie zu bieten konzipiert war. LibVLCSharp glänzt als Wiedergabe-Bibliothek und ist eine vernünftige Wahl für einfache Aufnahme, wenn das Budget die Hauptbeschränkung ist. Wenn Ihre Anwendung Effekte, Erkennung, Multi-Ausgabe oder professionelle Hardware-Unterstützung benötigt, ist das Video Capture SDK die praktische Wahl.
