分类: LINUX
2011-04-15 17:20:02
随便下载一个spcaview的源代码。
目录中有avilib.c与avilib.h。(事前工作:能得到基于v4l的捕获的一帧)
我今天刚完成基于v4l的视频捕捉和制成avi文件。
简单的说下使用步骤:
第一步:
if ((out_fd = AVI_open_output_file (filename)) == NULL) {
printf ("cannot open write file ? \n");
exit (1);
}
顾名思义filename便是你希望输出的avi文件名。
第二步:
avi_t *out_fd;
AVI_set_video (out_fd, vd->hdrwidth, vd->hdrheight,10,"MJPG");
avi_t是avilib.h中定义的结构体。高度和宽度不说了,10是帧数,“MJPG”是采用的压缩方式。
第三步:
if ((ioctl (vd->fd, VIDIOCMCAPTURE, &(vd->vmmap))) < 0) {
perror ("cmcapture");
}
if (ioctl (vd->fd, VIDIOCSYNC, &vd->vmmap.frame) < 0) {
perror ("cvsync err\n");
erreur = -1;
}
jpegsize = get_jpegsize(vd->pFramebuffer + vd->videombuf.offsets[vd->vmmap.frame],vd->framesizeIn);
if (AVI_write_frame (out_fd, vd->pFramebuffer + vd->videombuf.offsets[vd->vmmap.frame], jpegsize) < 0)
printf ("write error on avi out \n");
简单的说就是得到一帧写入avi文件。写几帧就是你的事了。
第四步:
if (filename) {
AVI_close (out_fd);
printf ("close avi\n");
}
结束。