现在的位置: 首页 > 综合 > 正文

视频监控–H264视频监控配置(1)

2014年10月26日 ⁄ 综合 ⁄ 共 2381字 ⁄ 字号 评论关闭

最近想做视频监控,手上就一块TINY6410和一个未知什么牌子的摄像头,
现在先做一下H264的视频监控。由于国嵌已经有做过,所以可以借鉴一下。
我直接用的tiny6410开发板带的linux2.6.38内核,不过有人说新版内核的不支持V4L,只支持V4L2。先试试。我用的Fedora12
1. H264视频监控.rar
   高级项目试验手册.pdf
2. 找个地方解压h264源码包

[root@localhost h264]# pwd
/h264

3.进到.../avc-src-0.14/avc/build/linux

  编辑makefile文件,修改CC=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc      按自己的情况改

  保存退出,make.

  我是一次性通过,显示done之后,

[root@localhost linux]# cd ../bin/ 
[root@localhost bin]# ls 
CampFile.264  t264  t264libd.lib 
[root@localhost bin]# file t264 
t264: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses sharedlibs), for GNU/Linux 2.6.27, not stripped

显示,这个t264就是我要的。
4.删除T264.o目标文件

[root@localhost bin]# cd ../obj/
[root@localhost obj]# rm T264.o

5.找到server_arm.c文件

修改server_arm.c文件,把udps_respon里的IP改为自己PC电脑的IP地址。

void udps_respon(int sockfd,int w,int h) 
{ 
	struct sockaddr_in addrsrc;
	struct sockaddr_in addrdst; 
	int addrlen,n; 
	
	int32_t iActualLen;
	int row_stride = w*3*h/2;

	bzero(&addrdst,sizeof(struct sockaddr_in)); 
	addrdst.sin_family=AF_INET; 
	/*客户端PC机IP地址*/
	addrdst.sin_addr.s_addr=inet_addr("192.168.1.111");
	addrdst.sin_port=htons(SERVER_PORT);

	while(1) 
	{ 
		/*数据的采集*/
		read_video(NULL,w,h);
		/*对采集到的数据通过H264编码*/
		iActualLen = T264_encode(m_t264, cam_data, m_pDst, row_stride);
		printf("encoded:%d, %d bytes.\n",row_stride,iActualLen); 
		/*frame_num:存放帧号*/
		memcpy(m_pPoolData,&m_t264->frame_num,1);
		/*m_pDst解码后的数据*/
		memcpy(m_pPoolData+1, m_pDst, iActualLen);
		iActualLen++;
		/*使用UDP协议发送编码后的数据到客服端*/
		sendto(sockfd,m_pPoolData,iActualLen,0,(struct sockaddr*)&addrdst,sizeof(struct sockaddr_in)); 	
	} 
} 

make.之后生成server_arm。通过NFS启动根文件系统的话,直接在虚拟机里复制到根文件系统里。启动开发板,插上摄像头,显示

[root@Lc-system /]# usb 1-1.3: new full speed USB device using s3c2410-ohci and
address 3
usb 1-1.3: New USB device found, idVendor=0ac8, idProduct=3330
usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.3: Product: Sirius USB2.0 Camera
usb 1-1.3: Manufacturer: Vimicro Corp.
uvcvideo: Found UVC 1.00 device Sirius USB2.0 Camera (0ac8:3330)
input: Sirius USB2.0 Camera as /devices/platform/s3c2410-ohci/usb1/1-1/1-1.3/1-1
.3:1.0/input/input1

执行./server_arm  出错

[root@Lc-system /]# ./server_arm
start 2.0...
Can't get device information: VIDIOCGCAP
Device name:
Width:0 ~ 0
Height:0 ~ 0
ERROR:VIDIOCGWIN
ERROR:VIDIOCSWIN
ERROR:VIDIOCGPICT
ERROR: VIDIOCSPICT,Can't set video_picture format
ERROR:VIDIOCGMBUF,Can't get video_mbuf
Frames:0
ERROR:mmap
Buffer size:0
Offset:0
ERROR: VIDIOCMCAPTURE
ERROR: VIDIOCSYNC
Segmentation fault

了解可能是内核版本问题,还有摄像头问题。待解决

如果遇到跟我一样问题的朋友,不妨看一下我的(3)http://blog.csdn.net/lin772662623/article/details/7786042

抱歉!评论已关闭.