QVideoFrameInput Class
La clase QVideoFrameInput se utiliza para proporcionar fotogramas de vídeo personalizados a QMediaRecorder o una salida de vídeo a través de QMediaCaptureSession. Más...
| Cabecera: | #include <QVideoFrameInput> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia)target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
| qmake: | QT += multimedia |
| Desde: | Qt 6.8 |
| Hereda: | QObject |
Funciones Públicas
| QVideoFrameInput(QObject *parent = nullptr) | |
| QVideoFrameInput(const QVideoFrameFormat &format, QObject *parent = nullptr) | |
| virtual | ~QVideoFrameInput() override |
| QMediaCaptureSession * | captureSession() const |
| QVideoFrameFormat | format() const |
| bool | sendVideoFrame(const QVideoFrame &frame) |
Señales
| void | readyToSendVideoFrame() |
Descripción Detallada
QVideoFrameInput sólo es compatible con el backend FFmpeg.
Se pueden grabar fotogramas de vídeo personalizados conectando un QVideoFrameInput y un QMediaRecorder a un QMediaCaptureSession. Para una implementación en modo pull, llama a sendVideoFrame() en respuesta a la señal readyToSendVideoFrame(). En el siguiente fragmento, esto se hace conectando la señal a una ranura de una clase generadora de medios personalizada. La función de ranura emite otra señal con un nuevo fotograma de vídeo, que se conecta a sendVideoFrame():
QMediaCaptureSession session; QMediaRecorder recorder; QVideoFrameInput videoInput; session.setRecorder(&recorder); session.setVideoFrameInput(&videoInput); MediaGenerator generator; // Custom class providing video frames connect(&videoInput, &QVideoFrameInput::readyToSendVideoFrame, &generator, &MediaGenerator::nextVideoFrame); connect(&generator, &MediaGenerator::videoFrameReady, &videoInput, &QVideoFrameInput::sendVideoFrame); recorder.record();
He aquí una implementación mínima de la función slot que proporciona fotogramas de vídeo:
void MediaGenerator::nextVideoFrame() { QVideoFrame frame = nextFrame(); emit videoFrameReady(frame); }
Para más detalles ver readyToSendVideoFrame() y sendVideoFrame().
Véase también QMediaRecorder, QMediaCaptureSession, y QVideoSink.
Documentación de funciones miembro
[explicit] QVideoFrameInput::QVideoFrameInput(QObject *parent = nullptr)
Construye un nuevo objeto QVideoFrameInput con parent.
[explicit] QVideoFrameInput::QVideoFrameInput(const QVideoFrameFormat &format, QObject *parent = nullptr)
Construye un nuevo objeto QVideoFrameInput con el fotograma de video format y parent.
El format especificado funcionará como una pista para la inicialización del codificador de vídeo correspondiente al invocar QMediaRecorder::record(). Si el formato no se especifica o no es válido, el codificador de vídeo se inicializará al enviar el primer fotograma. El envío de fotogramas de vídeo con otro formato de píxel y tamaño después de la inicialización del codificador de vídeo correspondiente podría causar una penalización de rendimiento durante la grabación.
Te recomendamos que especifiques el formato si sabes de antemano qué tipo de fotogramas vas a enviar.
[override virtual noexcept] QVideoFrameInput::~QVideoFrameInput()
Destruye el objeto.
QMediaCaptureSession *QVideoFrameInput::captureSession() const
Devuelve la sesión de captura a la que está conectada esta entrada de fotograma de vídeo, o un nullptr si la entrada de fotograma de vídeo no está conectada a una sesión de captura.
Utilice QMediaCaptureSession::setVideoFrameInput() para conectar la entrada de fotograma de vídeo a una sesión.
QVideoFrameFormat QVideoFrameInput::format() const
Devuelve el formato de fotograma de vídeo que se especificó al construir la entrada de fotograma de vídeo.
[signal] void QVideoFrameInput::readyToSendVideoFrame()
Señala que se puede enviar un nuevo fotograma a la entrada de fotogramas de vídeo. Tras recibir la señal, si tiene fotogramas por enviar, invoque sendVideoFrame una vez o en bucle hasta que devuelva false.
Véase también sendVideoFrame().
bool QVideoFrameInput::sendVideoFrame(const QVideoFrame &frame)
Envía QVideoFrame a QMediaRecorder o a una salida de vídeo a través de QMediaCaptureSession.
Devuelve true si el frame especificado se ha enviado correctamente al destino. Devuelve false, si la trama no se ha enviado, lo que puede ocurrir si la instancia no está asignada a QMediaCaptureSession, la sesión no tiene salidas de vídeo o una grabadora multimedia, la grabadora multimedia no está iniciada o su cola está llena. La señal readyToSendVideoFrame se enviará tan pronto como el destino pueda manejar un nuevo fotograma.
El envío de un fotograma de vídeo vacío es tratado por QMediaRecorder como un final del flujo de entrada. QMediaRecorder detiene la grabación automáticamente si QMediaRecorder::autoStop es true y todas las entradas han informado del final del flujo.
© 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.