Configurazione del writer ASF

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

Quando viene creato il filtro writer WM ASF , viene configurato automaticamente con il profilo WMProfile_V80_256Video. Questo profilo usa i codec Windows Media Audio e Windows Media Video versione 8, che non sono recenti come i codec Windows Media 9 Series. È consigliabile creare un profilo personalizzato che usa i codec di Windows Media 9 Series e configurare il writer WM ASF con il profilo personalizzato, come descritto in Configurazione dei profili e altre proprietà file ASF. È necessario aggiungere il filtro WRITER WM ASF al grafico del filtro prima di configurare il filtro e configurare il filtro prima di connetterlo a qualsiasi altro filtro.

Tutti i dati di input devono essere timestamp e tutti i pin di input devono essere connessi prima che il filtro possa essere eseguito o sospeso. Pertanto, se si configura il filtro con un profilo con un flusso audio e un flusso video, il filtro creerà un'audio e un pin di input video e entrambi i pin devono essere connessi prima che il filtro possa essere eseguito. Poiché Windows Media Format SDK richiede il funzionamento di un flusso audio, il writer WM ASF deve sempre avere un pin audio di input, anche se si tratta di un flusso fittizio, ovvero un flusso audio con velocità in bit ridotta.

Aggiunta di estensioni unità dati

È possibile configurare un flusso di profilo per le estensioni dell'unità dati, ad esempio codici di tempo SMPTE, prima o dopo la connessione del filtro, purché si segui questo ordine di operazioni:

  1. Aggiungere una o più estensioni di unità dati al flusso usando IWMStreamConfig2::AddDataUnitExtension.
  2. Chiamare IWMProfile::ReconfigStream per aggiornare il profilo.
  3. Chiamare IConfigAsfWriter::ConfigureFilterUsingProfile con l'oggetto profilo aggiornato.
  4. Trovare il pin di input video e chiamare il metodo IAMWMBufferPass::SetNotify per registrare l'interfaccia IAMWMBufferPassCallback definita dall'applicazione.

Quando viene eseguito il grafico, il metodo IAMWMBufferPassCallback::Notify verrà chiamato per ogni frame e sarà possibile ottenere e impostare le proprietà nell'esempio usando i relativi metodi di interfaccia INSSBuffer3 .

Nota

In alcuni scenari a elevato utilizzo del processore, ad esempio telecine inversa, il writer WM ASF può richiedere più buffer di output rispetto a alcuni filtri downstream possono supportare. Il decodificatore DV, ad esempio, non accetta più buffer per il pin di output e lo stesso è true per il decompressore AVI in determinate condizioni. Se si verificano problemi durante il tentativo di connessione a questi filtri o eventualmente quando si esegue il grafico, potrebbe essere necessario scrivere un filtro intermedio che accetta qualsiasi numero di buffer nel relativo pin di output.

 

Creazione di file ASF in DirectShow