Udostępnij przez


Tworzenie kompozycji i utworów grup

[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 ramach 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.]

Grupy, kompozycje i ścieżki to warstwy pośrednie między linią czasu a klipami źródłowymi. Są one rozróżniane przez typ obiektu, który może zawierać.

  • Ścieżki zawierają obiekty źródłowe.
  • Kompozycje zawierają utwory i inne kompozycje, ale nie obiekty źródłowe.
  • Grupy to kompozycje najwyższego poziomu. Grupy zawierają kompozycje i utwory, ale kompozycje nie mogą zawierać grup.
  • Wirtualna ścieżka to dowolny obiekt, który może znajdować się wewnątrz kompozycji lub grupy. Obejmuje to utwory i kompozycje.

Te obiekty uwidaczniają następujące interfejsy:

Interfejs Ujawnione przez
IAMTimelineTrack Ścieżki
IAMTimelineVirtualTrack Utwory, kompozycje
IAMTimelineComp Kompozycje, grupy
IAMTimelineGroup Grupy

 

Te interfejsy zawierają metody dodawania obiektów do osi czasu.

Na przykład poniższy kod wstawia nową ścieżkę do grupy. Jak pokazano w poprzedniej tabeli, grupa jest uważana za rodzaj kompozycji, a utwór jest rodzajem wirtualnego toru. W związku z tym, aby wstawić ścieżkę do grupy, należy wysłać zapytanie do grupy dla jej interfejsu IAMTimelineComp i wywołać metodę IAMTimelineComp::VTrackInsBefore.

IAMTimelineGroup    *pGroup;
// Create a new group (not shown). 

IAMTimelineComp     *pComp = NULL;
IAMTimelineObj      *pTrackObj = NULL;

pTL->CreateEmptyNode(&pTrackObj, TIMELINE_MAJOR_TYPE_TRACK);
pGroup->QueryInterface(IID_IAMTimelineComp, (void **)&pComp);
pComp->VTrackInsBefore(pTrackObj, 0);

Drugi parametr VTrackInsBefore określa priorytet ścieżki wirtualnej. Poziomy priorytetów zaczynają się od zera. Jeśli określisz wartość –1, ścieżka wirtualna zostanie wstawiona na końcu listy priorytetów. Jeśli określisz wartość, w której istnieje już ścieżka wirtualna, wszystko od tego momentu przechodzi w dół listy o jeden poziom priorytetu. Nie należy wstawiać ścieżki wirtualnej o priorytcie większym niż liczba ścieżek wirtualnych, ponieważ spowoduje to niezdefiniowane zachowanie.

Aby trwale usunąć obiekt z osi czasu, wywołaj metodę IAMTimelineObj::RemoveAll w obiekcie. Ta metoda usuwa obiekt i wszystkie jego elementy podrzędne. Aby usunąć obiekt w celu ponownego umieszczenia go w innym miejscu na osi czasu, wywołaj metodę IAMTimelineObj::Remove. W przeciwieństwie do RemoveAllta metoda nie usuwa elementów podrzędnych obiektu. Aby usunąć wszystko z osi czasu, wywołaj metodę IAMTimeline::ClearAllGroups.

konstruowanie osi czasu