Condividi tramite


Informazioni sui motori di rendering

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

Questo articolo descrive come DirectShow Editing Services (DES) esegue il rendering di un progetto di modifica video.

In DES un progetto viene rappresentato come sequenza temporale. La sequenza temporale è utile perché semplifica le attività più comuni nella modifica video, ad esempio la riorganizzazione delle clip di origine e l'aggiunta di effetti video. L'architettura del flusso DirectShow, invece, richiede un grafico di filtro. Pertanto, per eseguire il rendering del progetto, è necessario tradurre una sequenza temporale in un grafico di filtro. Il componente che esegue questa operazione viene chiamato motore di rendering. DirectShow offre due motori di rendering:

  • Motore di rendering di base: compila un grafico di filtro che fornisce un output non compresso.
  • Motore di rendering intelligente: crea un grafico di filtro che fornisce l'output compresso.

Il motore di rendering intelligente usa la ricompressione intelligente per migliorare le prestazioni. Con la ricompressione intelligente, i file di origine vengono ricompressi solo quando il formato di file originale differisce dal formato di output finale. Se i formati corrispondono, l'origine non viene mai decompressa. La ricompressione intelligente è supportata solo per la compressione video, non per la compressione audio.

Per l'anteprima, usare il motore di rendering di base. Il motore di rendering intelligente può anche visualizzare in anteprima, ma meno efficiente perché deve decomprimere il flusso compresso. Per la scrittura di file, usare il motore di rendering intelligente se si vuole ricompressione intelligente. In caso contrario, usare il motore di rendering di base. La ricompressione intelligente può ridurre notevolmente il tempo necessario per scrivere il file.

Importante

Non usare il motore di rendering intelligente per leggere o scrivere file di Windows Media.

 

Importante

Entrambi i motori di rendering creano una finestra invisibile che elabora i messaggi. Il thread che crea il motore di rendering deve avere un ciclo di messaggi, per inviare messaggi. Inoltre, tale thread non deve uscire fino a quando non viene rilasciato il motore di rendering e Filter Graph Manager. In caso contrario, l'applicazione potrebbe essere deadlock.

 

Costruzione del grafico filtro

Il grafico del filtro è compilato in due fasi. Nella prima fase il motore di rendering costruisce un "front-end", ovvero un grafico di filtro parziale. Il diagramma seguente illustra un front-end tipico:

filtrare il front-end del grafico

I sottosistemi contengono vari filtri specializzati, che il motore di rendering assembla automaticamente. Il front-end contiene un pin di output per ogni gruppo nella sequenza temporale. I pin di output forniscono dati non compressi se si usa il motore di rendering di base o i dati compressi se si usa il motore di rendering intelligente.

Nel secondo passaggio, i pin di output sono connessi ai filtri di rendering. Per l'anteprima, i filtri di rendering sono renderer video e audio. Per la scrittura di file, i filtri di rendering sono filtri multixer (mux) e filtri del file writer.

completamento del grafico del filtro

Anteprima di un progetto

Scrittura di un progetto in un file