다음을 통해 공유


알파 혼합(DirectShow)

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

[이 API는 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다.]

이 문서에서는 DES(DirectShow Editing Services )의 알파 혼합에 대해 설명합니다.

알파는 픽셀 또는 이미지의 투명도를 측정합니다. 32비트 압축되지 않은 RGB 비디오에서 4개의 구성 요소는 각 픽셀을 정의합니다. 알파 채널(A) 및 3개의 색 구성 요소(RGB). 알파 값이 0인 픽셀은 완전히 투명합니다. 알파 값이 255인 픽셀은 불투명합니다. 이러한 값 사이에 픽셀에는 다양한 수준의 투명도가 있습니다.

DirectShow는 32비트 RGB 비디오에 대한 두 가지 미디어 형식을 정의합니다.

  • MEDIASUBTYPE_ARGB32: 비디오는 유효한 알파 채널이 있는 32비트 RGB입니다.
  • MEDIASUBTYPE_RGB32: 픽셀은 32비트이지만 알파 채널이 반드시 유효하지는 않습니다.

DES에서 알파 혼합을 수행하려면 비디오 그룹의 압축되지 않은 미디어 유형을 MEDIASUBTYPE_ARGB32 설정합니다. C++에서 IAMTimelineGroup::SetMediaType 메서드를 호출합니다. XTL 형식에서 그룹 요소의 bitdepth 특성을 32로 설정하면 이 작업도 수행됩니다.

다음으로 알파 채널이 포함된 비디오 데이터가 필요합니다. 몇 가지 옵션이 있습니다.

  • 알파 데이터가 포함된 32비트 RGB 비디오가 이미 있는 AVI 파일을 사용할 수 있습니다. 현재 알파는 MPEG 또는 Microsoft WMF(Windows Media Format) 원본 파일에 대해 지원되지 않습니다.
  • DES는 알파 데이터가 있는 32비트 비트맵(.bmp) 및 Targa(.tga) 파일을 지원합니다.
  • 알파를 사용하여 32비트 RGB 데이터를 만드는 사용자 지정 원본 필터를 작성할 수 있습니다. 출력 미디어 형식은 MEDIASUBTYPE_ARGB32 합니다. 필터를 타임라인 원본 개체의 하위 개체로 사용합니다.

비디오 원본에 알파가 없는 경우 알파 데이터를 만드는 효과를 사용할 수 있습니다. 알파 Setter 효과는 전체 이미지의 알파 채널을 상수 값으로 설정합니다. 시간에 따라 알파를 변경하려면 알파 Setter 효과와 함께 IPropertySetter 인터페이스를 사용합니다. 그룹의 압축되지 않은 미디어 형식이 MEDIASUBTYPE_ARGB32 원본 원본은 32비트일 필요가 없습니다.

마지막으로 알파 혼합을 수행하는 효과 또는 전환에 비디오를 전달합니다. Compositor Transition는 알파 혼합을 수행하고 키 전환은 알파 값별로 키를 지정할 수 있습니다.

다음 샘플 XTL 프로젝트는 알파 혼합을 수행합니다.

<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>

DirectShow 편집 서비스 사용