Sdílet prostřednictvím


Vytváření kompozic a skladeb skupin

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, IMFMediaEnginea Audio/Video Capture v rámci Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

[Toto rozhraní API není podporováno a může být v budoucnu změněno nebo nedostupné.]

Skupiny, skladby a stopy jsou přechodné vrstvy mezi časovou osou a zdrojovými klipy. Rozlišují se podle typu objektu, který mohou obsahovat.

  • Stopy obsahují zdrojové objekty.
  • Kompozice obsahují tracky a další kompozice, ale ne zdrojové objekty.
  • Skupiny jsou složení nejvyšší úrovně. Skupiny obsahují kompozice a stopy, ale kompozice nemohou obsahovat skupiny.
  • virtuální stopa je jakýkoli objekt, který se může nacházet uvnitř kompozice nebo skupiny. To zahrnuje stopy a skladby.

Tyto objekty zpřístupňují následující rozhraní:

Rozhraní Odhaleno uživatelem
IAMTimelineTrack Skladby
IAMTimelineVirtualTrack Stopy, skladby
IAMTimelineComp Složení, skupiny
IAMTimelineGroup Skupiny

 

Tato rozhraní obsahují metody pro přidání objektů na časovou osu.

Například následující kód vloží novou stopu do skupiny. Jak je znázorněno v předchozí tabulce, skupina se považuje za druh složení a stopa je druh virtuální stopy. Proto, chcete-li vložit stopu do skupiny, musíte dotazovat skupinu na její IAMTimelineComp rozhraní a volat metodu 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);

Druhý parametr VTrackInsBefore určuje prioritu virtuální stopy. Úrovně priority začínají nulou. Pokud zadáte hodnotu –1, virtuální stopa se vloží na konec seznamu priorit. Pokud zadáte hodnotu, ve které už existuje virtuální stopa, přesune se vše od tohoto bodu dolů v seznamu o jednu úroveň priority. Nevkládejte virtuální stopu s prioritou větší než počet virtuálních stop, protože způsobí nedefinované chování.

Pokud chcete objekt trvale odstranit z časové osy, zavolejte IAMTimelineObj::RemoveAll na objektu. Tato metoda odebere objekt a všechny jeho podřízené položky. Pokud chcete objekt odebrat pro účely opětovného vložení objektu jinam na časové ose, zavolejte místo toho IAMTimelineObj::Remove. Na rozdíl od metody RemoveAlltato metoda neodstraňuje podřízené objekty. Pokud chcete odebrat vše z časové osy, zavolejte IAMTimeline::ClearAllGroups.

Vytvoření časové osy