您的位置:首页 > 移动开发 > Android开发

Android开发与iphone开发如何获取视频数据单元

2012-12-20 15:17 507 查看
在服务器端连接云台以及摄像头等设备,当客户端发起请求后,服务器端创建player对象,调用API中的CaptureDeviceManager.getDeviceListe0方法获得本地的多媒体设备。判断编码方式后调用CreateDateSoure(Iocator)方法创建数据源以及可以复制的数据源避免进程间死锁,由javax.media.contr01.FrameGrabblingControll81取得对player的控制。最后由grabFrame()方法将原始视频数据写入缓存,调用creatlmageO得到每帧数据。这些数据经过压缩编码,发送到远程手机端,手机端完成对每帧数据的还原,最终达到视频

流实时的远程播放效果。视频图像的捕捉过程所示。系统所用的半球云台使用PELCO—P协议控制,通过RS485串121,向云台发送16进制的控制字,调整并控制云台n的转动。PELCO-P协议的数据格式为:l位起始位,8位数据位,1位停止位,无效验位且波特率为9 600 bit/s,命令格式如图4所示。在协议中所有数值都为十六进制数,STX始终为AOH;
地址码为摄像头的逻辑地址号,地址范围为00H—IFH;指令码表示对应的不同动作;数据码1、数据码2分别表示水平、垂直方向速度(00-3FH),在有关预制点的操作时,数据码2表示预制点值;ETX始终为AFH;校验码(XOR sum of Bytes2—6)=字节2“字节3 n字节4一字节5“字节6。在服务器端,程序通过Java API以及comm.jar控制计算机端口。由outputStream.write()方法将数据写入串口,参数为byte型。云台的控制协议中所有数值为十六进制数,地址码为摄像机的逻辑地址号,地址范围:00H一1FH;因此,iphone开发需要将云台的控制字转化为对应的byte型数组。例如,控制协议字{0xa0,0x01,0x00,0x08,0x00,0x30,0xaf,0x39}表示云台向上转动,转化为byte数组是{-96,l,0,8,0,48,一8l,57)。服务器程序接收到客户发出的控制请求后解析此数组并发往串El,使云台做出相应动作。控制单元的工作流程如图5所示。整个设计过程可以大体分为2个部分,一部分为视频数据的远程播放单元,另一部分为云台的远程网络控制单元,完成这2个单元的数据通信,需要传送视频数据和控制信息。在测试阶段,采用无线路由器建立的局域网络进行数据的传输,实验证明了设计的可操作性,测试环境的网络结构本程序的开发采用Android 1.6的版本的SDK,在建立连接的无线}。9络中,将程序在手机模拟器上运行,输入服务器的IP地址,便可建立服务器与客户端的连接。通过5个Button(上、下、停止、左、右)按键连接云台控制协议,将相应的控制命令通过socket发送给云台,则用户呵根据需要点击按钮改变观看视频的角度,完成对远程视频的播放和控制。客户端运行界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐