用C ++读取Raw RGB视频文件

时间:2014-09-17 03:58:48

标签: c++ video rgb

我正在完成阅读.rgb视频文件并在窗口中显示的任务。我只知道如何用C ++读取和显示图像。阅读视频并逐帧显示时,我该怎么办?我不想使用第三方库,只需要纯C ++和Windows编程。 我的想法是:首先使用fopen将整个视频文件加载到程序中,然后为其分配缓冲区。然后就像显示图像一样,我想将整个视频视为一个帧数组,所以在渲染第一帧后,我将转到下一帧。另外,如何将视频显示保持在恒定的fps?如果您有任何学习资源或编码,那将非常有帮助! 感谢

2 个答案:

答案 0 :(得分:0)

在不使用任何第三方库的情况下执行此操作将会有很多工作!

您可以使用OpenCV库来完成工作。查看http://opencv.org/

答案 1 :(得分:0)

由于您还没有提到您正在使用的平台。 但是这个片段将帮助您逐帧读取文件。

#include <stdio.h>
int main()
{

        FILE * fp = NULL;
        int size = 800 * 600 * 2;
        unsigned char * rawData = NULL;
        fp = fopen("raw.rgb", "r+b");

        rawData = (unsigned char *)malloc(size);

        if (NULL == rawData)
                return -1;

        if (fp)
        {
                while(!feof(fp))
                {
                        fread(rawData, size, 1, fp);
                        // GOT FRAME
                }

                fclose(fp);
                fp  = NULL;
        }
}