本文来自:
http://blog.chinaunix.net/uid-23093301-id-86400.html
本课题基于嵌入式Linux实现的嵌入式视频采集程序名称为app_cap,相应的PC端实现的视频实时显示程序为app_mpeg。S3C2440开发板上的LCD分辨率为320*240。本课题设定嵌入式端的IP为192.168.1.6,相应的PC端IP设定为192.168.1.180。
S3C2440开发板及摄像头截图如图所示:
嵌入式端视频采集程序运行与测试
● 测试USB摄像头驱动程序
嵌入式端,启动嵌入式Linux操作系统,将USB摄像头接入S3C2440上,通过dmesg命令得到如下信息:
#dmesg
usb 1-1: new full speed USB device using s3c2410-ohci and address 2
usb 1-1: New USB device found, idVendor=0ac8, idProduct=3313
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: Topspeed USB 2.0 Camera.
usb 1-1: Manufacturer: Topspeed Corp.
usb 1-1: configuration #1 chosen from 1 choice
上面的信息种可以清晰的看到USB摄像头的品牌Topspeed USB 2.0 Camera,说明UVC驱动程序已经正确识别了USB摄像头设备。Linux操作系统生成了设备文件/dev/vidoe0,也充分说明了设备驱动程序已经正确工作。
● 测试MiniGUI的视频显示
进入嵌入式Linux,运行视频采集程序app_cap,S3C2440的LCD上成功显示了视频图像。其运行时截图如图所示:
● RTP服务测试
嵌入式端视频采集程序app_cap的总体运行信息如图所示:
当有PC端开始通过RTP协议与嵌入端进行通信时,嵌入式端会将PC端加入到RTP组播列表中,PC端便可以接收嵌入式端以RTP打包的视频数据。当PC端第一次与嵌入式端进行通信时,嵌入式端打印如下信息:
Adding destination 192.168.1.180:5000
当PC端视频显示程序关闭时,嵌入式端会将PC端从RTP组播列表中删除。嵌入式端会打印如下信息:
Deleting destination 192.168.1.180:5000
5.2 PC端视频监控程序运行与测试
确保嵌入式视频采集程序已经工作,将S3C2440与PC网络互通,运行PC端监控程序app_mpeg
#./app_mpeg
视频图像通过SDL窗口显示出来,视频流畅清晰,且非常稳定。
PC端实时视频显示截图如所示:
连续使其运行5分钟,关闭视频显示窗口,目录下生成俩个视频文件target.avi和target.mp4。target.avi为未经压缩的原始视频流数据,target.mp4为压缩编码保存的视频文件,经比较,MP4文件小于原始数据的1/3,并且利用暴风影音播放此MP4文件,视频质量几乎是无任何损失。其文件大小比较如下:
[root@localhost make_mpeg]# ls -lh target.avi target.mp4
-rw-r--r-- 1 root root 36M 06-13 11:51 target.avi
-rw-r--r-- 1 root root 10M 06-13 11:51 target.mp4
利用播放器回放两个视频文件,二者拥有相同的视频质量。其运行时截图如图所示: