Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w 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.]
[Ten interfejs API nie jest obsługiwany i może zostać zmieniony lub niedostępny w przyszłości.]
W tym artykule opisano przenikanie alfa w usługach DirectShow Editing Services (DES).
Alfa mierzy przezroczystość piksela lub obrazu. W 32-bitowym nieskompresowanym wideo RGB cztery składniki definiują każdy piksel: kanał alfa (A) i trzy składniki kolorów (RGB). Piksel o wartości alfa zero jest całkowicie przezroczysty. Piksel o wartości alfa 255 jest nieprzezroczystym. Między tymi wartościami piksel ma różne stopnie przezroczystości.
DirectShow definiuje dwa typy nośników dla 32-bitowego wideo RGB:
- MEDIASUBTYPE_ARGB32: Wideo ma 32-bitowy rgb z prawidłowym kanałem alfa.
- MEDIASUBTYPE_RGB32: Piksele są 32-bitowe, ale kanał alfa nie musi być prawidłowy.
Aby wykonać mieszanie alfa w DES, ustaw nieskompresowany typ nośnika grupy wideo na MEDIASUBTYPE_ARGB32. W języku C++wywołaj metodę IAMTimelineGroup::SetMediaType. W formacie XTL ustawienie atrybutu bitdepthgroup element na 32 osiąga to również.
Następnie potrzebne są dane wideo zawierające kanał alfa. Istnieje kilka opcji:
- Możesz użyć pliku AVI, który już zawiera 32-bitowe wideo RGB z danymi alfa. Obecnie alfa nie jest obsługiwana w przypadku plików źródłowych MPEG ani Microsoft Windows Media Format (WMF).
- DES obsługuje pliki 32-bitowej mapy bitowej (.bmp) i (.tga) z danymi alfa.
- Możesz napisać niestandardowy filtr źródłowy, który tworzy 32-bitowe dane RGB z alfą. Typ nośnika wyjściowego musi być MEDIASUBTYPE_ARGB32. Użyj filtru jako podobiektu w obiekcie źródłowym osi czasu.
Jeśli źródło wideo nie ma alfa, możesz użyć efektu, który tworzy dane alfa. Efekt Alpha Setter ustawia kanał alfa dla całego obrazu na stałą wartość. Aby zmienić alfa w czasie, użyj interfejsu IPropertySetter z efektem Alfa Setter. Oryginalny materiał nie musi być w formacie 32-bitowym, o ile typ nośnika nieskompresowanego grupy jest MEDIASUBTYPE_ARGB32.
Na koniec przekaż wideo do efektu lub przejścia, które wykonuje mieszanie alfa. Przejście kompositora wykonuje mieszanie alfa, a przejście klucza może być kluczem według wartości alfa.
Poniższy przykładowy projekt XTL wykonuje mieszanie alfa:
<timeline>
<group type="video" bitdepth="32" width="320" height="240">
<track>
<clip start="0" stop="6" src="c:\Example.avi" />
</track>
<track>
<clip start="0" stop="6" src="c:\Example2.avi">
<!-- Alpha Setter effect. -->
<effect clsid="{506D89AE-909A-44f7-9444-ABD575896E35}" start="0" stop="6">
<param name="alpha" value="255">
<linear time="6" value="0" />
</param>
</effect>
</clip>
<!-- Key transition, with alpha keying. -->
<transition clsid="{C5B19592-145E-11d3-9F04-006008039E37}" start="0" stop="6">
<param name="KeyType" value="3" />
</transition>
</track>
</group>
</timeline>
Tematy pokrewne