En esta página

Configuración avanzada de FFmpeg

Esta página enumera las características configurables del backend multimedia FFmpeg. Todas las características son parte de la API privada y pueden ser cambiadas o eliminadas en el futuro sin confirmación. Ten en cuenta que las variables de entorno son heredadas por defecto por los procesos hijos y pueden tener consecuencias no deseadas.

Habilitar el registro desde FFmpeg y el backend de medios Qt FFmpeg

Puede configurar la salida de registro avanzada de FFmpeg mediante variables de entorno.

  • QT_FFMPEG_DEBUG=1 activa el registro adicional de la biblioteca FFmpeg y puede ayudarle a entender los problemas que involucran a la biblioteca FFmpeg.
  • QT_LOGGING_RULES="*.ffmpeg.*=true" activa los registros del desarrollador Qt en el complemento FFmpeg. Las categorías de registro en el complemento FFmpeg suelen llamarse "qt.multimedia.ffmpeg.XXX". Para activar los registros de desarrollador de todo Qt Multimedia, establece QT_LOGGING_RULES="*.multimedia.*=true"
  • Si establece tanto QT_FFMPEG_DEBUG como QT_LOGGING_RULES, se imprimirán todos los códecs FFmpeg disponibles la primera vez que se utilice la funcionalidad de codificación o decodificación desde QMediaPlayer, QAudioDecoder o QMediaRecorder. Esta información puede ayudarle a comprender situaciones en las que Qt Multimedia no encuentra un decodificador o codificador FFmpeg adecuado. Te recomendamos que adjuntes el volcado del códec a los informes de errores de Qt si te encuentras con problemas específicos del códec.

Habilitar códecs FFmpeg experimentales

FFmpeg expone algunos códecs, como Opus o Vorbis, como experimentales. Los códecs experimentales no siguen estrictamente el estándar y pueden ser inestables. Están desactivados por defecto. Para activarlos, establezca la variable de entorno QT_ENABLE_EXPERIMENTAL_CODECS=1.

Configuración de los protocolos de red permitidos

Por razones de seguridad, la biblioteca FFmpeg restringe el uso de protocolos anidados, es decir, protocolos utilizados por otros protocolos; consulte la documentación de protocolos de FFmpeg. Puede anular explícitamente los protocolos permitidos mediante la variable de entorno QT_FFMPEG_PROTOCOL_WHITELIST, por ejemplo:

export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udp

Advertencia: Tenga en cuenta que los protocolos anidados pueden introducir vulnerabilidades de seguridad cuando se utilizan con datos no fiables. Permita únicamente protocolos que se ajusten a sus requisitos de seguridad y empresariales.

Configurar la aceleración por hardware en los backends

  • Aceleración por hardware explícita de decodificación y codificación en backends.

    El complemento FFmpeg elige el backend de aceleración por hardware para la descodificación y codificación en función de la disponibilidad, estabilidad, eficiencia y detalles de implementación. Si el backend de hardware seleccionado no funciona como se espera, puedes probar a establecer una lista de prioridades personalizada o desactivar todos los backends de hardware mediante las variables de entorno QT_FFMPEG_DECODING_HW_DEVICE_TYPES y QT_FFMPEG_ENCODING_HW_DEVICE_TYPES. Los backends de hardware disponibles son:

    • cuda
    • drm
    • dxva2
    • d3d11va
    • d3d12va
    • opencl
    • qsv
    • vaapi
    • vdpau
    • videotoolbox
    • mediacodec
    • vulkan

    Sin embargo, la disponibilidad de los backends de hardware depende del sistema operativo, los controladores instalados, la versión de FFmpeg y la configuración. Es importante tener en cuenta que algunos tipos de dispositivos no han sido probados con Qt Multimedia por los mantenedores de Qt, y pueden no funcionar como se pretende. En el momento de escribir esto, estos backends incluyen:

    • drm
    • opencl
    • qsv
    • vdpau
    • vulkan

    Ejemplos:

    # Set vdpau or cuda encoding hardware backends
    export QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=vdpau,cuda
    
    # Set only d3d12va decoding hardware backend
    export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=d3d12va
    
    # Disable decoding hw backends (set an empty list)
    export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=,
  • Conversión de texturas por hardware.

    Utilizar la conversión basada en la GPU para los fotogramas de vídeo descodificados y renderizados puede reducir significativamente el uso de la CPU. Nuestro objetivo es hacer uso de esta característica con el mayor número posible de hardware backends. Si observas algún problema de renderizado, considera la posibilidad de probar el renderizado sin la conversión de texturas GPU para identificar la causa. Puedes desactivar la conversión de texturas GPU utilizando la variable de entorno QT_DISABLE_HW_TEXTURES_CONVERSION: QT_DISABLE_HW_TEXTURES_CONVERSION=1. Con el backend de hardware VAAPI, la conversión de texturas por hardware está desactivada por defecto. Establece QT_XCB_GL_INTEGRATION=xcb_egl para activarla.

  • Permitir que el perfil del códec no coincida.

    Si el perfil del códec no coincide con las capacidades del hardware, puede ignorar la falta de coincidencia y permitir la descodificación por hardware a través de QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1. Esta opción puede resultar útil, por ejemplo, cuando se utiliza la descodificación acelerada por hardware para el perfil básico H.264 con el backend de hardware VAAPI, ya que la mayoría de estos flujos satisfacen las limitaciones del descodificador de hardware H.264 existente.

    Advertencia: Si el flujo no es compatible, la descodificación por hardware forzada puede causar una salida de vídeo totalmente incorrecta.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.