Media Player SDK .NET vs FFmpeg .NET Wrappers
Najlepsze SDK odtwarzacza wideo C# w 2026 roku
Last updated: Styczeń 2026
Szukasz alternatywy dla FFmpeg do odtwarzania wideo w .NET? Ten przewodnik porównuje VisioForge Media Player SDK .NET z popularnymi bibliotekami wrapper CLI FFmpeg. Omawiamy różnice architektoniczne, parzystość funkcji, złożoność kodu, licencjonowanie i rzeczywistą wydajność, aby pomóc Ci podjąć właściwą decyzję dla Twojego projektu.
Bottom line: Użyj VisioForge Media Player SDK .NET, gdy aplikacja .NET musi odtwarzać, renderować, przewijać lub wyświetlać wideo w czasie rzeczywistym na Windows, macOS, Linux, iOS, Android lub Unity; silnik MediaPlayerCoreX dekoduje z akceleracją sprzętową i rysuje ramki na ekranie. Wybierz FFMpegCore lub Xabe.FFmpeg, gdy potrzebujesz wyłącznie pracy headless po stronie serwera, takiej jak transkodowanie, ekstrakcja miniatur lub remuksowanie, gdzie nic nie jest wyświetlane użytkownikowi. Oba podejścia są komplementarne, a wiele aplikacji produkcyjnych łączy odtwarzacz SDK z wrapperem FFmpeg do przetwarzania w tle.
Podsumowanie wykonawcze
| Kryterium | Media Player SDK .NET | FFmpeg Wrappers |
|---|---|---|
| Architektura | Dwa natywne silniki: GStreamer (wieloplatformowy) + DirectShow / Media Foundation (Windows) | Zarządzany wrapper wokół procesu CLI ffmpeg.exe / ffprobe.exe |
| Odtwarzanie w czasie rzeczywistym | Wbudowany rendering wideo/audio z akceleracją GPU | Brak wbudowanego renderingu; ramki muszą być przesyłane do niestandardowego widoku |
| Wsparcie frameworków UI | WinForms, WPF, MAUI, Avalonia, Uno Platform, konsola | Niezależny od frameworka (proces CLI), brak natywnych kontrolek UI |
| Krzywa uczenia się | API wysokiego poziomu: kilka linii do odtworzenia wideo | Umiarkowana: wymagana znajomość flag FFmpeg i zarządzania procesami |
| Licencjonowanie | Komercyjna licencja na dewelopera od $599·rok | Wrapper: MIT/open source; FFmpeg: LGPL/GPL (sprawdź obowiązki) |
| Najlepszy dla | Interaktywne odtwarzacze desktopowe, kioski, monitoring, obrazowanie medyczne | Transkodowanie wsadowe, przetwarzanie po stronie serwera, pipeline headless |
Omówione FFmpeg Wrappery
To porównanie skupia się na najpopularniejszych bibliotekach .NET, które opakowują narzędzia wiersza poleceń FFmpeg:
FFMpegCore
NuGet: FFMpegCore | ~2 k gwiazdek GitHub
Wrapper z Fluent API dla ffmpeg i ffprobe. Obsługuje piping, niestandardowe argumenty i operacje asynchroniczne. Licencja MIT.
Xabe.FFmpeg
NuGet: Xabe.FFmpeg | ~700 gwiazdek GitHub
Wieloplatformowy licencjonowany wrapper z automatycznym pobieraniem binarek. Oferuje zarówno darmowe (niekomercyjne) jak i płatne plany.
FFmpeg.NET (cmxl)
NuGet: FFmpeg.NET | ~200 gwiazdek GitHub
Lekki wrapper oparty na zdarzeniach skupiony na konwersji. Licencja MIT.
MediaToolkit
NuGet: MediaToolkit | ~1 k gwiazdek GitHub
Prosty wrapper do transkodowania. Starsza biblioteka, mniej aktywnie utrzymywana. Licencja MIT.
Porównanie architektury
Media Player SDK .NET — Dwa natywne silniki
- ✓Dwa silniki: wieloplatformowy silnik GStreamer (MediaPlayerCoreX) oraz windowsowy silnik DirectShow / Media Foundation (MediaPlayerCore)
- ✓Wideo i audio dekodowane i renderowane wewnątrz procesu .NET
- ✓Dekodowanie z akceleracją GPU (DXVA2 / D3D11 / VAAPI) z automatycznym fallbackiem
- ✓Bezpośrednia integracja z frameworkami UI poprzez natywne kontrolki powierzchni wideo
- ✓Brak uruchamiania zewnętrznych procesów ani narzutu IPC
- ✓Pipeline bezpieczny wątkowo z wbudowaną synchronizacją
FFmpeg Wrappery — Model procesu zewnętrznego
- •Uruchamianie ffmpeg.exe / ffprobe.exe jako procesu potomnego z .NET
- •Komunikacja przez argumenty CLI, pipe stdin/stdout lub pliki tymczasowe
- •Brak renderingu wideo w procesie; ramki muszą być przesyłane i wyświetlane ręcznie
- •Wieloplatformowy, o ile dostępny jest właściwy plik binarny FFmpeg
- •Izolacja procesu: awaria FFmpeg nie powoduje awarii aplikacji
- •Cykl życia procesu, anulowanie i analiza błędów muszą być zarządzane samodzielnie
Porównanie funkcji
Odtwarzanie i rendering
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Odtwarzanie wideo w czasie rzeczywistym | Tak | Nie (tylko dekodowanie; trzeba zbudować własny renderer) |
| Odtwarzanie audio | Tak | Można przesłać PCM do NAudio / SDL, ale nie wbudowane |
| Przewijanie / szybkie przeszukiwanie | Dokładne do ramki z cache keyframe | Wymaga restartu procesu lub manipulacji pipe |
| Kontrola prędkości odtwarzania | 0,25x - 16x z opcją korekcji wysokości dźwięku | Przez filtry atempo/setpts, tylko offline |
| Odtwarzanie wsteczne | Tak (czas rzeczywisty) | Przez filtr 'reverse', tylko offline |
| Napisy (SRT, ASS, PGS) | Wbudowany renderer ze wsparciem stylów | Wypalanie przez filtr napisów; brak interaktywnego przełączania |
| Odtwarzanie DVD / Blu-ray | Tak, z nawigacją menu | Ograniczone — brak wsparcia menu |
Wsparcie formatów i kodeków
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Formaty kontenerów | MP4, MKV, AVI, MOV, TS, FLV, WebM i ponad 100 innych | Tak samo (rdzeń FFmpeg) |
| Kodeki wideo | H.264, H.265/HEVC, VP9, AV1, MPEG-2, ProRes itp. | Tak samo (rdzeń FFmpeg) |
| Kodeki audio | AAC, MP3, FLAC, Opus, Vorbis, AC-3, DTS itp. | Tak samo (rdzeń FFmpeg) |
| Dekodowanie z akceleracją sprzętową | DXVA2, D3D11VA, VAAPI, VideoToolbox | Przez flagę -hwaccel (jeśli wrapper ją udostępnia) |
| Kodowanie z akceleracją sprzętową | NVENC, QSV, AMF, VideoToolbox | Przez flagę -c:v z koderem HW |
| Strumienie sieciowe (RTSP, HLS, MPEG-DASH) | Wbudowane z ponownym łączeniem i kontrolą buforowania | Możliwe, ale wymaga ręcznej konstrukcji argumentów |
| Zaszyfrowana / DRM zawartość | Wsparcie Widevine, PlayReady (enterprise) | Brak wsparcia DRM |
Przetwarzanie wideo
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Filtry w czasie rzeczywistym (jasność, kontrast itp.) | Tak — z akceleracją GPU, regulowane w czasie działania | Tylko offline; wymagane ponowne kodowanie |
| Chroma key (green screen) | Wbudowany z kontrolą tolerancji | Przez filtr chromakey, offline |
| Deinterlacing | Tak, automatyczny lub ręczny | Przez filtry yadif / bwdif |
| Obraz w obrazie | Natywne wsparcie PiP | Przez filtr overlay, offline |
| Wyświetlanie na ekranie (OSD / tekst nakładkowy) | Tak, z pozycjonowaniem i animacją | Przez filtr drawtext, offline |
| Efekty shaderów GPU | Niestandardowe shadery D3D / OpenGL w czasie działania | Niedostępne |
Przetwarzanie audio
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Głośność / wyciszenie | Kontrola w czasie rzeczywistym | Przez filtr volume (ponowne kodowanie) |
| Korektor | 10-pasmowy EQ regulowany w czasie działania | Przez filtr superequalizer (offline) |
| Efekty audio (pogłos, echo itp.) | Wbudowany łańcuch efektów | Przez filtry aecho, areverb (offline) |
| Zewnętrzna ścieżka audio | Miksowanie dodatkowej ścieżki audio podczas odtwarzania | Przez -map lub filtr amix (offline) |
Wyjście i nagrywanie
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Nagrywanie do pliku podczas odtwarzania | Tak — MP4, MKV, AVI z wyborem kodeka | Nie dotyczy (brak odtwarzania) |
| Zrzut ekranu / przechwytywanie ramki | API jednego wywołania, dowolny format | Przez -vframes 1 lub pipe; wymaga analizy wyjścia |
| Strumieniowanie do RTMP / RTSP | Wbudowane wyjście sieciowe | Przez argument -f flv rtmp://... |
Detekcja i analiza
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Detekcja ruchu | Wbudowana, zdarzenia w czasie rzeczywistym | Nie |
| Detekcja / śledzenie twarzy | Wbudowane (CPU lub GPU) | Nie (użyj osobnej biblioteki ML) |
| Odczyt kodów kreskowych / QR | Wbudowany | Nie |
| Informacje / metadane pliku multimedialnego | Przez integrację MediaInfo | Przez ffprobe (dobrze wspierane) |
Przetwarzanie wsadowe / plików
| Feature | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Transkodowanie plików wideo | Nie jest głównym celem (użyj Video Edit SDK) | Główna siła — pełna moc FFmpeg |
| Kolejka przetwarzania wsadowego | Nie wbudowana | Łatwe — uruchom wiele procesów |
| Przycinanie / dzielenie / łączenie | Ograniczone do eksportu zakresu odtwarzania | Doskonałe — bezstratne cięcie, demuxer concat |
| Raportowanie postępu | Zdarzenia podczas odtwarzania/nagrywania | Analiza stdout lub flaga -progress |
Przewodnik po przypadkach użycia
Wybierz Media Player SDK .NET, gdy potrzebujesz...
Desktopowa aplikacja odtwarzacza wideo
Zbuduj w pełni funkcjonalny odtwarzacz multimedialny z paskiem przewijania, napisami, listami odtwarzania i kontrolkami audio — podobny do VLC, ale z brandingiem Twojego produktu.
Przeglądarka monitoringu / bezpieczeństwa
Wyświetlaj wiele strumieni kamer RTSP z detekcją ruchu, nagrywaniem i detekcją twarzy w jednej aplikacji WPF lub WinForms.
Stacja robocza obrazowania medycznego
Odtwarzaj wideo DICOM lub strumienie ultrasonograficzne o wysokim bitrate z dokładnym przewijaniem do ramki, nakładkami pomiarowymi i eksportem zrzutów ekranu.
Digital signage / Kiosk
Odtwarzaj w pętli zawartość wideo z tekstem nakładkowym, przejściami i zaplanowanymi zmianami listy odtwarzania na wbudowanym wyświetlaczu.
Klient wideokonferencji / VoIP
Renderuj przychodzące strumienie RTP/RTSP z odtwarzaniem o niskim opóźnieniu, wymianą tła chroma key i miksowaniem audio.
Interaktywne szkolenie / edukacja
Osadź odtwarzacz wideo z nawigacją po rozdziałach, odtwarzaniem o zmiennej prędkości i znacznikami czasu z zakładkami w aplikacji LMS WPF lub MAUI.
Wybierz FFmpeg Wrappery, gdy potrzebujesz...
Pipeline transkodowania po stronie serwera
Konwertuj przesłane filmy na strumienie adaptacyjne HLS/DASH na headlessowym serwerze Linux w kontenerze Docker.
Narzędzie do wsadowej konwersji mediów
Zbuduj CLI lub usługę w tle, która konwertuje tysiące plików w nocy — MP4 na WebM, FLAC na AAC itp.
Generowanie miniatur / podglądów
Wyodrębnij klatki kluczowe lub animowane podglądy GIF z przesłanych filmów dla aplikacji webowej.
Przetwarzanie tylko audio
Normalizuj głośność, transkoduj do Opus lub dziel pliki audio dla platformy hostingowej podcastów.
Szybki prototyp / skrypt
Potrzebujesz jednorazowej aplikacji konsolowej .NET do przycięcia wideo lub wyodrębnienia metadanych? Wrappery FFmpeg pozwolą Ci to zrobić w kilka minut.
Przykłady kodu — Obok siebie
Interaktywne odtwarzanie wideo
Media Player SDK .NET
C#// NuGet: VisioForge.DotNet.MediaPlayer
using VisioForge.Core.MediaPlayer;
// Create engine and assign to a WPF/WinForms video view
var player = new MediaPlayerCoreX(videoView);
// Open a file and play
await player.OpenAsync(new Uri("video.mp4"));
await player.PlayAsync();
// Seek to 30 seconds
await player.Position_SetAsync(TimeSpan.FromSeconds(30));
// Adjust volume
player.Audio_OutputDevice_Volume_Set(0.75);
// Take a snapshot
await player.Snapshot_SaveAsync("frame.png");FFMpegCore (FFmpeg Wrapper)
C#// NuGet: FFMpegCore
using FFMpegCore;
// FFmpeg wrappers do NOT provide real-time playback.
// You can extract frames, but displaying them is your job.
// Extract a single frame at 30 seconds
await FFMpeg.SnapshotAsync("video.mp4", "frame.png",
captureTime: TimeSpan.FromSeconds(30));
// For actual playback you would need to:
// 1. Pipe raw frames from ffmpeg stdout
// 2. Decode them in your app
// 3. Render each frame on a UI surface
// 4. Handle audio sync separately
// This is hundreds of lines of custom code.Odtwarzanie DVD
Media Player SDK .NET
C#// Play DVD with menu navigation
var player = new MediaPlayerCoreX(videoView);
var dvdSource = new DVDSource(new Uri("D:\\"));
await player.OpenAsync(dvdSource);
await player.PlayAsync();
// Navigate DVD menu
player.DVD_Menu_Show();
player.DVD_Menu_SelectButton(2);
player.DVD_Menu_ActivateButton();
// Switch audio track or subtitle
player.DVD_AudioStream_Set(1);
player.DVD_SubtitleStream_Set(0);FFmpeg Wrapper
C#// FFmpeg has limited DVD support.
// No menu navigation is possible.
// You can rip a specific title:
// ffmpeg -i "dvd://1" -c:v libx264 output.mp4
// With FFMpegCore:
await FFMpegArguments
.FromFileInput("D:\\VIDEO_TS")
.OutputToFile("output.mp4", overwrite: true, options => options
.WithVideoCodec("libx264")
.WithAudioCodec("aac"))
.ProcessAsynchronously();
// No interactive menu, no subtitle toggle,
// no chapter navigation during playback.Efekty audio podczas odtwarzania
Media Player SDK .NET
C#// Apply audio effects in real time
var player = new MediaPlayerCoreX(videoView);
await player.OpenAsync(new Uri("concert.mp4"));
await player.PlayAsync();
// 10-band equalizer
player.Audio_Equalizer_Enable(true);
player.Audio_Equalizer_Band_Set(0, 6.0); // 60 Hz boost
player.Audio_Equalizer_Band_Set(9, -3.0); // 16 kHz cut
// Add reverb effect
player.Audio_Effects_Enable(true);
player.Audio_Effects_Reverb(0.5, 0.3);FFmpeg Wrapper
C#// Audio effects require re-encoding the file.
// No real-time adjustment is possible.
await FFMpegArguments
.FromFileInput("concert.mp4")
.OutputToFile("concert_eq.mp4", overwrite: true, options => options
.WithAudioFilters(af => af
.Argument("superequalizer=1b=6:10b=-3")
.Argument("aecho=0.8:0.88:60:0.4")))
.ProcessAsynchronously();
// This creates a new file.
// Want to tweak the EQ? Re-encode again.
// Processing time depends on file length.Porównanie cen
Media Player SDK .NET
Jeden deweloper, jedna aplikacja, dystrybucja bez opłat licencyjnych
Jeden deweloper, nieograniczone aplikacje
Pięciu deweloperów, nieograniczone aplikacje
Nieograniczeni deweloperzy w jednej lokalizacji
- ✓Wszystkie aktualizacje i nowe wersje w okresie subskrypcji
- ✓Priorytetowe wsparcie e-mail i ticketowe
- ✓Dostęp do obu silników: wieloplatformowego GStreamer oraz windowsowego DirectShow / Media Foundation
- ✓Dystrybucja runtime bez opłat licencyjnych
FFmpeg Wrappery
Plik binarny FFmpeg musi być dystrybuowany z aplikacją — sprawdź zgodność LGPL/GPL
Plus licencjonowanie binarki FFmpeg
Plus licencjonowanie binarki FFmpeg
Ważne: Licencja biblioteki wrappera jest oddzielna od licencji FFmpeg. Jeśli Twój projekt jest własnościowy (zamknięte źródło), dystrybucja binarek FFmpeg wymaga starannej zgodności z LGPL — lub zakupu komercyjnej licencji FFmpeg od dostawcy.
Wsparcie platform i frameworków
| Platforma | Media Player SDK .NET | FFmpeg Wrappers |
|---|---|---|
| Windows x64 | Tak (natywny) | Tak (z ffmpeg.exe) |
| Windows ARM64 | Tak | Tak (build ARM64) |
| macOS (x64 + ARM) | Tak (silnik GStreamer) | Tak |
| Linux (x64) | Tak (silnik GStreamer) | Tak |
| Linux ARM / Raspberry Pi | Tak | Tak |
| Android (.NET MAUI) | Tak | Możliwe (buildy mobilne FFmpeg) |
| iOS (.NET MAUI) | Tak | Trudne (brak procesu CLI na iOS) |
UI Framework Support
| Framework UI | Media Player SDK .NET | FFmpeg Wrappers |
|---|---|---|
| WinForms | Natywna kontrolka VideoView | N/D (brak UI) |
| WPF | Natywna kontrolka VideoView | N/D (brak UI) |
| .NET MAUI | Natywna kontrolka VideoView | N/D (brak UI) |
| Avalonia UI | Natywna kontrolka VideoView | N/D (brak UI) |
| Uno Platform | Natywna kontrolka VideoView | N/D (brak UI) |
| Unity | Rendering frame-buffer do Unity Texture2D (OnVideoFrameUnity) | N/D (brak UI) |
| Konsola / Usługa | Tryb headless dostępny | Pełne wsparcie |
Benchmarki wydajności
Zmierzono na Windows 11, Intel i7-13700K, 32 GB RAM, NVIDIA RTX 4070. Wyniki różnią się w zależności od sprzętu i treści.
| Scenario | Media Player SDK | FFmpeg Wrappers |
|---|---|---|
| Czas uruchomienia odtwarzania 4K H.265 | ~120 ms (dekodowanie GPU) | N/D (brak odtwarzania w czasie rzeczywistym) |
| Opóźnienie przewijania 1080p H.264 | ~35 ms (cache keyframe) | N/D |
| Przechwytywanie zrzutu ekranu (pojedyncza ramka) | ~5 ms (w pamięci) | ~800 ms (uruchomienie procesu + dekodowanie) |
| Transkodowanie 10 min 1080p H.264 do H.265 | Nie jest głównym przypadkiem użycia | ~45 s (NVENC) / ~3 min (oprogramowanie) |
| Zużycie pamięci (odtwarzanie 1080p) | ~150 MB (współdzielone tekstury GPU) | ~30 MB wrapper + pamięć procesu FFmpeg |
Znane ograniczenia
Ograniczenia Media Player SDK .NET
- ⚠Nie zaprojektowany do transkodowania wsadowego — użyj VisioForge Video Edit SDK lub FFmpeg
- ⚠Licencja komercyjna wymagana do użytku produkcyjnego
- ⚠Większy rozmiar pakietu NuGet (~50 MB) z powodu dołączonych natywnych silników
- ⚠Zaawansowane filtry specyficzne dla FFmpeg (np. złożony filtergraph) nie w pełni eksponowane
- ⚠Brak wsparcia Docker headless Linux dla renderingu wideo (tylko audio działa)
Ograniczenia FFmpeg Wrapperów
- ⚠Brak odtwarzania wideo lub audio w czasie rzeczywistym — tylko dekodowanie
- ⚠Binarka FFmpeg musi być dystrybuowana z aplikacją (zgodność LGPL/GPL)
- ⚠Oparte na procesach: wyższe opóźnienie dla małych operacji (narzut uruchomienia procesu)
- ⚠Brak wbudowanych kontrolek UI — wszystko budowane od zera
- ⚠Obsługa błędów to parsowanie ciągów z stderr; brak typowanych wyjątków
- ⚠Brak dokładnego do ramki przewijania podczas odtwarzania (nie ma odtwarzania)
- ⚠Brak wsparcia DRM lub zaszyfrowanej treści
Matryca decyzyjna — Szybki podgląd
| Wymaganie | Zwycięzca | Dlaczego |
|---|---|---|
| Odtwarzanie wideo w aplikacji desktopowej | Media Player SDK | Wbudowany rendering, kontrolki UI, przewijanie i synchronizacja audio |
| Transkodowanie 1000 plików na serwerze | FFmpeg | Przetwarzanie wsadowe to główna siła FFmpeg |
| Przeglądarka kamer RTSP | Media Player SDK | Podgląd na żywo z niskim opóźnieniem, ponowne łączenie i nagrywanie |
| Generowanie miniatur przy przesyłaniu | FFmpeg | Lekki, bezstanowy, łatwy do skalowania poziomego |
| Odtwarzacz DVD / Blu-ray z menu | Media Player SDK | Pełna nawigacja menu; FFmpeg tego nie potrafi |
| Korektor audio w czasie rzeczywistym | Media Player SDK | 10-pasmowy EQ regulowany podczas odtwarzania |
| Green screen (chroma key) na żywo | Media Player SDK | Chroma key z akceleracją GPU w czasie rzeczywistym |
| Pakowanie HLS/DASH dla web | FFmpeg | Standardowe narzędzie do adaptacyjnego wyjścia strumieniowego |
| Detekcja ruchu ze zdarzeniami | Media Player SDK | Wbudowany detektor z konfigurowalnymi strefami i callbackami |
| Wieloplatformowe narzędzie konsolowe | FFmpeg | Brak zależności UI, działa wszędzie gdzie FFmpeg jest zainstalowany |
| Detekcja / śledzenie twarzy | Media Player SDK | Zintegrowana detekcja twarzy; FFmpeg jej nie ma |
| Minimalny narzut licencyjny | FFmpeg (wrapper MIT) | Bezpłatny, jeśli zgodność LGPL jest akceptowalna |
Podejście hybrydowe — Użyj obu
Wiele systemów produkcyjnych łączy oba narzędzia. Użyj Media Player SDK do interaktywnego frontendu i FFmpeg do zadań przetwarzania w tle.
- →Pakiet do edycji wideo: odtwarzanie z Media Player SDK, eksport/rendering z FFmpeg
- →Platforma monitoringu: wyświetlanie kamer na żywo z SDK, transkodowanie archiwum z FFmpeg
- →Aplikacja e-learning: interaktywny odtwarzacz z SDK, generowanie strumieni adaptacyjnych po stronie serwera z FFmpeg
Podsumowanie
VisioForge Media Player SDK .NET to właściwy wybór, gdy Twoja aplikacja potrzebuje odtwarzania wideo w czasie rzeczywistym z bogatym zestawem funkcji — interaktywne przewijanie, efekty audio, detekcja ruchu, napisy i natywne kontrolki UI dla WinForms, WPF, MAUI i Avalonia.
Wrappery FFmpeg (FFMpegCore, Xabe.FFmpeg itp.) to właściwy wybór, gdy potrzebujesz headlessowego, serwerowego przetwarzania mediów — transkodowanie wsadowe, generowanie miniatur, konwersja formatów i pakowanie strumieni na dużą skalę.
Sprawdzenie rzeczywistości: wrappery FFmpeg nie zapewniają odtwarzania wideo. Jeśli Twoje wymagania obejmują wyświetlanie wideo użytkownikowi, sam wrapper FFmpeg nie wystarczy bez znaczącego rozwoju niestandardowego.
