Uso del writer sink

Panoramica

Tipi di contenitore file

Il writer sink include il supporto predefinito per diversi tipi di contenitori di file. Per un elenco completo, vedere MF_TRANSCODE_CONTAINERTYPE. È possibile supportare altri tipi di contenitori scrivendo un sink multimediale personalizzato. Il contenitore di file viene specificato quando si crea una nuova istanza del writer sink.

Formati di flusso

Per ogni flusso, l'applicazione deve specificare quanto segue.

  • Il formato di input è il formato inviato dall'applicazione al writer sink.
  • Il formato di output è il formato che verrà scritto nel file.

I formati di input e output possono essere compressi o non compressi. Il writer sink supporta le combinazioni seguenti:

  • Input non compresso con output compresso. Questo è il caso tipico e viene usato per la codifica o la transcodifica degli scenari. Un codificatore di Microsoft Media Foundation deve essere disponibile che accetta il tipo di input e codifica al tipo di output.
  • Input compresso con output identico. Usare questa combinazione per remux di un file senza transcodamento.
  • Input non compresso con output identico. Usare questa combinazione per scrivere audio o video non compressi in un contenitore di file.

Il writer sink non supporta il ridimensionamento video, la conversione della frequenza dei fotogrammi o il rimplificamento audio, a meno che queste funzioni non siano fornite dal codificatore. In caso contrario, l'applicazione può usare Processori di segnale digitali per convertire i dati di input, prima di inviare i dati all'oggetto

Creazione del writer sink

Esistono due funzioni che creano il writer sink:

Se si usa uno dei sink multimediali predefiniti, la funzione MFCreateSinkWriterFromURL è preferibile, perché il chiamante non deve configurare il sink multimediale.

Il metodo MFCreateSinkWriterFromURL offre diverse opzioni per specificare il tipo di contenitore di file. Nel caso più semplice, la funzione usa l'estensione del nome file nell'URL per selezionare il contenitore di file. Per informazioni dettagliate, vedere la pagina di riferimento alla funzione.

Ad esempio, il codice seguente specifica il nome del file "output.wmv" per l'URL. In base all'estensione del nome file, il writer sink caricherà il sink multimediale ASF per creare un file ASF (Advanced Systems Format).

    HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);

Nel caso di MFCreateSinkWriterFromMediaSink, il tipo di file viene determinato dal sink multimediale.

Sink Writer