您的位置:首页 > 其它

从摄像头获取_保存视频(CV_FOURCC可以获取的视频编码格式)

2012-08-16 15:35 501 查看
#include "cv.h"
#include "highgui.h"

int main(int argc, char** argv) {
cvNamedWindow("win");

CvCapture* capture = cvCreateCameraCapture(0);
IplImage* frame = cvQueryFrame(capture);

char* writePath = "f:\\my.avi";
CvVideoWriter* writer = cvCreateVideoWriter( writePath, CV_FOURCC('M','J','P','G'),
12, cvGetSize(frame));//(1)经过反复调试,此处fps调到12时输出的视频才无快放或者慢放到现象。

while(1){
frame = cvQueryFrame(capture);
if(!frame) break;

cvWriteFrame(writer, frame);
cvShowImage("win", frame);

char c = cvWaitKey(1);//(2)
if(c==27) break;
}

cvReleaseVideoWriter(&writer);
cvReleaseCapture(&capture);
cvDestroyWindow("win");
return 0;
}

在代码中有两个地方涉及帧率,一个是保存的视频文件需要指定帧率,一个是从摄像头读取画面时需要按一定的帧率(1、2处)。

谁的帧率小就拖了另一个后腿,视频输出的帧率由小帧率所决定。

CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codec

CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec

CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec

CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec

CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec

CV_FOURCC('U', '2', '6', '3') = H263 codec

CV_FOURCC('I', '2', '6', '3') = H263I codec

CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

经过试验,选取MPEG-4录像10秒,大小为963kb;选用H263,录像11秒钟,大小为1.25M(仅仅是验证性试验)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: