如何使用OpenCV-C++编写*.mp4视频?

How to write *.mp4 video with OpenCV-C++?

本文关键字:mp4 视频 编写 何使用 OpenCV-C++      更新时间:2023-10-16

我正在使用OpenCV-C++编写视频*.mp4类型。我可以.avi类型编写视频,但这需要大量存储空间。大约 1Mb/1s,分辨率为 640x480,FPS 为 15。我正在使用iMX6UL-EVK板(Linux(。

我构建没有错误,但没有输出.mp4文件。而在python代码(OpenCV-Python(中,这个板可以用"mp4v"编写.mp4视频。

我尝试使用"mp4v","xvid","divx","h264","x264",但不起作用。那么我现在该怎么办?或者你可以给我看其他类型的视频,这些视频不占用太多存储空间?

这是我的代码:

#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
cout << "Built with OpenCV " << CV_VERSION << endl;
Mat image;
Mat src;
VideoCapture capture;
capture.open(2);
capture >> src;
bool isColor = (src.type() == CV_8UC3);
VideoWriter writer;
int codec = VideoWriter::fourcc('M', 'P', '4', 'V');  
double fps = 15.0;
string filename = "live.mp4";
Size sizeFrame(640,480);
writer.open(filename, codec, fps, sizeFrame, isColor);
cout << "Started writing video... " << endl;
for (int i = 0 ; i < 60 ; i ++)
{
capture >> image;
Mat xframe;
resize(image,xframe,sizeFrame);
writer.write(xframe);
// imshow("Sample", image);
// char c = (char)waitKey(1);
// if(c == 27) break;
}
cout << "Write complete !" << endl;
capture.release();
writer.release();
return 0;
}
VideoWriter::fourcc('a', 'v', 'c', '1') 

对我来说写MP4文件工作正常。