QVideoFrameInput Class
QVideoFrameInput 클래스는 QMediaRecorder 또는 QMediaCaptureSession 을 통한 비디오 출력에 사용자 지정 비디오 프레임을 제공하는 데 사용됩니다. 더 보기...
헤더: | #include <QVideoFrameInput> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake: | QT += multimedia |
이후: | Qt 6.8 |
상속합니다: | QObject |
공용 함수
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) |
시그널
void | readyToSendVideoFrame() |
상세 설명
QVideoFrameInput은 FFmpeg 백엔드에서만 지원됩니다.
사용자 정의 비디오 프레임은 QVideoFrameInput 와 QMediaRecorder 을 QMediaCaptureSession 에 연결하여 녹화할 수 있습니다. 풀 모드 구현의 경우, readyToSendVideoFrame() 신호에 대한 응답으로 sendVideoFrame()을 호출합니다. 아래 스니펫에서는 사용자 지정 미디어 생성기 클래스의 슬롯에 신호를 연결하여 이 작업을 수행합니다. 슬롯 함수는 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();
다음은 비디오 프레임을 제공하는 슬롯 함수의 최소한의 구현입니다:
void MediaGenerator::nextVideoFrame() { QVideoFrame frame = nextFrame(); emit videoFrameReady(frame); }
자세한 내용은 readyToSendVideoFrame() 및 sendVideoFrame()를 참조하세요.
QMediaRecorder, QMediaCaptureSession, QVideoSink 를참조하세요 .
멤버 함수 문서
[explicit]
QVideoFrameInput::QVideoFrameInput(QObject *parent = nullptr)
parent 를 사용하여 새 QVideoFrameInput 객체를 생성합니다.
[explicit]
QVideoFrameInput::QVideoFrameInput(const QVideoFrameFormat &format, QObject *parent = nullptr)
비디오 프레임 format 과 parent 을 사용하여 새로운 QVideoFrameInput 객체를 생성합니다.
지정된 format 은 QMediaRecorder::record() 호출 시 일치하는 비디오 인코더의 초기화에 대한 힌트로 작동합니다. 형식이 지정되지 않았거나 유효하지 않으면 첫 번째 프레임을 전송할 때 비디오 인코더가 초기화됩니다. 일치하는 동영상 인코더를 초기화한 후 다른 픽셀 형식과 크기의 동영상 프레임을 전송하면 녹화 중에 성능 저하가 발생할 수 있습니다.
어떤 종류의 프레임을 전송할지 미리 알고 있다면 형식을 지정하는 것이 좋습니다.
[override virtual noexcept]
QVideoFrameInput::~QVideoFrameInput()
개체를 파괴합니다.
QMediaCaptureSession *QVideoFrameInput::captureSession() const
이 비디오 프레임 입력이 연결된 캡처 세션을 반환하거나, 비디오 프레임 입력이 캡처 세션에 연결되어 있지 않은 경우 nullptr
을 반환합니다.
비디오 프레임 입력을 세션에 연결하려면 QMediaCaptureSession::setVideoFrameInput()를 사용합니다.
QVideoFrameFormat QVideoFrameInput::format() const
비디오 프레임 입력 구성 시 지정한 비디오 프레임 형식을 반환합니다.
[signal]
void QVideoFrameInput::readyToSendVideoFrame()
비디오 프레임 입력에 새 프레임을 보낼 수 있다는 신호를 보냅니다. 신호를 수신한 후 전송할 프레임이 있는 경우 sendVideoFrame 을 한 번 또는 false
으로 반환될 때까지 반복해서 호출합니다.
sendVideoFrame()도 참조하세요 .
bool QVideoFrameInput::sendVideoFrame(const QVideoFrame &frame)
QVideoFrame 을 QMediaRecorder 으로 보내거나 QMediaCaptureSession 을 통해 비디오 출력을 보냅니다.
지정된 frame 이 대상에 성공적으로 전송된 경우 true
을 반환합니다. 프레임이 전송되지 않은 경우 false
를 반환하며, 이는 인스턴스가 QMediaCaptureSession 에 할당되지 않았거나 세션에 비디오 출력 또는 미디어 레코더가 없거나 미디어 레코더가 시작되지 않았거나 대기열이 꽉 찬 경우에 발생할 수 있습니다. 대상에서 새 프레임을 처리할 수 있게 되는 즉시 readyToSendVideoFrame 신호가 전송됩니다.
빈 비디오 프레임의 전송은 QMediaRecorder 에서 입력 스트림의 종료로 처리됩니다. QMediaRecorder 은 QMediaRecorder::autoStop 이 true
이고 모든 입력이 스트림의 종료를 보고한 경우 자동으로 녹화를 중지합니다.
© 2025 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.