有一个自己录的视频数据文件enc2.263,只有一帧数据,格式是yuv的。
我想从这个文件中读取视频到QT界面上,界面框架已经搭好了,可以看出界面在不同的刷新,但是显示不出正常的视频,视觉上的感觉是花屏。。
void widget_paint::paintEvent(QPaintEvent* event) {
QPainter painter(this);
cout << "enter into the inside paintEvent" << endl;
char bit[MAX_SIZE];
FILE *file = fopen(“enc2.263”, "rb");
if (NULL == file) {
perror("open file failed");
return;
}
fread(bit, MAX_SIZE, 1, file);
fclose(file);
QImage *img = new QImage(MAX_HEIGHT, MAX_WIDTH, QImage::QImage::Format_RGB16);
if(!img->loadFromData(QByteArray(bit)))
{
perror("create image error");
} painter.drawImage(20, 10, *img);
}
在第一次调用paintEvent()函数时,
红色标记的代码,会输出 ceate image error: 没有那个文件或目录
在之后调用时,都会输出 ceate image error: 成功
之后界面就开始刷新,下面是其中的一个刷新的图像。
这是花屏的效果,我感觉是视频数据格式的问题。
但是不知道怎么把yuv格式的转换成rgb格式的,我在网上搜了yuv到rgb之间的转换,是转换公式,我不知道具体怎么实现。
或者不用把yuv转换成rgb的,那要怎么在界面上显示yuv格式的视频数据呢?
各位大虾有什么建议? 在这里谢过各位大虾。。。