*************************************************************************
static int GetVideoPict (struct vdIn *vd);//获取图片属性信息。
static int SetVideoPict (struct vdIn *vd);//设置图片属性。
static int isSpcaChip (const char *BridgeName);//测试芯片类型
static int GetStreamId (const char *BridgeName); //测试输出数据的格式
static int GetDepth (int format);//获取颜色深度。
void exit_fatal(char *messages);//错误显示。
int init_videoIn(struct vdIn *vd,char *device,int width,int height,int format,int
grabmethod);//初始化设备。
int convertframe(unsigned char *dst,unsigned char *src, int width,int height, int
formatIn, int size);//把共享缓冲区中的数据放到一个变量中,通知系统已获得一
帧。
int v4lGrab (struct vdIn *vd,char *filename );//从摄像头采集图片。
int close_v4l (struct vdIn *vd);//关闭摄像头。
int get_jpegsize (unsigned char *buf, int insize);//获取jpeg图片大小
****************************************************************************/
1.系统监控系统的硬件主要包括:中星微301P,选择中星微301P摄像头是因为它自带JPEG
硬件编码电路,可快速实现图像编码,减轻S3C2410微处理器的负担,保证监视频的流畅
性;可直接与S3C2410微处理器的USB接口相连接,画面(320*240)每秒20帧左右,具有
真正的实时视频捕获功能以及完善的亮度、对比度监控.
2.视频压缩编码模块是提高系统性能的重要一环。视频压缩直接采用摄像头JPEG硬件压
缩,效率高、不占用CPU资源。编码便用MJPEG编码,编码算法简单,非常适合嵌入式
系统。这里需要注意的是RTP协议进行数据包时是在内存中进行的,所以为保证实时性,
采集后的数据要在内存中编码完毕,然后直接打包发送,该算法目已用C语言实现。
headerframe=(struct frame_t*)vd->ptframe[vd->frame_cour];
snprintf(headerframe->header,5,"%s","SPCA"); //加入数字签名,防伪造。
headerframe->seqtimes = ms_time();//加入时间戳
headerframe->deltatimes=(int)(headerframe->seqtimes-timecourant);
headerframe->w = vd->hdrwidth;
headerframe->h = vd->hdrheight;
headerframe->size = (( jpegsize < 0)?0:jpegsize);//JPEG图像大小
headerframe->format = vd->formatIn;
格式头一共占50byte,最后加入硬件压缩好的JPEG数据,编码即完成,编码完成后的MJPEG数
据放入I/O中,等待传输。为了保证视频图像的实时性,网络传输模块采用流媒体实时传输
协议RTP/RTCP。 RTP和RTCP配合使用能使传输效率最佳化,因而特别适合数字视频监控系统。
阅读(688) | 评论(0) | 转发(0) |