Qt Multimedia
Qt Multimedia es un módulo adicional que proporciona un rico conjunto de tipos QML y clases C++ para manejar contenidos multimedia. Contiene una API fácil de usar para reproducir archivos de audio y vídeo y renderizarlos en pantalla, así como una API completa para grabar audio y vídeo de diversas fuentes, incluidas cámaras y micrófonos del sistema, capturas de pantalla o de ventanas y búferes de memoria de audio o vídeo.
La funcionalidad de este módulo se divide en los siguientes submódulos:
| Qt Multimedia | Proporciona una API para casos de uso específicos de multimedia. |
| Qt Multimedia Widgets | Proporciona una API multimedia basada en widgets. |
| Qt Spatial Audio | Proporciona una API para implementar campos de sonido en el espacio 3D. |
Para empezar
Si está migrando de Qt 5 a Qt 6, consulte Cambios en Qt Multimedia.
Si eres nuevo en Qt Multimedia, los tipos QML pueden ser importados en una aplicación usando la siguiente sentencia en tu archivo .qml.
import QtMultimedia
Para enlazar con las bibliotecas C++, añada lo siguiente al archivo CMakeLists.txt de su proyecto. Sustituya my_project por el nombre de su proyecto.
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(my_project PRIVATE Qt6::Multimedia)Consulte Construcción de Qt Multimedia a partir de fuentes para obtener orientación sobre la construcción de Qt Multimedia a partir de fuentes.
Perspectivas generales y temas importantes
- Cambios en Qt 6
- Visión general multimedia
- Audio
- Audio Espacial
- Video
- Visión general de la cámara
- Formatos multimedia compatibles
Tipos QML
La siguiente tabla describe algunos tipos QML importantes.
| Tipo | Descripción |
|---|---|
| MediaPlayer | Añadir funcionalidad de reproducción de audio/vídeo a una escena. |
| CaptureSession | Crear una sesión para capturar audio/vídeo. |
| Camera | Acceder a una cámara conectada al sistema. |
| AudioInput | Acceder a una entrada de audio (micrófono) conectada al sistema. |
| AudioOutput | Acceder a una salida de audio (altavoz, auriculares) conectada al sistema. |
| VideoOutput | Visualizar contenidos de vídeo. |
| MediaRecorder | Grabar audio/vídeo desde CaptureSession. |
| ImageCapture | Capturar imágenes fijas desde la cámara. |
| Video | Añadir funcionalidad de reproducción de vídeo a una escena. Utiliza los tipos MediaPlayer y VideoOutput para proporcionar funcionalidad de reproducción de vídeo. |
| ScreenCapture | Captura una pantalla. |
| WindowCapture | Captura una ventana de nivel superior. |
Clases C
La siguiente tabla muestra algunas clases C++ importantes.
| Clase | Descripción |
|---|---|
| QMediaPlayer | Reproduce medios desde una fuente. |
| QVideoWidget | Visualizar vídeo desde un reproductor multimedia o una sesión de captura. |
| QMediaCaptureSession | Capturar audio y vídeo. |
| QCamera | Acceder a una cámara conectada al sistema. |
| QAudioInput | Acceder a una entrada de audio (micrófono) conectada al sistema. |
| QAudioOutput | Acceder a una salida de audio (altavoz, auriculares) conectada al sistema. |
| QImageCapture | Capturar imágenes fijas con una cámara. |
| QMediaRecorder | Grabar contenido multimedia de una sesión de captura. |
| QVideoSink | Acceder a fotogramas de vídeo individuales y renderizarlos. |
| QAudioSink | Envía datos de audio sin procesar a un dispositivo de salida de audio. |
| QScreenCapture | Captura una pantalla. |
| QWindowCapture | Captura una ventana de nivel superior. |
| QVideoFrameInput | Permite reproducir o grabar fotogramas de vídeo desde memorias intermedias. |
| QAudioBufferInput | Permite reproducir o grabar audio desde memorias intermedias. |
Para la reproducción de audio y vídeo, QMediaPlayer, QAudioOutput, y QVideoWidget contienen toda la funcionalidad necesaria. Otras clases están dedicadas a la captura de contenidos de audio y vídeo, siendo QMediaCaptureSession la clase central que gestiona todo el proceso de captura y grabación.
Licencias y atribuciones
El módulo Qt Multimedia está disponible bajo licencia comercial de The Qt Company. Además, está disponible bajo licencias de software libre. Desde Qt 5.6, estas licencias de software libre son GNU Lesser General Public License, versión 3, o la GNU General Public License, versión 2. Ver Licencias de Qt para más detalles.
Además, Qt Multimedia en Qt 6.11.0 puede contener módulos de terceros bajo las siguientes licencias permisivas:
The Unlicense o MIT Sin Atribución | |
GNU Lesser General Public License v2.1 o posterior y BSD 3-Clause "New" or "Revised" License y BSD 2-Clause "Simplified" License y BSD Source Code Attribution y ISC License y MIT License y Mozilla Public License 2.0 | |
Licencia MIT | |
Licencia BSD "Nueva" o "Revisada" de 3 cláusulas | |
Licencia Boost Software 1.0 | |
Licencia Independent JPEG Group | |
Licencia zlib |
Tenga en cuenta que los estándares de compresión de vídeo, como el estándar de compresión de medios H.264, pueden estar cubiertos por patentes y pueden incurrir en el pago de derechos de autor. Esto puede aplicarse a cualquier implementación, también si la implementación se proporciona como un servicio del sistema operativo, a través de una biblioteca de terceros, o cualquiera de los backends de Qt Multimedia. Las licencias de Qt no cubren dichas tasas.
Notas sobre la plataforma de destino y el backend
Qt Multimedia ofrece API multiplataforma fáciles de usar para la reproducción multimedia, la grabación y la gestión de dispositivos. La implementación de las principales APIs, incluyendo QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink, y QAudioSource están integradas en la librería principal Qt Multimedia, eliminando la necesidad de librerías adicionales. Otras API de Qt Multimedia se implementan mediante bibliotecas de complementos conocidas como media backends. El backend multimedia principal, basado en FFmpeg, garantiza una funcionalidad multiplataforma sin fisuras y es el predeterminado en todas las plataformas excepto WebAssembly y Linux/Boot2Qt embebido. Con Boot2Qt, el backend por defecto está construido sobre GStreamer, pero el backend FFmpeg puede activarse utilizando la variable de entorno QT_MEDIA_BACKEND.
El backend FFmpeg
El backend multimedia FFmpeg se basa en las librerías FFmpeg 7.1.3, que se incluyen en Qt Online Installer y han sido probadas por los mantenedores. Los paquetes binarios del instalador en línea utilizan la vinculación dinámica con FFmpeg. Por lo tanto, las aplicaciones deben incluir los binarios de FFmpeg en su instalador o depender de que FFmpeg esté instalado en el sistema operativo. Las librerías FFmpeg se despliegan automáticamente usando las herramientas de despliegue de Qt como se describe en la documentación Desplegando Aplicaciones Qt, excepto para Linux/X11. Las aplicaciones también pueden desplegar su propia compilación de FFmpeg, ya sea como bibliotecas compartidas o estáticas, siempre que la versión principal de FFmpeg coincida con la versión utilizada por Qt.
Aunque Qt Multimedia aprovecha el backend multimedia de FFmpeg en la mayoría de los sistemas operativos, pueden surgir diferencias funcionales o visuales específicas de cada plataforma entre aplicaciones de distintas plataformas. FFmpeg no ofrece un soporte idéntico de códecs y formatos en todas las plataformas, y el rendimiento de las funciones de Qt Multimedia puede depender de un soporte de hardware que sólo está disponible en determinadas plataformas. Por ejemplo, FFmpeg encuentra problemas específicos con la aceleración por hardware en objetivos Linux con arquitecturas ARM. Por lo tanto, se recomienda probar las aplicaciones de Qt Multimedia en todas las plataformas de destino.
Nota: El proyecto FFmpeg ofrece funciones bajo diversas licencias. Las librerías FFmpeg preconstruidas que se proporcionan a través del Instalador Online sólo incluyen características que están de acuerdo con las licencias permisivas listadas en Licencias y Atribuciones.
Para facilitar el desarrollo y la depuración, algunas funciones de FFmpeg se pueden configurar mediante variables de entorno que forman parte de la API privada Qt Multimedia.
Backends nativos
Para compatibilidad con aplicaciones existentes, mantenemos backends nativos para cada sistema operativo:
- GStreamer en Embedded Linux
- AVFoundation en macOS e iOS
- Windows Media Foundation en Windows (obsoleto desde Qt 6.10)
- MediaCodec framework en Android
- WebAudio y WebVideo en WebAssembly
Nota: El backend multimedia FFmpeg es el backend por defecto excepto en WebAssembly, los backends nativos siguen disponibles pero con soporte limitado. El backend GStreamer sólo está disponible en Linux, y sólo se recomienda para aplicaciones embebidas.
Nota: MediaCodec en Android está obsoleto desde Qt 6.8 y será eliminado en la próxima versión.
Nota: El Windows Media Backend construido sobre Windows Media Foundation está obsoleto desde Qt 6.10 y será eliminado en la próxima versión.
Los mantenedores de Qt se esforzarán por solucionar los problemas críticos con los backends nativos, pero no garantizan la solución de problemas menores, incluyendo el comportamiento inconsistente entre plataformas. Las nuevas características sólo se implementarán en el backend multimedia FFmpeg, con la excepción de WebAssembly.
El backend GStreamer tiene algunas API privadas que permiten un control más preciso. Sin embargo, existen errores conocidos en el backend GStreamer. Más detalles se pueden encontrar en las notas de la plataforma para el backend GStreamer.
Las limitaciones del backend serán documentadas, y su estado será mantenido en las respectivas clases.
Cambio de backend
En el caso de problemas con el backend FFmpeg por defecto, sugerimos probar con un backend nativo. Puedes cambiar a backends nativos configurando la variable de entorno QT_MEDIA_BACKEND a windows, gstreamer (en Embedded Linux), darwin (en macOS e iOS), o android:
export QT_MEDIA_BACKEND=darwin
Para forzar la asignación de FFmpeg como backend utilizado, establece la variable a ffmpeg:
export QT_MEDIA_BACKEND=ffmpeg
En la fase de compilación Qt Multimedia, el backend multimedia predeterminado puede configurarse mediante la variable cmake QT_DEFAULT_MEDIA_BACKEND.
Notas sobre la plataforma de destino
En las siguientes páginas se enumeran los problemas para plataformas de destino específicas.
Permisos
A partir de Qt 6.6, el módulo Qt Multimedia utiliza la nueva API QPermission para gestionar los permisos camera y microphone. Esto significa que Qt por sí mismo ya no consulta estos permisos, por lo que esto debe hacerse directamente desde la aplicación cliente.
Consulta la página Permisos de la aplicación para ver un ejemplo de cómo integrar la nueva API QPermission en la aplicación.
Referencia y ejemplos
© 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.