Last updated: Styczeń 2026
Video Capture SDK .NET vs Medialooks MFormats SDK
Silnik potokowy vs Porównanie przechwytywania opartego na klatkach
Wybór między VisioForge Video Capture SDK .NET a Medialooks MFormats SDK to decyzja między dwoma zasadniczo różnymi modelami architektonicznymi. Video Capture SDK wykorzystuje silnik oparty na potoku, w którym deklaratywnie konfigurujesz źródła, przetwarzanie i wyjścia, podczas gdy MFormats stosuje oparty na klatkach model przechwycenie-przetworzenie-wyjście, w którym ręcznie pobierasz każdą klatkę i ją kierujesz. Ten przewodnik porównuje architekturę, funkcje, wsparcie platform, ceny i rzeczywisty kod, aby pomóc Ci podjąć właściwą decyzję dla Twojego projektu.
Podsumowanie
| Aspekt | Video Capture SDK .NET | MFormats SDK |
|---|---|---|
| Architektura | Podwójny silnik: natywny DirectShow/Media Foundation + wbudowane potoki FFmpeg | Pętla przechwycenie-przetworzenie-wyjście oparta na klatkach z obiektami COM |
| Wsparcie platform | Windows, macOS, Linux, Android, iOS (5 platform) | Tylko Windows |
| Ceny | 250-500 EUR/rok (subskrypcja) lub 1 500 EUR zespół/wieczysta | ~4 508 $/programista/rok (subskrypcja obowiązkowa) |
| Najlepsze do | Wieloplatformowe aplikacje przechwytywania, potoki multi-wyjściowe, efekty wideo, detekcja | Wielovendorowe SDI broadcast, nakładki HTML5 CG, workflow playlist/playout |
| Sprzęt SDI | Wsparcie Blackmagic DeckLink | Blackmagic, AJA, Bluefish444, Deltacast wielovendorowe SDI |
| Frameworki UI | WinForms, WPF, MAUI, Avalonia, Uno, Console, Blazor | WinForms, WPF, Console |
| Model licencji | Wieczysta lub roczna subskrypcja; działa po wygaśnięciu | Tylko roczna subskrypcja; znak wodny po wygaśnięciu subskrypcji |
| Wsparcie | Dedykowany system zgłoszeń, priorytetowe SLA | Wsparcie e-mail, forum |
Szczegółowa analiza architektury
Architektura Video Capture SDK .NET
Video Capture SDK wykorzystuje projekt oparty na potoku. Deklaratywnie konfigurujesz źródło, etapy przetwarzania i wyjścia. Silnik automatycznie buduje wewnętrzny graf filtrów, zarządzając wątkami, synchronizacją i zarządzaniem buforami. Podwójny silnik obejmuje DirectShow/Media Foundation dla natywnego dostępu do urządzeń i wbudowany potok FFmpeg dla zaawansowanych kodeków i pozyskiwania z kamer IP.
- ▶Deklaratywna konfiguracja potoku: ustaw właściwości, wywołaj StartAsync()
- ▶Podwójny silnik: natywne API przechwytywania OS + wbudowany FFmpeg
- ▶Podgląd z przyspieszeniem GPU przez renderery Direct3D / OpenGL
- ▶Architektura sterowana zdarzeniami z obsługą .NET async/await
- ▶Model jednoprocesowy z automatycznym zarządzaniem wątkami
- ▶Multi-wyjście z jednego potoku: nagrywanie + streaming + zrzut ekranu jednocześnie
Architektura MFormats SDK
MFormats wykorzystuje oparty na klatkach model przechwycenie-przetworzenie-wyjście zbudowany na obiektach COM. Tworzysz MFReader do pobierania klatek, przetwarzasz każdą klatkę przez obiekty MFTransform i wysyłasz je do wyjść MFWriter lub MFRenderer. Daje to precyzyjną kontrolę nad każdą klatką, ale wymaga napisania pętli przechwytywania, zarządzania wątkami i ręcznego obsługiwania taktowania klatek.
- ▶Pętla oparta na klatkach: pobierz klatkę z MFReader, przetwórz, wyślij do MFWriter
- ▶Architektura oparta na COM z wrapperami interoperacyjności .NET
- ▶Wymagane ręczne zarządzanie wątkami i taktowaniem klatek
- ▶Kontrola na poziomie klatki umożliwia niestandardową logikę routingu
- ▶Osobne obiekty dla każdego etapu potoku (Reader, Transform, Writer, Renderer)
- ▶Wbudowane playout i planowanie playlist dla workflow broadcast
Kluczowe różnice architektoniczne
| Aspekt | Video Capture SDK | MFormats SDK |
|---|---|---|
| Model programowania | Deklaratywny potok: skonfiguruj i uruchom | Imperatywna pętla: pobierz, przetwórz, wyślij na klatkę |
| Wątkowanie | Automatyczne wewnętrzne zarządzanie wątkami | Programista zarządza wątkowaniem pętli przechwytywania |
| Routing klatek | Automatyczny przez konfigurację potoku | Ręczny routing na klatkę w kodzie |
| Multi-wyjście | Wbudowane jednoczesne wyjścia z jednego potoku | Programista klonuje klatki i kieruje do wielu writerów |
| Platforma | Wieloplatformowy (.NET 6-10, MAUI) | Tylko Windows (oparty na COM) |
| Model obiektowy | Czyste zarządzane API .NET | Interoperacyjność COM z wrapperami .NET |
Porównanie funkcja po funkcji
Źródła przechwytywania
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| Kamery USB | ✅ | ✅ |
| Przechwytywanie ekranu / pulpitu | ✅ | ✅ |
| Kamery IP (RTSP/ONVIF) | ✅ | ✅ |
| Blackmagic DeckLink SDI | ✅ | ✅ |
| Karty SDI AJA | ❌ | ✅ |
| Karty SDI Bluefish444 | ❌ | ✅ |
| Karty SDI Deltacast | ❌ | ✅ |
| Tunery TV (BDA/DVB) | ✅ | ❌ |
| Źródła NDI | ✅ | ✅ |
| Kamery przemysłowe (GenICam/GigE Vision) | ✅ | ❌ |
| Kamery wirtualne (OBS Virtual Cam) | ✅ | ⚠️(Przez DirectShow) |
Nagrywanie i wyjście
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| MP4 (H.264 / H.265) | ✅ | ✅ |
| Kontener MXF | ⚠️ | ✅(MFormats silny w broadcast MXF) |
| Kontener MKV | ✅ | ❌ |
| WebM (VP8 / VP9 / AV1) | ✅ | ❌ |
| AVI | ✅ | ✅ |
| MOV (ProRes) | ✅ | ✅ |
| WMV / ASF | ✅ | ✅ |
| MPEG-TS | ✅ | ✅ |
| Animowany GIF | ✅ | ❌ |
| Tylko audio (MP3, AAC, WAV, FLAC) | ✅ | ⚠️ |
| Nagrywanie Pre-Event (Bufor Cykliczny) | ✅ | ❌ |
Multi-wyjście
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| Jednoczesne nagrywanie + streaming | ✅ | ✅ |
| Wiele niezależnych wyjść nagrywania | ✅ | ⚠️(Wymaga ręcznego klonowania klatek) |
| Niezależne sterowanie wyjściem (start/stop/pauza każdego) | ✅ | ⚠️(Ręczne sterowanie na writer) |
| Różne kodeki na wyjście | ✅ | ✅ |
| Zrzut ekranu podczas nagrywania | ✅ | ✅ |
Streaming
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| RTMP Push | ✅ | ✅ |
| Serwer RTSP | ✅ | ❌ |
| Streaming SRT | ✅ | ✅ |
| Wyjście HLS | ✅ | ⚠️ |
| Wyjście NDI | ✅ | ✅ |
| UDP / TCP Multicast | ✅ | ✅ |
Przetwarzanie wideo i efekty
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| Zmiana rozmiaru / przycinanie w czasie rzeczywistym | ✅ | ✅ |
| Deinterlacing | ✅ | ✅ |
| Korekta kolorów | ✅ | ✅ |
| Nakładki tekstu / obrazu | ✅ | ✅ |
| Nakładki HTML5 CG | ❌ | ✅ |
| Chroma Key (zielony ekran) | ✅ | ✅ |
| Efekty wideo z przyspieszeniem GPU (40+) | ✅ | ⚠️(Ograniczone wbudowane efekty) |
| Obraz w obrazie | ✅ | ✅ |
| Przejścia i kurtyny | ✅ | ✅ |
Audio
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| Przechwytywanie urządzenia audio | ✅ | ✅ |
| Miksowanie audio (wiele wejść) | ✅ | ✅ |
| Efekty audio (40+ wbudowanych: EQ, kompresor, pogłos itp.) | ✅ | ❌ |
| Wskaźnik VU / monitoring poziomu | ✅ | ✅ |
| Przechwytywanie audio systemowego (loopback) | ✅ | ⚠️ |
| Wbudowany routing audio (SDI) | ✅ | ✅ |
Detekcja i analiza
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| Detekcja ruchu | ✅ | ❌ |
| Detekcja twarzy | ✅ | ❌ |
| Odczyt kodów kreskowych / QR | ✅ | ❌ |
| Śledzenie obiektów | ✅ | ❌ |
| Detekcja poziomu audio | ✅ | ✅ |
Broadcast i playout
| Funkcja | Video Capture SDK | MFormats SDK |
|---|---|---|
| Planowanie playlist / playout | ❌ | ✅ |
| Wielovendorowe wyjście SDI | ⚠️ | ✅(MFormats wspiera wyjście AJA, Bluefish, Deltacast) |
| Nakładki HTML5 CG (generator znaków) | ❌ | ✅ |
| Wyjście kamery wirtualnej | ✅ | ❌ |
| Genlock / synchronizacja referencyjna | ❌ | ✅ |
Wsparcie platform
Kompatybilność systemów operacyjnych
| Platforma | Video Capture SDK | MFormats SDK |
|---|---|---|
| Windows x64 | ✅ | ✅ |
| Windows ARM64 | ✅ | ❌ |
| macOS (Apple Silicon + Intel) | ✅ | ❌ |
| Linux x64 (Ubuntu, Debian, Fedora) | ✅ | ❌ |
| Linux ARM64 (Raspberry Pi) | ✅ | ❌ |
| Android (przez .NET MAUI) | ✅ | ❌ |
| iOS (przez .NET MAUI) | ✅ | ❌ |
Kompatybilność frameworków UI
| Framework | Video Capture SDK | MFormats SDK |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| .NET MAUI | ✅ | ❌ |
| Avalonia UI | ✅ | ❌ |
| Uno Platform | ✅ | ❌ |
| Console / Service | ✅ | ✅ |
| Blazor (Server-Side) | ✅ | ❌ |
Porównanie cen
Ceny Video Capture SDK .NET
1 programista, użycie komercyjne, roczne aktualizacje i wsparcie
Do 3 programistów, licencja wieczysta, 1 rok aktualizacji w cenie
Do 8 programistów, licencja wieczysta, 1 rok aktualizacji w cenie
All licenses include:
- ✓ Dystrybucja bez opłat licencyjnych
- ✓ Wszystkie przykłady kodu źródłowego
- ✓ Priorytetowe wsparcie przez zgłoszenia
- ✓ Wszystkie cele platformowe w cenie
- ✓ Opcja wieczysta: kontynuuj korzystanie po wygaśnięciu subskrypcji (bez znaku wodnego)
Ceny MFormats SDK
Roczna subskrypcja, jeden programista, tylko Windows
5 stanowisk programistycznych, 3-letnie zobowiązanie subskrypcyjne
Może wymagać opłat runtime za wdrożenie w zależności od konfiguracji
Ostrzeżenie o wygaśnięciu subskrypcji
MFormats SDK wykorzystuje obowiązkowy model rocznej subskrypcji. Jeśli Twoja subskrypcja wygaśnie lub nie zostanie odnowiona:
- ⚠Znak wodny jest automatycznie dodawany do wszystkich wyjść wideo
- ⚠Nie możesz kontynuować korzystania z SDK w produkcji bez aktywnej subskrypcji
- ⚠Nie ma opcji wieczystej licencji awaryjnej
- ⚠Twoje wdrożone aplikacje będą wyświetlać znaki wodne, jeśli serwer licencji nie może zweryfikować
Video Capture SDK oferuje wieczyste licencje, które działają bezterminowo po zakupie, bez kar w postaci znaków wodnych za wygasłe odnowienia.
Przykłady kodu
Przykład 1: Przechwytywanie z kamery do 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();MFormats SDK
C#// MFormats: Frame-based capture loop
MFDeviceClass devClass = new MFDeviceClass();
MFReaderClass reader = new MFReaderClass();
MFWriterClass writer = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure video device
reader.DeviceSet(eMFDeviceType.eMFDT_Video, 0, "");
reader.DeviceSet(eMFDeviceType.eMFDT_Audio, 0, "");
// Configure writer output
writer.WriterSet("recording.mp4", 0, "");
// You must run the capture loop yourself
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Preview
renderer.RenderSet("preview", frame, "");
// Write to file
writer.WriterPut(frame, "");
// Release frame manually
Marshal.ReleaseComObject(frame);
}
Thread.Sleep(1); // Manual timing
}Przykład 2: Kamera IP z nakładką + streaming
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",
Type = IPCameraType.RTSP
};
// Add text overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
Text = "{timestamp} - Camera 1",
Position = new System.Drawing.Point(10, 10),
Font = new System.Drawing.Font("Arial", 14),
Color = System.Drawing.Color.White
});
// Stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = new RTMPOutput
{
URL = "rtmp://streaming-server/live",
StreamKey = "stream_key",
Video = new H264EncoderSettings { Bitrate = 4500 },
Audio = new AACEncoderSettings { Bitrate = 128 }
};
// Also record locally
capture.Output_Filename = "backup.mp4";
capture.Output_Format = new MP4Output();
await capture.StartAsync();MFormats SDK
C#// MFormats: Manual frame loop with overlay + streaming
MFReaderClass reader = new MFReaderClass();
MFWriterClass localWriter = new MFWriterClass();
MFWriterClass rtmpWriter = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure RTSP source
reader.ReaderOpen("rtsp://192.168.1.100:554/stream", "");
// Configure outputs
localWriter.WriterSet("backup.mp4", 0, "");
rtmpWriter.WriterSet("rtmp://streaming-server/live/stream_key", 0, "");
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Add overlay manually via MFTransform
MFOverlayClass overlay = new MFOverlayClass();
overlay.OverlayTextSet(frame,
DateTime.Now.ToString() + " - Camera 1",
10, 10, 14, "Arial", 0xFFFFFF, 0, "");
// Clone frame for second output
MFFrame clone;
frame.MFClone(out clone, eMFrameClone.eMFC_Full, eMFCC.eMFCC_Default);
// Write to local file
localWriter.WriterPut(frame, "");
// Write to RTMP stream
rtmpWriter.WriterPut(clone, "");
Marshal.ReleaseComObject(clone);
Marshal.ReleaseComObject(frame);
}
}Kiedy wybrać każde rozwiązanie
Wybierz Video Capture SDK, gdy potrzebujesz
- ✓Wieloplatformowych aplikacji przechwytywania (Windows, macOS, Linux, mobilne)
- ✓Architektury opartej na potoku z automatycznym zarządzaniem wątkami i buforami
- ✓40+ wbudowanych efektów wideo i audio z przyspieszeniem GPU
- ✓Detekcji ruchu, twarzy i skanowania kodów kreskowych podczas przechwytywania
- ✓Wyjścia kamery wirtualnej do integracji z OBS, Zoom, Teams
- ✓Ekonomicznego licencjonowania z opcją wieczystej licencji
- ✓Wielu niezależnych wyjść z indywidualnym sterowaniem start/stop
- ✓Wsparcia kamer przemysłowych (GenICam, GigE Vision)
- ✓Wsparcia tunera TV i przechwytywania DVB
Wybierz MFormats SDK, gdy potrzebujesz
- ✓Wielovendorowego wsparcia SDI: AJA, Bluefish444, Deltacast obok Blackmagic
- ✓Playout broadcast z planowaniem playlist i automatyzacją
- ✓Nakładek CG (generator znaków) opartych na HTML5 dla live broadcast
- ✓Genlock i synchronizacji referencyjnej dla środowisk studia broadcast
- ✓Ręcznej kontroli na poziomie klatki nad każdym krokiem przetwarzania
- ✓Formatu kontenera MXF z pełnym wsparciem metadanych broadcast
- ✓Integracji z istniejącą infrastrukturą broadcast i routerami SDI
Macierz decyzyjna
| Wymaganie | Video Capture SDK | MFormats SDK | Zwycięzca |
|---|---|---|---|
| Wsparcie wieloplatformowe | Video Capture SDK | ||
| Multi-wyjście z niezależnym sterowaniem | Video Capture SDK | ||
| Efekty audio (40+ wbudowanych) | Video Capture SDK | ||
| Efekty wideo GPU | Video Capture SDK | ||
| Detekcja ruchu / twarzy / kodów kreskowych | Video Capture SDK | ||
| Wyjście kamery wirtualnej | Video Capture SDK | ||
| Budżet poniżej 2 000 EUR | Video Capture SDK | ||
| Opcja wieczystej licencji | Video Capture SDK | ||
| Kamery przemysłowe (GenICam) | Video Capture SDK | ||
| Tuner TV / przechwytywanie DVB | Video Capture SDK | ||
| Wielovendorowe SDI (AJA, Bluefish444) | MFormats SDK | ||
| Nakładki HTML5 CG dla broadcast | MFormats SDK |
Podsumowanie
Video Capture SDK .NET
Video Capture SDK wyróżnia się jako wieloplatformowy, oparty na potoku silnik przechwytywania dla programistów .NET, którzy potrzebują zaawansowanego przetwarzania wideo, funkcji detekcji, wielu niezależnych wyjść i szerokiego wsparcia urządzeń. Jego deklaratywne API, 40+ efektów GPU i wieczyste licencjonowanie czynią go opłacalnym wyborem dla większości aplikacji przechwytywania od desktopu po mobile.
MFormats SDK
MFormats SDK to mocny wybór dla workflow skoncentrowanych na broadcast, wymagających wielovendorowego wsparcia sprzętowego SDI (AJA, Bluefish444, Deltacast), nakładek HTML5 CG i automatyzacji playout opartego na playlistach. Jego architektura oparta na klatkach daje granularną kontrolę na poziomie klatki odpowiednią dla profesjonalnych środowisk broadcast. Jednak jest dostępny tylko na Windows, znacznie droższy i dodaje znaki wodne, jeśli subskrypcja wygaśnie.
The Reality
Dla większości projektów przechwytywania wideo .NET — szczególnie tych wymagających wsparcia wieloplatformowego, funkcji detekcji lub ekonomicznego licencjonowania — Video Capture SDK jest oczywistym wyborem. MFormats znajduje swoje miejsce konkretnie w wielovendorowych studiach broadcast SDI, gdzie integracja sprzętowa AJA/Bluefish i workflow nakładek CG są niezbędne.
