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发送给云台,则用户呵根据需要点击按钮改变观看视频的角度,完成对远程视频的播放和控制。客户端运行界面
流实时的远程播放效果。视频图像的捕捉过程所示。系统所用的半球云台使用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发送给云台,则用户呵根据需要点击按钮改变观看视频的角度,完成对远程视频的播放和控制。客户端运行界面
相关文章推荐
- android视频开发之一Android 如何使用juv-rtmp-client.jar向Red5服务器发布实时视频数据
- android 开发如何将数据封装成对象以及从对象中获取出来
- 【XFeng安卓开发笔记】android 如何在对话框中获取edittext中的数据
- Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?
- Android开发使用Web Service获取数据
- 京东价格监控软件开发技术探讨八:如何获取京东商品分类数据
- [Android开发] 在Android开发时,如何实现和服务器的数据同步?
- android开发案例之使用JSON数据向服务器提交和获取服务器传递的Json数据
- Android逆向之旅---Android中如何获取在非Root设备中获取应用隐私数据
- android-如何获取网络数据
- Android应用获取后台基于SSH框架开发的接口数据
- Android(Java)开发之获取BLE广播包(扫描后获取:广播数据+扫描应答数据+RSSI)
- Android Google Maps开发笔记:【1】如何获取 Google Maps API key
- Android开发:SharedPreferences 存储数据、获取数据
- android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?
- Android应用开发之获取web服务器xml数据
- android 如何在对话框中获取edittext中的数据
- android开发如何获取res/raw和assets文件夹的路径
- android 开发利用 html5 JavascriptInterface 实现应用层与 native 互传参数并获取返回数据
- 【无限互联】iOS开发视频教程— 2.2 iPhone开发之OC变量和基本数据类型1