这个兄弟实现了这个:qt使用opengl绘制YUV数据图像_求知者先的博客-CSDN博客
不过烦就烦在代码不全,好人做到底:
1、找一个qcif(176x144)分辨率的yuv文件到c盘
2、copy如下代码运行即可
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
{
auto t = new QTimer(this);
auto f = new QFile("C:/hall_qcif-176x144.yuv",this);
auto ba = new QByteArray(176*144*1.5,0);
f->open(QIODevice::ReadOnly);
qDebug(" c=%d",ba->count());
connect(t,&QTimer::timeout,this,[=](){
//
const int w=176,h=144;
if(f->read(ba->data(),ba->count()) <=0){
f->seek(0);
if(f->read(ba->data(),ba->count()) <=0){
qDebug("error again");
t->stop();
return;
}
}
ui->yuvWidget->onShowYuv((uchar*)(ba->data()),w,h);
});
t->setInterval(25);
t->start();
}
}