創作群組組合和音軌
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、IMFMediaEngine以及媒體基金會中的音訊/視訊擷取 取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
[此 API 不受支持,未來可能會改變或無法使用。]
群組、組合和曲目是時間軸與來源剪輯之間的中繼層。 它們會依可包含的物件類型來區別。
- 軌道包含來源物件。
- 組合包含曲目和其他組合,但不包含來源物件。
- 群組是最上層組合。 群組包含作品和曲目,但作品不能包含群組。
- 虛擬軌道 是可位於作品或群組中的任何物件。 這包括曲目和組合。
這些物件會公開下列介面:
介面 | 揭露者 |
---|---|
IAMTimelineTrack | 軌道 |
IAMTimelineVirtualTrack | 曲目、組合 |
IAMTimelineComp | 組合、群組 |
IAMTimelineGroup | 群組 |
這些介面包含將物件新增至時程表的方法。
- IAMTimeline::AddGroup:將群組插入時程表。
- IAMTimelineComp::VTrackInsBefore:將虛擬播放軌插入組合或群組中。
- IAMTimelineTrack::SrcAdd:將來源插入軌道。
例如,下列程式代碼會將新的曲目插入群組中。 如上表所示,群組被視為一種組成,而追蹤是一種虛擬追蹤。因此,若要將追蹤插入群組中,您必須查詢群組的 IAMTimelineComp 介面,並呼叫 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);
VTrackInsBefore 的第二個參數 制定虛擬播放軌的優先權。優先層級從零開始。 如果您指定值 –1,則會在優先順序清單的結尾插入虛擬軌道。 如果您指定一個數值,而該處已有虛擬軌道,則從該點開始的所有項目會在列表中優先級下降一級。 請勿將虛擬軌道插入優先順序大於虛擬軌道數量的位置,因為這會導致未定義的行為。
若要從時程表永久刪除物件,請在 物件上呼叫 IAMTimelineObj::RemoveAll。 這個方法會移除物件及其所有子系。 若要移除物件,以便重新插入時間軸中的其他地方,請改為呼叫 IAMTimelineObj::Remove。 不同於 RemoveAll,此方法不會刪除物件的子系。 若要從時程表中移除所有專案,請呼叫 IAMTimeline::ClearAllGroups。
相關主題