Udostępnij przez


Praca z klatkami wideo

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w ramach Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Nieskompresowane wideo to sekwencja map bitowych odtwarzanych w szybkim odstępie czasu, zwykle w tempie około 30 klatek na sekundę. Ponieważ większość wideo wprowadza się do wykresu filtru DirectShow w skompresowanym formacie, strumień wideo zazwyczaj przechodzi przez dekoder do dekompresji. Wiele dekoderów wyprowadza dane w formacie YUV, pozostawiając ostateczną konwersję na RGB sprzętowi wideo tuż przed renderowaniem. Jeśli dekoder używa przyspieszania wideo DirectX, sprzęt wideo wykonuje dodatkową pracę w celu dekodowania obrazu. W związku z tym ostateczna dekompresja map bitowych może nie być wykonywana, dopóki dane nie dotrą do sprzętu wideo.

Jednak aby wykonać wiele typów analizy, przetwarzania lub edytowania wideo, często konieczna jest praca z nieskompresowanymi mapami bitowymi w formacie RGB lub YUV przed ich renderowaniem lub zapisem do pliku. Ta praca jest zazwyczaj wykonywana w ramach filtru transformacji opartego na klasie bazowej CTransformFilter, szczególnie w metodzie Transform. Ta metoda odbiera wskaźnik do obiektu IMediaSample, który hermetyzuje dane wideo. Metoda IMediaSample::GetPointer zwraca wskaźnik do pierwszego bajtu danych pierwotnych. W przypadku nieskompresowanych ramek te dane składają się z pikseli, do których można uzyskać dostęp lub zmodyfikować bezpośrednio przez filtr. Poniższe sekcje zawierają podstawowe informacje, które pomogą Ci efektywnie pracować z danymi DIB w ten sposób.

Notatka

Bity można również modyfikować przy użyciu funkcji GDI, GDI+, DirectDraw lub Direct3D, ale te techniki wykraczają poza zakres tego artykułu.

 

Ta sekcja zawiera następujące tematy: