正在C++中读取原始RGB视频文件

Reading Raw RGB video file in C++

本文关键字:RGB 视频 文件 原始 读取 C++ 正在      更新时间:2023-10-16

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

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

#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;
        }
}

在不使用任何第三方库的情况下完成这项工作将是一项艰巨的工作!

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