Condividi tramite


Creazione del sink di file ASF

Il sink di file ASF è un'implementazione di FMMediaSink fornita da Media Foundation che un'applicazione può usare per archiviare i dati multimediali ASF in un file. Per informazioni sul modello a oggetti di ASF Media Sinks e sull'utilizzo generale, vedere Sink multimediali ASF.

Esistono due modi per creare un'istanza del sink di file ASF. È possibile chiamare MFCreateASFMediaSink o MFCreateASFMediaSinkActivate.

Se si chiama MFCreateASFMediaSink, è necessario specificare un flusso di byte, per il file di output, in cui il sink scriverà il contenuto ASF durante una sessione di codifica. Il flusso di byte specificato deve avere funzionalità ricercabili e scrivibili altrimenti la chiamata MFCreateASFMediaSink non riesce con il codice di errore E_FAIL. Questa chiamata crea un oggetto sink di file in-process e restituisce un puntatore all'interfaccia FMMediaSink del sink di file.

Se si chiama MFCreateASFMediaSinkActivate, è necessario specificare l'URL del file di output in cui il sink di file scriverà dati multimediali. In questo caso, il sink di file crea internamente il flusso di byte. La funzione restituisce un puntatore all'interfaccia FMActivate del sink di file. Per

Prendere in considerazione MFCreateASFMediaSinkActivate anziché MFCreateASFMediaSink, quando la topologia di codifica è progettata come segue:

  • La topologia di codifica è per il percorso multimediale protetto (PMP) e il sink di file viene usato out-of-process.

  • Il nodo di output della topologia viene creato usando il puntatore restituito all'oggetto attiva del sink di file e l'applicazione tiene traccia dei flussi nel sink di file in base ai numeri di flusso.

    Nota

    È possibile attivare il sink di file chiamando FMActivate::ActivateObject. Tuttavia, non è necessario attivare l'oggetto esplicitamente. La sessione multimediale tiene traccia dell'oggetto di attivazione e attiva automaticamente il sink di file durante la sessione di codifica.

     

  • Le informazioni di flusso sono configurate nell'oggetto ContentInfo. Disucsed nella sezione secondaria successiva.

Dopo aver creato il sink di file ASF, è necessario configurarlo prima di compilare la topologia. Il sink di file deve conoscere le informazioni seguenti per generare il file di output.

  • Informazioni di flusso di base
  • Informazioni sulla modalità di codifica
  • Metadati

Il sink di file implementa l'oggetto ASF ContentInfo ed espone l'interfaccia IMFASFContentInfo in modo che un'applicazione possa usarla per impostare informazioni correlate ai flussi e alla codifica. A seconda della funzione chiamata per creare il sink di file, esistono due modi per ottenere un riferimento all'interfaccia FMASFContentInfo .

  • Se si chiama la funzione MFCreateASFMediaSink , l'applicazione deve eseguire una query per l'interfaccia FMASFContentInfo chiamando FMMediaSink::QueryInterface nel sink di file restituito.
  • Se si sceglie di chiamare MFCreateASFMediaSinkActivate, questa funzione prevede di avere un oggetto ContentInfo completamente configurato prima della chiamata. A tale scopo, è necessario creare un oggetto ContentInfo vuoto chiamando MFCreateASFContentInfo e quindi configurarlo con tutte le informazioni necessarie. Passare l'oggetto ContentInfo configurato all'oggetto MFCreateASFMediaSinkActivate per ricevere un puntatore all'oggetto attiva sink. Non è possibile attivare il sink di file usando l'oggetto di attivazione restituito e quindi modificare qualsiasi informazione di flusso o codifica.

Per informazioni sulla configurazione di flussi sink e proprietà specifiche, vedere gli argomenti seguenti:

Sink multimediali ASF

Componenti del livello di pipeline ASF

Supporto asF in Media Foundation