Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1037719
  • 博文数量: 244
  • 博客积分: 6820
  • 博客等级: 准将
  • 技术积分: 3020
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 21:33
文章分类

全部博文(244)

文章存档

2013年(1)

2012年(16)

2011年(132)

2010年(3)

2009年(12)

2008年(80)

我的朋友

分类: LINUX

2011-04-15 17:20:02

spcaview 文件中的avilib分析和使用

 

随便下载一个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");
 }

 

结束。

阅读(974) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~