Compilazione di grafici di filtro per la scrittura di file ASF

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Quando si crea contenuto basato su Windows Media, le applicazioni usano in genere uno degli scenari seguenti:

  • Conversione o transcodifica del contenuto da un altro formato in formato Windows Media.
  • Inserimento di contenuto non basato su Windows Media (formati di flusso nativo) in file ASF.
  • Acquisizione di dati live e codifica immediata in Windows Media Format.

Transcodifica dei file ASF

È possibile creare un grafo di filtro di transcodifica file usando WM ASF Writer in vari modi. Il modo più semplice consiste nell'aggiungere WM ASF Writer al grafico dei filtri e quindi usare il metodo IGraphBuilder::RenderFile per compilare automaticamente il grafico.

Un modo alternativo consiste nell'aggiungere ogni filtro manualmente al grafico e connettere i pin. Dopo aver aggiunto WM ASF Writer, configurarlo usando i metodi IConfigAsfWriter se il profilo predefinito non è adatto e connettere i pin di input di WM ASF Writer ai pin di output corrispondenti nei filtri upstream.

La figura seguente mostra le configurazioni tipiche del grafico del filtro di transcodifica di WM ASF Writer.

grafico filtro transcodifica

Inserimento di formati di flusso nativi in file ASF

Per impostazione predefinita, il filtro WM ASF Writer prevede flussi audio e video non compressi nei relativi pin di input e usa i codec Windows Media Audio e Windows Media Video per comprimere i flussi. Tuttavia, il contenitore di file ASF può essere usato per qualsiasi tipo di dati. Inserendo i dati multimediali digitali in un contenitore di file ASF, è possibile aggiungere funzionalità fornite da ASF, ad esempio metadati e drm (Digital Rights Management), senza dover transcodificare il contenuto.

Per creare un file ASF contenente contenuto non basato su Windows Media, l'applicazione deve comprimere il flusso nel grafico di filtro a monte del writer ASF WM e ignorare il meccanismo di compressione del writer DI ASF WM CHIAMANDO IConfigAsfWriter2::SetParam come indicato di seguito:

pConfigAsfWriter2->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS,TRUE,0)

Configurare quindi il filtro con il profilo desiderato. È essenziale che il tipo di supporto del flusso di input corrisponda esattamente al formato nel profilo. In alcuni casi, potrebbe essere necessario esaminare il formato del flusso di input e creare un profilo personalizzato in modo che corrisponda.

Quando si connette WM ASF Writer al filtro upstream, usare il metodo IGraphBuilder::ConnectDirect. Non usare metodi di "connessione intelligente", ad esempio IGraphBuilder::Connect o IGraphBuilder::RenderFile per connettere il filtro perché disabilita la modalità di compressione "bypass" del filtro.

Acquisizione diretta da un dispositivo a un file ASF

Quando si acquisiscono audio o video direttamente in un file ASF, il grafico del filtro sarà simile al seguente, a seconda del tipo di dispositivo di acquisizione usato.

Grafico di acquisizione video di Windows Media

Per altre informazioni sulla creazione di grafici di acquisizione video e audio, vedere gli argomenti seguenti:

Wm ASF Writer non verrà eseguito a meno che non siano connessi tutti i relativi pin. Se si configura WM ASF Writer con il profilo di sistema predefinito (scelta non consigliata) o qualsiasi profilo con flussi audio e video, verrà creato un pin di input per ogni flusso e ognuno di questi pin deve essere connesso. Se non intendi acquisire audio, ad esempio, assicurati di configurare il filtro con un profilo solo video in modo che non venga creato alcun pin audio.

Creazione di file ASF in DirectShow