OpenCV:H.264编码视频的文件大小

OpenCV: File Size of H.264 encoded videos

本文关键字:视频 文件大小 编码 OpenCV      更新时间:2023-10-16

我编写了一个程序,使用 OpenCV 从图像序列中创建视频文件。它运行良好并做了应有的事情,但我意识到了一些我无法解释的事情。我的视频作者看起来像这样:

VideoWriter video(name + ".avi", CV_FOURCC(FOURCC[0], FOURCC[1], FOURCC[2], FOURCC[3]), fps, cvSize((int)width, (int)height));
    for (;;)
    {
        capture >> frame;
        if (frame.empty())
            break;
        if (!frame.data)
        {
            cerr << "Could not retrieve frame.";
            return -1;
        }
        video << frame;
    }

对于压缩,我使用"MJPG","M4S2"(一些MPEG-4编解码器)或"X264"(H.264编解码器)。我通过用户输入获取"fps"值。一切正常,但我发现 X264 编码视频的输出文件与 fps 成比例,fps 越高,输出文件越小。对于其他 2 个,大小保持不变,只是视频的长度发生了变化(正如我所期望的那样,因为它应该具有相同的帧数,只是在另一个时间内)。谁能解释为什么在这里使用 X264 更改文件大小?

虽然有点晚了,但我想通了...似乎这只是OpenCV的一个错误。当我使用 OpenCV 方法使用 h.264 编码器时,视频文件已损坏。当我使用 FFmpeg 时,一切正常。