Čas v editačních službách DirectShow
[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v 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é.]
Pokud chcete upravit video, musíte pracovat s některými důležitými koncepty časování. Například:
- Každý klip má dobu trvání.
- Klipy, přechody a efekty se v určitých časech zobrazují v projektu.
- Video má snímkovou frekvenci vyjádřenou v snímcích za sekundu (fps).
DirectShow Editing Services (DES) poskytuje různé metody, které nastavují nebo načítají časy a frekvence snímků. Význam těchto hodnot závisí na kontextu.
časové hodnoty
Když parametr vyjadřuje čas, jsou možné tři odlišné významy:
- čas časové osy: Čas relativní k začátku časové osy. Klip může například začínat na časové ose 2 sekundy, nebo přechod může nastat na časové ose za 15 sekund. Časová osa určuje konečný vykreslený projekt, takže časovou osu si můžete představit také jako čas projektu.
- doba média: Bod ve zdrojovém souboru ve vztahu k začátku souboru, jak bylo dosaženo během normálního přehrávání. Pokud máte například 10sekundový videosoubor, bod uprostřed souboru se vyskytuje v 5 sekundách vyjádřený jako mediální čas.
- Čas nadřazeného prvku: Čas relativní k prvku na časové ose. Pokud například objekt začíná na časové ose v 8 sekundách a obsahuje jiný objekt, který začíná na časové ose v 10 sekundách, podřízený objekt začíná 2 sekundy vzhledem k nadřazenému objektu. Virtuální stopy všechny začínají v čase nula ve vztahu k časové ose. Takže u jakéhokoli objektu ve virtuální stopě se čas nadřazeného objektu rovná času časové osy.
Čas multimédií se vztahuje pouze na zdrojové objekty. Každý zdrojový objekt má čas spuštění média a čas zastavení média. Předpokládejme například, že máte 10sekundový videoklip a chcete použít jenom 5 sekund od středu klipu, oříznout prvních 2 sekund a posledních 3 sekundy klipu. Pokud chcete, aby se klip zobrazil 20 sekund do projektu (a za předpokladu normální rychlosti přehrávání), zadali byste následující časy spuštění a zastavení.
Spuštění média za: 2 sekundy
Zastavení média: 7 sekund
Začátek časové osy: 20 sekund
Zastavení časové osy: 25 sekund
frekvence snímků
Frekvence snímků je "rychlost" datového toku médií měřená ve snímcích za sekundu. Stejně jako u časových hodnot závisí význam snímkové frekvence na kontextu:
- výstupní snímková frekvence: snímková frekvence konečného projektu vykresleného a definovaného skupinou. Při vykreslování projektu se každá skupina stane samostatným mediálním proudem s vlastní frekvencí snímků.
- Frekvence snímků zdroje: Frekvence snímků, ve které byl zdrojový soubor původně vytvořený. Autorovaná frekvence snímků nemusí odpovídat frekvenci skupinového výstupu snímků. DES soubor automaticky zvětší nebo zmenší vzorkovací frekvenci podle potřeby. U většiny formátů médií může DES určit snímkovou frekvenci prozkoumáním formátu. Sekvence DIB je výjimka; je nutné zadat frekvenci snímků sekvence DIB. (Další informace najdete v tématu Práce se zdroji.)
Rychlost přehrávání: Zdánlivá rychlost zdrojového klipu, když se objeví v projektu. Například 10 sekund videa může být zrychleno do 5 sekund na časové ose. V důsledku toho se rychlost klipu zvyšuje o faktor 2, jak znázorňuje následující diagram.
(U zvukového zdroje se změní i výška tónu.) Následující vzorec určuje rychlost přehrávání zdrojového klipu:
- Rychlost přehrávání = (Ukončení média – Zahájení média) / (Konec časové osy – Začátek časové osy)
Všimněte si, že každá z těchto tří sazeb je nezávislá na ostatních:
- Klip můžete urychlit nebo zpomalit úpravou časů médií; to nemá vliv na rychlost snímků konečného výstupu.
- Můžete zvýšit nebo snížit frekvenci výstupních snímků, aniž byste ovlivnili rychlost přehrávání souboru.
- Ve stejné skupině můžete kombinovat zdrojové soubory s různými vytvořenými snímkovými frekvencemi a DES převede každý klip buď navýšením nebo snížením snímkové frekvence tak, aby odpovídal snímkové frekvenci skupiny.
Při renderování projektu se všechny časy zaokrouhlují na nejbližší okraj snímku, a to podle snímkové frekvence skupiny. Předpokládejme například, že skupina videí má snímkovou frekvenci 30 fps. Každý rámec je přibližně 33 milisekund (ms). Předpokládejme, že přidáte zdrojový klip o 1,68 sekundách na časovou osu počínaje nulou. Zdroj nekončí přesně na hranici rámce, takže DES zaokrouhlí čas zastavení na 1,6666 sekund (50 snímků). Pokud nastavíte čas na 1,68 sekundy v renderovaném projektu, ve skutečnosti se přesunete za konec zdroje na 51. snímek.
Des však nepřepíše čas zastavení zdroje. Později můžete změnit snímkovou frekvenci pro skupinu nebo přesunout zdroj na nové místo na časové ose, kde se zaokrouhluje jinak. Proto DES zachovává původní dobu zastavení a zaokrouhluje pouze v případě potřeby. Další informace najdete v tématu IAMTimelineObj::FixTimes.
Související témata