Last updated: Styczeń 2026
Media Player SDK .NET vs Medialooks MFormats SDK
Dedykowany framework odtwarzania vs SDK broadcastowy oparty na ramkach
Wybór między VisioForge Media Player SDK .NET a Medialooks MFormats SDK to decyzja między dedykowanym frameworkiem odtwarzania multimediów a broadcastowym silnikiem opartym na ramkach. Media Player SDK oferuje odtwarzanie z podwójnym silnikiem z nawigacją DVD/Blu-ray, ponad 40 efektami audio, miernikiem VU i wyjściem wirtualnej kamery. MFormats pobiera ramki ze źródeł i wysyła je do sprzętu SDI zgodnie z harmonogramem. Ten przewodnik porównuje architekturę, funkcje, wsparcie platform, ceny i rzeczywisty kod, aby pomóc wybrać właściwy SDK dla projektu odtwarzacza wideo .NET lub broadcastowego playoutu.
Podsumowanie
| Aspekt | Media Player SDK .NET | MFormats SDK |
|---|---|---|
| Główny cel | Profesjonalne odtwarzanie multimediów | Playout broadcastowy |
| Architektura | Podwójny silnik (DirectShow + GStreamer) | Oparty na ramkach (pobierz → renderuj) |
| Wsparcie platform | Windows, macOS, Linux, iOS, Android (5 platform) | Tylko Windows |
| Ceny | €250–€500/rok lub €750–€1 500 dożywotnio | ~$4 508/programista/rok |
| Idealne do | Aplikacje odtwarzaczy, kioski, przeglądarki monitoringu | Automatyzacja playoutu broadcastowego |
Szczegółowa analiza architektury
Architektura Media Player SDK .NET
Media Player SDK wykorzystuje projekt potoku z podwójnym silnikiem. Silnik DirectShow zapewnia nawigację DVD/Blu-ray, efekty audio i obsługę starszych formatów w systemie Windows. Wieloplatformowy silnik oparty na GStreamer (MediaPlayerCoreX) zapewnia odtwarzanie na Windows, macOS, Linux, Android i iOS z renderowaniem akcelerowanym przez GPU, wykrywaniem ruchu i wyjściem wirtualnej kamery.
- ▶Podwójny silnik: DirectShow dla DVD/starszych + GStreamer dla wieloplatformowości
- ▶Ponad 40 efektów audio w czasie rzeczywistym z miernikiem VU i spektrum FFT
- ▶Nawigacja menu DVD/Blu-ray z wyborem rozdziałów i kątów
- ▶Wyjście wirtualnej kamery do integracji z Zoom, Teams i OBS
- ▶API async/await oparte na zdarzeniach z automatycznym zarządzaniem wątkami
- ▶PiP, nakładki OSD i wyświetlanie wieloekranowe
Architektura MFormats SDK
MFormats wykorzystuje model oparty na ramkach pobierz-przetwórz-wyślij, zbudowany na obiektach COM. Tworzysz MFReader do pobierania ramek, stosowania transformacji i wysyłania ich do MFRenderer do podglądu lub MFWriter do nagrywania. Ten model jest zoptymalizowany dla playoutu broadcastowego, gdzie ramki przepływają do sprzętu SDI zgodnie ze stałym harmonogramem.
- ▶Pętla oparta na ramkach: pobierz ramkę z MFReader, przetwórz, wyślij na wyjście
- ▶Architektura oparta na COM z wrapperami interop .NET
- ▶Wymagane ręczne zarządzanie wątkami i czasem ramek
- ▶Wyjście SDI wielu dostawców do sprzętu AJA, BlueFish i DELTACAST
- ▶Generator znaków HTML5 dla grafik na antenie
- ▶Wbudowany playout i harmonogramowanie playlist dla przepływów pracy broadcastowych
Kluczowe różnice architektoniczne
| Aspekt | Media Player SDK | MFormats SDK |
|---|---|---|
| Model programowania | Wysoki poziom: skonfiguruj właściwości, wywołaj PlayAsync() | Niski poziom: pobierz, przetwórz, renderuj na ramkę |
| Wątkowanie | Automatyczne wewnętrzne zarządzanie wątkami | Programista zarządza wątkowaniem pętli przechwytywania |
| Potok audio | Ponad 40 efektów, miernik VU, FFT, mapowanie kanałów | Tylko podstawowa normalizacja |
| Odtwarzanie płyt | Pełne DVD/Blu-ray z nawigacją menu | Brak obsługi płyt |
| Platforma | Wieloplatformowy (.NET 6-10, 5 celów OS) | Tylko Windows (oparty na COM) |
| Model obiektowy | Czyste zarządzane API .NET | Interop COM z wrapperami .NET |
Porównanie funkcji
Odtwarzanie
| Funkcja | Media Player SDK | MFormats SDK |
|---|---|---|
| Odtwarzanie plików (MP4, MKV, AVI...) | ✅ | ✅(Przez MFReaderClass) |
| Strumienie sieciowe (RTSP, RTMP, HLS) | ✅ | ✅ |
| Odtwarzanie DVD z nawigacją menu | ✅ | ❌ |
| Odtwarzanie Blu-ray | ✅ | ❌ |
| Odtwarzanie ze zmienną prędkością | ✅ | ⚠️(Kontrola szybkości klatek) |
| Krokowanie klatek | ✅ | ✅ |
| Renderowanie napisów | ✅ | ❌ |
| Wiele ścieżek audio | ✅ | ✅ |
| Zapętlanie / powtarzanie A-B | ✅ | ⚠️(Przez playlistę) |
| Zarządzanie playlistami | ✅ | ✅(Playlista broadcastowa) |
Przetwarzanie audio
| Funkcja | Media Player SDK | MFormats SDK |
|---|---|---|
| Efekty audio (40+) | ✅ | ❌(Tylko normalizacja) |
| Miernik VU + spektrum FFT | ✅ | ❌ |
| Wzmacniacz audio (normalizacja, wzmocnienie, bramka szumów) | ✅ | ⚠️(Podstawowa normalizacja) |
| Maper kanałów | ✅ | ❌ |
Przetwarzanie wideo
| Funkcja | Media Player SDK | MFormats SDK |
|---|---|---|
| Efekty wideo w czasie rzeczywistym | ✅ | ⚠️(Podstawowe (skalowanie, konwersja)) |
| PiP (Obraz w obrazie) | ✅ | ⚠️(Przez mikser GPU) |
| Nakładki OSD | ✅ | ✅ |
| Nakładka HTML5 CG | ❌ | ✅ |
| Chroma key | ✅ | ❌ |
Wyjście
| Funkcja | Media Player SDK | MFormats SDK |
|---|---|---|
| Wyjście wirtualnej kamery | ✅ | ❌ |
| Wyjście NDI | ✅ | ✅ |
| Wyświetlanie wieloekranowe | ✅ | ⚠️(Przez wiele rendererów) |
| Zrzut ekranu | ✅ | ✅ |
Wykrywanie
| Funkcja | Media Player SDK | MFormats SDK |
|---|---|---|
| Wykrywanie ruchu | ✅ | ❌ |
| Wykrywanie twarzy | ✅ | ❌ |
| Skanowanie kodów kreskowych/QR | ✅ | ❌ |
Funkcje broadcastowe
| Funkcja | Media Player SDK | MFormats SDK |
|---|---|---|
| Wyjście SDI (AJA, BlueFish, DELTACAST) | ❌ | ✅ |
| Generator znaków HTML5 | ❌ | ✅ |
| Automatyzacja playlisty broadcastowej | ❌ | ✅ |
Wsparcie platform
Systemy operacyjne
| Platforma | Media Player SDK | MFormats SDK |
|---|---|---|
| Windows | ✅ | ✅ |
| macOS | ✅ | ❌ |
| Linux | ✅ | ❌ |
| Android | ✅ | ❌ |
| iOS | ✅ | ❌ |
Frameworki UI
| Framework | Media Player SDK | MFormats SDK |
|---|---|---|
| WinForms | ✅ | ✅ |
| WPF | ✅ | ✅ |
| WinUI 3 | ✅ | ❌ |
| .NET MAUI | ✅ | ❌ |
| Avalonia | ✅ | ❌ |
| Uno Platform | ✅ | ❌ |
Porównanie cen
Media Player SDK .NET
1 programista — odtwarzanie plików/strumieni, napisy, efekty w czasie rzeczywistym
1 programista — + RTSP/RTMP/HLS/NDI, wykrywanie ruchu, dekodowanie GPU
1 programista — + wideo VR/360°, pełny zestaw efektów
Nieograniczona liczba programistów, bezterminowa, cały zespół
Nieograniczona liczba programistów, bezterminowa, cały zespół
Nieograniczona liczba programistów, bezterminowa, cały zespół
All licenses include:
- ✓ Dystrybucja bez opłat licencyjnych
- ✓ Pełny dostęp do kodu źródłowego (poziomy dożywotnie)
- ✓ Wszystkie przyszłe aktualizacje w okresie licencji
- ✓ Priorytetowe wsparcie techniczne
- ✓ Działa po wygaśnięciu (licencje dożywotnie)
MFormats SDK
Subskrypcja roczna, obowiązkowe odnowienie
Subskrypcja roczna
Subskrypcja roczna za stanowisko
Ostrzeżenie o wygaśnięciu subskrypcji MFormats
MFormats wykorzystuje obowiązkowy model subskrypcji rocznej. Jeśli Twoja subskrypcja wygaśnie:
- ⚠Znak wodny jest dodawany do wszystkich wyjść — Twoja aplikacja produkcyjna jest dotknięta
- ⚠Brak opcji bezterminowej/dożywotniej — musisz nadal płacić
- ⚠Ceny za stanowisko rosną wraz ze wzrostem zespołu — 5 programistów = 5x koszt
- ⚠Brak okresu karencji — znak wodny pojawia się natychmiast po wygaśnięciu
Dożywotnie licencje Media Player SDK działają bezterminowo po zakupie — bez znaków wodnych, bez wygaśnięcia.
Porównanie kodu
Odtwarzanie strumienia RTSP z wykrywaniem ruchu
Media Player SDK
C#var player = new MediaPlayerCoreX(videoView);
// Open an RTSP network stream
var source = await UniversalSourceSettingsV2.CreateAsync(
new Uri("rtsp://camera.local:554/live"));
await player.OpenAsync(source);
// Enable motion detection on the live stream
player.Motion_Detection_Enabled = true;
player.OnMotionDetected += (s, e) =>
LogAlert($"Motion in zone {e.ZoneIndex}, level: {e.Level:P0}");
await player.PlayAsync();MFormats SDK
C#var reader = new MFReaderClass();
reader.ReaderOpen("rtsp://camera.local:554/live", "");
var renderer = new MFRendererClass();
renderer.RendererSet("", 0, panelHandle);
MFFrame frame;
while (playing)
{
reader.SourceFrameGet(-1, out frame, "");
renderer.RenderPut(frame, -1, "");
Marshal.ReleaseComObject(frame);
}
// No motion detection — requires external CV libraryEfekty audio podczas odtwarzania
Media Player SDK
C#var player = new MediaPlayerCoreX(videoView);
var source = await UniversalSourceSettingsV2.CreateAsync(new Uri("podcast.mp4"));
await player.OpenAsync(source);
// 10-band graphic equalizer — boost voice clarity
var eq = new Equalizer10AudioEffect(new double[]
{ 0, 0, 0, 0, 4.5, 0, 3.0, 0, 0, 0 });
player.Audio_Effects_AddOrUpdate(eq);
// Reverb for spatial depth
var reverb = new ReverberationAudioEffect();
reverb.RoomSize = 0.25f;
reverb.Level = 0.1f;
player.Audio_Effects_AddOrUpdate(reverb);
// Enable VU meter for real-time level monitoring
player.Audio_VU_Meter_Enabled = true;
player.OnAudioVUMeter += (s, e) =>
UpdateMeter(e.MeterData);
await player.PlayAsync();MFormats SDK
C#// No audio effects pipeline — normalization only
// No VU meter or FFT spectrum analysis
// No equalizer, reverb, or any real-time audio processingNawigacja DVD (tylko Media Player SDK)
Media Player SDK
C#var player = new MediaPlayerCore(videoView);
// Configure for DVD playback
player.Source_Mode = MediaPlayerSourceMode.DVD_DS;
await player.PlayAsync();
// Navigate chapters and menus during playback
await player.DVD_Chapter_NextAsync();
await player.DVD_Menu_ShowAsync(DVDMenu.Title);
await player.DVD_Menu_ResumePlaybackAsync();
// Select audio language and subtitles
await player.DVD_Select_AudioStreamAsync(1); // e.g., French
await player.DVD_Select_SubpictureStreamAsync(0); // e.g., English subtitles
// Control playback speed and direction
await player.DVD_SetSpeedAsync(2.0, false); // 2x forwardMFormats SDK
C#// No DVD playback capability
// No menu navigation, chapter control, or disc support
// MFormats is designed for file/stream playout, not disc mediaIdealne przypadki użycia
Wybierz Media Player SDK
- ✓Interaktywne aplikacje odtwarzacza multimediów z kontrolkami użytkownika
- ✓Odtwarzanie DVD i Blu-ray z nawigacją menu
- ✓Aplikacje przetwarzania audio z EQ, pogłosem i miernikiem VU
- ✓Przeglądarki monitoringu z wykrywaniem ruchu i twarzy
- ✓Wieloplatformowe odtwarzanie na Windows, macOS, Linux, Android, iOS
- ✓Wyjście wirtualnej kamery dla Zoom, Teams i OBS
- ✓Kioski i digital signage z obsługą napisów
- ✓Zespoły dbające o budżet potrzebujące licencji dożywotnich
Wybierz MFormats SDK
- ✓Zautomatyzowany playout broadcastowy z harmonogramowaniem 24/7
- ✓Wyjście SDI wielu dostawców do sprzętu AJA, BlueFish i DELTACAST
- ✓Nakładki generatora znaków HTML5 dla grafik na antenie
- ✓Przepływy pracy ingestu i playoutu broadcastowego skoncentrowane na MXF
Matryca decyzyjna
| Wymaganie | Media Player SDK | MFormats SDK | Zwycięzca |
|---|---|---|---|
| Aplikacja odtwarzacza multimediów | Media Player SDK | ||
| Odtwarzanie DVD / Blu-ray | Media Player SDK | ||
| Efekty audio podczas odtwarzania | Media Player SDK | ||
| Profesjonalny miernik VU / FFT | Media Player SDK | ||
| Wieloplatformowe odtwarzanie | Media Player SDK | ||
| Wyjście wirtualnej kamery | Media Player SDK | ||
| Wykrywanie ruchu / twarzy / kodów kreskowych | Media Player SDK | ||
| Budżet poniżej €2 000 | Media Player SDK | ||
| Automatyzacja playoutu broadcastowego | MFormats SDK | ||
| Wyjście SDI (AJA, BlueFish, DELTACAST) | MFormats SDK | ||
| Nakładki HTML5 CG | MFormats SDK |
Podsumowanie
Wybierz Media Player SDK .NET, jeśli potrzebujesz
Interaktywnego odtwarzania multimediów z nawigacją DVD/Blu-ray, wieloplatformowego wdrożenia na 5 systemach operacyjnych, ponad 40 efektów audio w czasie rzeczywistym z miernikiem VU, wyjścia wirtualnej kamery dla narzędzi konferencyjnych, wykrywania ruchu/twarzy/kodów kreskowych podczas odtwarzania oraz bezterminowych licencji zespołowych za ułamek kosztu MFormats za stanowisko.
Wybierz MFormats SDK, jeśli potrzebujesz
Zautomatyzowanego playoutu broadcastowego z harmonogramowaniem i działaniem 24/7, wyjścia SDI wielu dostawców do sprzętu AJA, BlueFish i DELTACAST oraz nakładek generatora znaków HTML5 dla grafik na antenie.
The Reality
Różnica jest prosta: Media Player SDK służy do budowy interaktywnych przeglądarek — aplikacji, w których użytkownik ogląda, nawiguje i kontroluje multimedia. MFormats służy do budowy zautomatyzowanych silników playoutu — systemów, które wysyłają ramki do sprzętu SDI zgodnie z harmonogramem bez interakcji użytkownika. Jeśli Twój projekt umieszcza okno wideo przed osobą, Media Player SDK jest właściwym narzędziem. Jeśli Twój projekt zasila nadajnik broadcastowy, to MFormats.
