Udostępnij przez


Zarządzanie projektami edycji wideo

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

Poniższe porady ułatwią zarządzanie projektami w usługach DirectShow Editing Services.

Zmiany osi czasu

  • Jeśli zmienisz oś czasu po utworzeniu grafu filtru, wywołaj ponownie metodę IRenderEngine::ConnectFrontEnd, aby przebudować front end. Zwykle nie ma to wpływu na pozostałą część grafu. Czasami jednak aparat renderowania musi usunąć cały graf, zanim ponownie skompiluje fronton. (Na przykład dzieje się tak, jeśli dodasz lub usuniesz grupę). Metoda ConnectFrontEnd zwraca S_WARN_OUTPUTRESET, aby zasygnalizować usunięcie grafu. W takim przypadku aplikacja musi ponownie skompilować sekcję renderowania grafu.
  • Aby całkowicie usunąć wszystkie obiekty z osi czasu, wywołaj metodę IAMTimeline::ClearAllGroups.

Oczyszczanie

  • Po zakończeniu korzystania z aparatu renderowania wywołaj metodę IRenderEngine::ScrapIt. Podobnie jak w przypadku dowolnego obiektu COM, pamiętaj, aby zwolnić każdy wskaźnik interfejsu po zakończeniu korzystania z niego.
  • Aparat renderowania nie zachowuje liczby odwołań na osi czasu. Nie zwalniaj osi czasu przed zakończeniem jej używania i zawsze najpierw wywołaj ScrapIt na silniku renderującym.
  • Jeśli zwalniasz wszystkie odwołania do osi czasu, nie używaj żadnych obiektów na tej osi czasu, nawet jeśli nadal utrzymujesz liczniki referencji dla nich.

wiele wystąpień osi czasu

  • Nie przenosij obiektów osi czasu między osiami czasu. Każdy obiekt na osi czasu musi zostać utworzony na tej osi czasu. Oś czasu przechowuje wewnętrzną pamięć podręczną z informacjami o tworzonych obiektach; przenoszenie obiektów osi czasu może zakłócić pamięć podręczną.
  • Nigdy nie używaj tej samej instancji silnika renderowania z więcej niż jednym harmonogramem. Aparat renderowania przechowuje pamięć podręczną z informacjami o osi czasu. Różne linie czasowe zakłócą pamięć podręczną i doprowadzą do nieprzewidywalnych wyników. Jeśli potrzebujesz dwóch aktywnych osi czasu, utwórz oddzielne instancje silników renderowania dla każdej osi czasu.
  • Oś czasu może używać więcej niż jednego silnika renderującego, ale nie w tym samym czasie. Usuń stary aparat renderowania przed użyciem innego aparatu renderowania. (Zazwyczaj można to zrobić, gdy przełączasz się z używania podstawowego aparatu renderowania do podglądu do inteligentnego aparatu renderowania na potrzeby zapisywania plików).

trwałość

  • Wykres filtru nie jest trwały podczas zapisywania projektu w pliku XML. W związku z tym utracisz wszelkie informacje dotyczące inteligentnego rekompresji, formatu kompresji lub parametrów kompresji. Aplikacja może przywrócić te parametry po załadowaniu projektu.

Korzystanie z usług edycji DirectShow