我有下面的代码,它将几个帧写入。avi视频文件。这在windows机器上工作得很好,但当我在Mac上尝试时,它会创建。avi文件并没有显示错误,但该文件无法播放。到目前为止,我还没有找到一个明确的解决办法。我现在用的是Mac OSX 10.9.2.
void videoWriter()
{
CvVideoWriter *writer;
writer = cvCreateVideoWriter("test.avi",CV_FOURCC('I','Y','U','V'),1,Size(640,480),1);
for(int i = 0; i < 9; i++)
{
if(imMan.returnSelect(i)) {
cout << "Frame " << i << endl;
/****** Original Image *********/
Mat frame = imMan.returnOrg(i);
IplImage fr = frame;
cvWriteFrame(writer,&fr);
}
}
cvReleaseVideoWriter(&writer);
}
frame
的大小是多少?
根据我的经验,即使cvCreateVideoWriter
的第4个参数与您的图像帧的尺寸不匹配,cvWriteFrame
也不会产生错误。它会写一些标题之类的东西。(包含414字节…)
您必须使用正确的编解码器和扩展组合。
编解码器依赖于平台。这可能就是问题所在。
尝试使用以下组合:
writer = cvCreateVideoWriter("test.mkv",CV_FOURCC(*'X264),1,Size(640,480),1);
这里是参考链接