Condividi tramite


Gestione di progetti di modifica video

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

[Questa API non è supportata e può essere modificata o non disponibile in futuro.]

I suggerimenti seguenti consentono di gestire i progetti in DirectShow Editing Services.

Modifiche alla sequenza temporale

  • Se si modifica la sequenza temporale dopo aver compilato il grafico del filtro, chiamare nuovamente IRenderEngine::ConnectFrontEnd per ricompilare il front-end. In genere, questo non influisce sul resto del grafico. Occasionalmente, tuttavia, il motore di rendering deve eliminare l'intero grafico prima di ricompilare il front-end. Ad esempio, ciò accade se si aggiunge o si rimuove un gruppo. Il metodo ConnectFrontEnd restituisce S_WARN_OUTPUTRESET per segnalare che ha eliminato il grafico. In questo caso, l'applicazione deve ricompilare la sezione di rendering del grafico.
  • Per rimuovere completamente tutti gli oggetti dalla sequenza temporale, chiamare il metodo IAMTimeline::ClearAllGroups .

Pulizia

  • Al termine dell'uso di un motore di rendering, chiamare il metodo IRenderEngine::ScrapIt . Come per qualsiasi oggetto COM, assicurarsi di rilasciare ogni puntatore dell'interfaccia al termine dell'uso.
  • Il motore di rendering non mantiene un conteggio dei riferimenti sulla sequenza temporale. Non rilasciare la sequenza temporale prima di usarla e chiamare sempre ScrapIt nel motore di rendering.
  • Se si rilasciano tutti i riferimenti a una sequenza temporale, non usare nessuno degli oggetti in tale sequenza temporale, anche se si tiene conto dei riferimenti.

Più istanze della sequenza temporale

  • Non spostare gli oggetti sequenza temporale tra sequenze temporali. Ogni oggetto in una sequenza temporale deve essere creato da tale sequenza temporale. La sequenza temporale contiene una cache interna con informazioni sugli oggetti creati; lo spostamento di oggetti sequenza temporale può interrompere la cache.
  • Non usare mai la stessa istanza di un motore di rendering con più sequenze temporali. Il motore di rendering contiene una cache con informazioni sulla sequenza temporale. Più sequenze temporali interromperanno la cache e causano risultati imprevedibili. Se sono necessarie due sequenze temporali attive, creare istanze separate dei motori di rendering per ogni sequenza temporale.
  • Una sequenza temporale può usare più di un motore di rendering, ma non contemporaneamente. Eliminare il motore di rendering precedente prima di usare un altro motore di rendering. In genere si passa dall'uso del motore di rendering di base per l'anteprima al motore di rendering intelligente per la scrittura di file.

Persistenza

  • Il grafico del filtro non è persistente quando si salva il progetto in un file XML. Pertanto, si perdono informazioni relative a recompressione intelligente, formato di compressione o parametri di compressione. L'applicazione deve ripristinare questi parametri dopo il caricamento di un progetto.

Uso di DirectShow Editing Services