Visión general de vídeo
Funciones de vídeo
Qt Multimedia ofrece clases C++ de alto y bajo nivel para reproducir y manipular datos de vídeo, y tipos QML para reproducción y grabación. Algunas de las clases presentadas aquí se solapan con lo presentado en la Visión General de la Cámara y la Visión General del Audio.
Detalles de la implementación de vídeo
Reproducción de vídeo en C
Puede utilizar la clase QMediaPlayer para decodificar un archivo de vídeo, y mostrarlo utilizando QVideoWidget, QGraphicsVideoItem, o una clase personalizada.
He aquí un ejemplo de uso de QVideoWidget:
player = new QMediaPlayer; player->setSource(QUrl("http://example.com/myclip1.mp4")); videoWidget = new QVideoWidget; player->setVideoOutput(videoWidget); videoWidget->show(); player->play();
Y un ejemplo con QGraphicsVideoItem:
player = new QMediaPlayer(this); QGraphicsVideoItem *item = new QGraphicsVideoItem; player->setVideoOutput(item); graphicsView->scene()->addItem(item); graphicsView->show(); player->setSource(QUrl("http://example.com/myclip4.ogv")); player->play();
Reproducción de vídeo en QML
Puede utilizar VideoOutput para renderizar contenido proporcionado por un MediaPlayer o un Camera. El VideoOutput es un componente visual que puede incrustarse en un QQuickScene o Window, mientras que toda la decodificación de medios y el control de la reproducción son gestionados por el MediaPlayer o CaptureSession. Se ha proporcionado un elemento Video para mayor comodidad. Combina los elementos MediaPlayer, VideoOutput y AudioOutput en un solo elemento.
Trabajar con fotogramas de vídeo de bajo nivel
Qt Multimedia ofrece una serie de clases de bajo nivel para facilitar el manejo de los fotogramas de vídeo. Estas clases se utilizan principalmente cuando se escribe código que procesa fotogramas de vídeo o de cámara (por ejemplo, detectar códigos de barras, o aplicar un efecto de viñeta de fantasía), o necesita mostrar vídeo de una manera especial que de otro modo no es compatible.
La clase QVideoFrame encapsula un fotograma de vídeo y permite mapear su contenido en la memoria del sistema para su manipulación o procesamiento. El uso de su propio QVideoSink le permite recibir estos fotogramas de QMediaPlayer y QCamera.
Grabación de vídeo
La clase central para cualquier tipo de captura o grabación de audio y vídeo es QMediaCaptureSession (o el tipo QML CaptureSession ). Puede conectar un QCamera (Cámara en QML) y un QMediaRecorder (MediaRecorder)a la sesión y, a continuación, pedir al grabador multimedia que inicie la grabación.
Formatos multimedia compatibles
Los formatos multimedia compatibles dependen en última instancia de la configuración del sistema de destino.
Windows
Por defecto, lo que está disponible en un destino MS Windows depende de la versión del Reproductor de Windows Media que se empaquetó con el sistema operativo. Consulte la documentación del Reproductor de Windows Media para obtener información oficial.
Independientemente del Reproductor de Windows Media, existen numerosos paquetes de códecs que pueden instalarse. Consulta la guía de códecs para ver algunos ejemplos.
Android
Consulte los formatos multimedia compatibles con Android para obtener esta información.
Linux
En Linux se trata de instalar los plugins GStreamer correctos.
Plugins GStreamer mínimos requeridos
- gstreamer1.0-plugins-base
- gstreamer1.0-plugins-bueno
- gstreamer1.0-plugins-pulseaudio
Para un objetivo de escritorio Linux, se recomienda encarecidamente tener gstreamer1.0-libav para una buena cobertura de códecs y gstreamer1.0-vaapi para obtener aceleración por hardware.
En Linux embebido, el conjunto requerido de plugins podría ser algo diferente.
Determinación de los formatos multimedia soportados en tiempo de ejecución
Puede determinar qué formatos están disponibles en un sistema de destino en tiempo de ejecución utilizando la API estática QMediaFormat.
- Utilice QMediaFormat::isSupported() en un QMediaFormat::ConversionMode para consultar un formato específico.
- Utilice QMediaFormat::supportedFileFormats() en un QMediaFormat construido por defecto para obtener todos los formatos de archivo compatibles.
Ejemplos
Existen ejemplos disponibles tanto en C++ como en QML.
Ejemplos C
Muestra cómo capturar una imagen fija o grabar vídeo. | |
Reproducción de audio y vídeo mediante Qt Widgets. |
Ejemplos QML
Reproducción de audio y vídeo mediante Qt Quick | |
Reproducción de audio y vídeo utilizando el tipo MediaPlayer de QML. | |
Grabación de audio y vídeo utilizando Qt Quick. |
Documentación de referencia
Clases C
Abstracción para datos de vídeo | |
La estructura QAbstractVideoBuffer::MapData describe la disposición del plano mapeado | |
Se utiliza para obtener la información básica de una ventana capturable | |
Permite la captura de contenidos de audio y vídeo | |
Permite la reproducción de archivos multimedia | |
Se utiliza para codificar y grabar una sesión de captura | |
Permite el control de bajo nivel de las opciones de reproducción multimedia | |
Esta clase se utiliza para capturar una pantalla | |
Representa un fotograma de datos de vídeo | |
Especifica el formato de flujo de una superficie de presentación de vídeo | |
Se utiliza para proporcionar fotogramas de vídeo personalizados a QMediaRecorder o una salida de vídeo a través de QMediaCaptureSession | |
Representa un sumidero genérico de datos de vídeo | |
Widget que presenta el vídeo producido por un objeto multimedia | |
Esta clase se utiliza para capturar una ventana |
Tipos QML
Type se utiliza para obtener información básica de una ventana que está disponible para la captura a través de WindowCapture | |
Permite capturar contenido de audio y vídeo | |
Añade reproducción multimedia a una escena | |
Para codificar y grabar medios generados en una CaptureSession | |
Opciones de reproducción multimedia de bajo nivel | |
Este tipo se utiliza para capturar una pantalla | |
Un tipo práctico para mostrar un vídeo especificado | |
Renderizar vídeo o visor de cámara | |
Este tipo se utiliza para capturar una ventana | |
Describe un dispositivo de cámara | |
Describe un formato de vídeo compatible con un dispositivo de cámara | |
Proporciona metadatos para archivos multimedia |
© 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.