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

C++ OpenCV:H.264编码视频的文件大小,c++,opencv,video,h.264,x264,C++,Opencv,Video,H.264,X264,我编写了一个程序,使用OpenCV从图像序列中创建一个视频文件。它运行良好,做它应该做的,但我意识到一些我无法解释的事情。我的录像机是这样的: VideoWriter video(name + ".avi", CV_FOURCC(FOURCC[0], FOURCC[1], FOURCC[2], FOURCC[3]), fps, cvSize((int)width, (int)height)); for (;;) { capture >> frame;

我编写了一个程序,使用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;
    }
VideoWriter视频(name+“.avi”、CV_FOURCC(FOURCC[0]、FOURCC[1]、FOURCC[2]、FOURCC[3])、fps、cvSize((int)宽度、(int)高度));
对于(;;)
{
捕获>>帧;
if(frame.empty())
打破
如果(!frame.data)
{

cerr虽然有点晚了,但我发现了……这似乎只是OpenCV的一个缺陷。当我使用OpenCV方法使用h.264编码器时,视频文件被破坏。当我使用FFmpeg时,一切都很好。

我在编码方面没有太多经验,但直觉告诉我们:也许比特率保持不变,所以每t使用相同的比特数ime=>更少的时间=使用更少的位?!?