我有一些使用openCV录制视频的代码。我使用MJPG
编解码器时代码工作正常,但它会产生非常大的视频。
我想制作较小的视频,因此我已将值X264
传递给CV_FOURCC('M','J','P','G')
。这似乎有效,我没有得到任何警告,但我注意到有帧缺失。
我以每秒10帧的速度录制了20秒的视频,然后我用mplayer播放,视频只持续了2秒。
以下是我正在使用的代码的内容:
VideoCapture cap(dev); // open the default camera
cap.set(CV_CAP_PROP_FPS, fps);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1024);
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat testFrame;
cap >> testFrame;
cap >> testFrame;
cap >> testFrame;
Size outSize = Size(testFrame.cols, testFrame.rows);
//VideoWriter writer(filename, CV_FOURCC('M','J','P','G'), fps, outSize, true); //Works
VideoWriter writer(filename, CV_FOURCC('X','2','6','4'), fps, outSize, true); //Missing frames
int count = 0;
for(; ;)
{
Mat frame;
cap >> frame; // get a new frame from camera
writer.write(frame);
}
我还应该补充说,这是在Odroid C2主板上的Ubuntu Mate 16.04 64位上运行。