原创 spcaview 文件中的avilib分析和使用

2009-7-17 17:13 6298 7 8 分类: 软件与OS

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


 


结束。


 


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-3-11 16:16

源代码能发给我吗!?
相关推荐阅读
用户1679196 2009-09-04 16:17
两个linux按键驱动之二 read(定时器去抖动)
//相比之下poll更为实用,但是这个代码实在太具有代表性了...涉及了下面几个知识。代码很大部分是linux设备驱动开发详解的内容。/*1、阻塞读取,队列概念2、睡眠等待中断产生3、定时器产生及相应...
用户1679196 2009-09-04 16:08
两个linux按键驱动之一 poll(未去抖动)
//驱动//未加去抖动//通过poll判断是否可读来得到中断值#include <linux/module.h> #include <linux/kernel.h>#inclu...
用户1679196 2009-09-04 09:39
select 使用
以下来自网络搜索:Linux下select调用的过程:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offi...
用户1679196 2009-09-03 14:52
Linux设备驱动之定时器
Linux内核中定义了一个timer_list结构,我们在驱动程序中可以利用之: #include<linux/timer.h> struct timer_list { struct li...
用户1679196 2009-08-28 17:38
loff_t *ppos是什么东东
ssize_t generic_file_read(struct file * filp, char * buf, size_t count, loff_t *ppos) 这是一个文件读函数 我们很容...
用户1679196 2009-08-12 17:30
linux 延时函数几个资料
http://www.cppblog.com/CppExplore/archive/2008/04/02/46111.html一、 基础知识1、时间类型。Linux下常用的时间类型有4个:time_t...
EE直播间
更多
我要评论
1
7
关闭 站长推荐上一条 /3 下一条