Configuración de la codificación de vídeo (Microsoft Media Foundation)
Para configurar el codificador de vídeo, siga estos pasos:
Establezca cualquier propiedad del DMO del codificador con IPropertyBag::Write. En la lista siguiente se resume el conjunto mínimo de propiedades necesarias para codificar una secuencia de vídeo CBR (todos estos valores tienen valores predeterminados que se pueden usar):
- La propiedad MFPKEY_VIDEOWINDOW especifica la ventana de búfer que se va a usar para la secuencia. Para obtener más información sobre la configuración de ventanas de búfer y cómo afecta al contenido, consulte Métodos de codificación. La ventana de búfer predeterminada es de tres segundos, que es adecuada para muchos escenarios.
- La complejidad del vídeo se establece para determinar el equilibrio entre la calidad del contenido codificado y el tiempo necesario para codificar. Si no especifica ningún valor, se utiliza el valor predeterminado. Sin embargo, puede encontrar los modos recomendados para un códec específico llamando a IWMCodecProps::GetCodecProp para recuperar g_wszWMVCComplexityExLive, g_wszWMVCComplexityExOffline y g_wszWMVCComplexityExMax. A continuación, puede establecer MFPKEY_COMPLEXITYEX con un valor entre 0 y la complejidad máxima notificada.
- MFPKEY_CRISP especifica la importancia relativa de la suavidad del vídeo y la calidad de imagen de los fotogramas codificados. En la mayoría de los casos, el valor predeterminado funciona bien.
- Para el contenido de vídeo almacenado en un contenedor distinto de ASF, la propiedad MFPKEY_ASFOVERHEADPERFRAME debe establecerse en 0. Este no es el valor predeterminado.
Para obtener información sobre cómo configurar secuencias de VBR, consulte Uso de la codificación de VBR.
Configure la estructura DMO_MEDIA_TYPE para el tipo de entrada, o si usa el SDK de Media Foundation, use la función MFInitMediaTypeFromVideoInfoHeader. Use una estructura VIDEOINFOHEADER que describa el contenido de entrada sin comprimir. El códec no cambia el tamaño del vídeo ni convierte el espacio de color.
Establezca el tipo de entrada mediante IMediaObject::SetInputType o IMFTransform::SetInputType.
Configure el tipo de salida para el codificador. Una vez establecido el tipo de entrada, el codificador enumera los tipos de salida que se completan excepto el miembro dwBitrate de la estructura VIDEOINFOHEADER o el atributo MF_MT_AVG_BITRATE de la interfaz IMFMediaType. Si recupera un tipo de salida antes de establecer un tipo de entrada, la estructura DMO_MEDIA_TYPE entregada no tendrá un VIDEOINFOHEADER asociado.
Recupere los datos privados del códec y anéxelos a la estructura VIDEOINFOHEADER que se pasa a la estructura DMO_MEDIA_TYPE o IMFMediaType. Para obtener más información, consulte Uso de datos privados de códec de vídeo.
Establezca el tipo de salida llamando al método IMediaObject::SetOutputType o IMFTransform::SetOutputType. Pase la estructura DMO_MEDIA_TYPE con la estructura VIDEOINFOHEADER completada (incluidos los datos privados anexados) a la que se hace referencia en el miembro pbFormat o construya un IMFMediaType llamando a MFInitMediaTypeFromVideoInfoHeader.
Nota:
El objeto codificador de vídeo admite dos salidas. La segunda salida es para el codificador "post view". Entrega las muestras sin comprimir, ya que se entregarán desde el descodificador. Esto le permite supervisar la calidad de la codificación sin tener que esperar hasta que se procese toda la secuencia. Esta salida es opcional. Si quiere usarla, configure su tipo siguiendo el mismo proceso usado para establecer el tipo de entrada del codificador.