利用qml中的VideoOutput来显示yuv数据
import QtMultimedia
VideoOutput {
id: videoOutput
anchors.fill: parent
Component.onCompleted: {
Config.setSink(videoOutput.videoSink)
}
}
在VideoOutput创建完成时,将VideoOutput的videoSink指针传入到c++里面
Config.cpp中的setSink函数
Q_INVOKABLE void setSink(QObject *_Sink)
{
qDebug() << _Sink;
sink = (QVideoSink *)_Sink;
emit sinkChanged();
}
如果你不知道怎么将c++类添加到qml属性里:
#include <QQmlContext>
int main(int argc, char *argv[])
{

文章讲述了如何在QML中利用VideoOutput组件直接显示YUV数据,避免了先转换为RGB再通过QQuickImageProvider和Image显示的复杂过程。通过设置VideoOutput的videoSink属性并与C++交互,可以直接将YUV帧映射到QVideoFrame并在VideoOutput中展示,同时提到了fillMode属性用于调整图像比例,并需在.pro文件中引入multimedia模块。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



