• 6886阅读
  • 1回复

qt4.4.3 显示视频数据 [复制链接]

上一主题 下一主题
离线dancyz
 

只看楼主 倒序阅读 楼主  发表于: 2009-08-30
有一个自己录的视频数据文件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格式的视频数据呢?

各位大虾有什么建议? 在这里谢过各位大虾。。。
离线mecland
只看该作者 1楼 发表于: 2009-08-30
当然需要从YUV转换到RGB后才能成功创建QImage了, 具体转换算法还要看你是YUV420还是YUV422, 转换算法代码网上就有!
快速回复
限100 字节
 
上一个 下一个