Configurazione della codifica video (Microsoft Media Foundation)
Per configurare il codificatore video, seguire questa procedura:
Impostare tutte le proprietà nel codificatore DMO usando IPropertyBag::Write. L'elenco seguente riepiloga il set minimo di proprietà necessarie per codificare un flusso video CBR (tutti questi valori hanno valori predefiniti che possono essere usati):
- La proprietà MFPKEY_VIDEOWINDOW specifica la finestra del buffer da utilizzare per il flusso. Per altre informazioni sull'impostazione delle finestre buffer e su come influisce sul contenuto, vedere Metodi di codifica. La finestra del buffer predefinita è di tre secondi, appropriata per molti scenari.
- La complessità video è impostata per determinare il compromesso tra la qualità del contenuto codificato e il tempo necessario per la codifica. Se non si imposta un valore, viene usato il valore predefinito. Tuttavia, è possibile trovare le modalità consigliate per un codec specifico chiamando IWMCodecProps::GetCodecProp per recuperare g_wszWMVCComplexityExLive, g_wszWMVCComplexityExOffline e g_wszWMVCComplexityExMax. È quindi possibile impostare MFPKEY_COMPLEXITYEX su un valore compreso tra 0 e la complessità massima segnalata.
- MFPKEY_CRISP specifica l'importanza relativa della fluidità video e la qualità dell'immagine dei fotogrammi codificati. Nella maggior parte dei casi, il valore predefinito funziona correttamente.
- Per il contenuto video archiviato in un contenitore diverso da ASF, la proprietà MFPKEY_ASFOVERHEADPERFRAME deve essere impostata su 0. Questo non è il valore predefinito.
Per informazioni sulla configurazione dei flussi VBR, vedere Uso della codifica VBR.
Configurare la struttura DMO_MEDIA_TYPE per il tipo di input o se si usa Media Foundation SDK, usare la funzione MFInitMediaTypeFromVideoInfoHeader. Usare una struttura VIDEOINFOHEADER che descrive il contenuto di input non compresso. Il codec non ridimensiona il video o converte lo spazio dei colori.
Impostare il tipo di input usando IMediaObject::SetInputType o IMFTransform::SetInputType.
Configurare il tipo di output per il codificatore. Dopo aver impostato il tipo di input, il codificatore enumera i tipi di output completi ad eccezione del membro dwBitrate della struttura VIDEOINFOHEADER o dell'attributo MF_MT_AVG_BITRATE dell'interfaccia IMFMediaType. Se si recupera un tipo di output prima di impostare un tipo di input, la struttura di DMO_MEDIA_TYPE recapitata non avrà un VIDEOINFOHEADER associato.
Recuperare i dati privati del codec e aggiungerli alla struttura VIDEOINFOHEADER passata alla struttura DMO_MEDIA_TYPE o a IMFMediaType. Per altre informazioni, vedere Uso di dati privati del codec video.
Impostare il tipo di output chiamando il metodo IMediaObject::SetOutputType o IMFTransform::SetOutputType. Passare la struttura DMO_MEDIA_TYPE con la struttura VIDEOINFOHEADER completata (inclusi i dati privati aggiunti) a cui viene fatto riferimento nel membro pbFormat oppure costruire un IMFMediaType chiamando MFInitMediaTypeFromVideoInfoHeader.
Nota
L'oggetto codificatore video supporta due output. Il secondo output è per il codificatore "post view". Fornisce i campioni non compressi man mano che verranno recapitati dal decodificatore. In questo modo è possibile monitorare la qualità della codifica senza dover attendere l'elaborazione dell'intero flusso. Questo output è facoltativo. Se si vuole usarlo, configurarne il tipo seguendo lo stesso processo usato per impostare il tipo di input del codificatore.