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

时间:2014-12-04 09:37:50

标签: c++ opencv video h.264 x264

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

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会发生变化?

1 个答案:

答案 0 :(得分:1)

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