这是本项目的第一篇日志。。。主要介绍背景和设计情况吧,也算做个备忘。废话比较多,对于时间不多的看客在此郑重提醒,这里只是LZ自己做个回顾,完全是自娱自乐。如果有能帮助您的地方不胜荣幸,如果觉得浪费您时间了在这里说句对不起了
这大学读的也是跌跌撞撞的,住院、挂科基本全程尾随,还迫不得已重修了一年大三,也挺对不起父母亲人老师的。主要还是自己某种奇怪的坚持在做遂吧,自从接触java开发就一头钻了进取,对学校其他课程再不感兴趣。我也是真心热爱java开发这门技术。
闲话到这里,YVisual是本人本科毕业设计的项目,目前主要目标是完成一个可以在android和服务器之间视频通讯的一个软件(当然,初步目标是将视频发送到服务器并保存。。服务器端保存是指导老师强烈要求的。。我隐隐听到了硬盘君的哀嚎)
初步设想Android端完成H.264编码发送至服务器保存,后续有android客户端之间进行视频通话、HTML5和android之间视频通话的设想。本来想写个java桌面应用的,但是JMF无论如何都没办法支持x64系统只能作罢,有空学了JNI再完善吧。
说说项目进度吧
目前完成了android的界面初步开发(平台为android4.0,由于Fragment对TabActivity的取代只好对低版本说声对不起了),双向RSA编码和解码。
服务器端是一个J2EE Web项目,采用MySQL数据库对用户账户信息、视频文件信息做一个存储。ORM采用了MyBatis3框架(相对于沉重的Hibernate来说还是更喜欢这种灵活小巧的方式)。新建一个service事务层管理前端Struts2和myBatis之间的通信,也加入了初学的Spring框架。这部分暂时只做了登陆和注册的流程。前端页面完全没做。在web端口以外额外打开了两个端口(tcp+udp)作为客户端通信接口。现在暂时使用一个junit类开启端口做测试用。
udp端口作为消息传输信道(原来设计是两个udp连接一个负责消息一个负责视频数据传输,采用不同的协议),后来考虑到视频数据连续性需要有保证所以把数据传输通道换成了TCP连接,就出现了udp+tcp连接这样怪异的设计。。
udp消息通道采用json数据格式,alibaba的fastjson很好用,消息传输采用RSA加密,使用心跳脉冲维持在线状态。
tcp只在需要的时候创建连接,本着做一个新项目就要学一点新东西的原则,tcp服务器端采用了nio设计,对于这个领域还非常生疏,不得不新写了一个测试项目学习。至于协议则是采用了字节流的设计
当然,考虑到后面可能要做p2p实现最后可能还是会把tcp通道改成udp。不过还需要一个更复杂的协议来保证数据传输的准确性
碰到的问题:
1,RSA在安卓端和PC端不能匹配。Android从服务器取得RSA公钥后无法解密来自服务器的消息,Android使用公钥加密的数据在服务器端无法解密,经过查询资料得知两者使用的不是同一个RSA标准。在引入bouncycastle包后解决。
2,H.264格式还没完全吃透,暂时还没到那一步,到时候再来头痛吧
3,RTP协议,恩,只是备忘。。。
4,netty,恩,同学推荐的NIO框架,不过使用框架前还是先把基础搞明白比较好
剩下的后面再谈吧
分享到:
相关推荐
Git地址 : ... 时间段筛选器 1 可自定义起始时间和终止时间 2 支持一键选择当天 昨天 本周 本月时间段 3 自定义颜色 4 快速重置时间
获取当天、昨天、上周、当月、上个月 当年等起始和结束时间
可选择起始日期和结束日期的时间选择器
Revit开发起始篇.pdf
给定项目起始、结束时间,寻找能做项目最多次数
航迹起始算法中的逻辑航迹起始算法源代码,本算法代码具有很好的起始性能
最近在制作一个报表,里面需要计算某日是属于当年的多少周,并且要显示这周的起始日期和截止日期,本以为网上会有很多,可是找来找去,要么是要用WEEKNUM()这函数,需要加分析工具库,通用性不是很强,要么就不是...
航迹起始中的逻辑航迹起始算法源代码,本代码具有很好的航迹起始效果!
电子电器架构 —— 诊断数据DTC起始篇(上)
电子电器架构 —— 诊断数据DTC起始篇(下)
基于Revit的开发离不开对产品的了解,对Revit技术架构的理解又能促进你对产品有更深刻地认识。所以说,二者缺一不可。当然要想成为建筑设计软件的行家里手,必要的相关行业背景知识也是必不可少的。
对于多个时间段, 按照他们相交的部分分割成多个时间段
利用iFIX脚本和控件,实现在iFIX画面上,通过按钮的点击,记录按钮动作的时间
EXCEL表格IP,计算起始地址和终止地址!子网掩码的测算,起始地址和终止地址中间IP地址的填充公式!
自定义日历,类似酒店日历,选择起始时间,更改选择时间的背景。
此matlab程序是霍夫变换的仿真,有五个目标,应用霍夫变换进行航迹气起始
一般的数据包格式是:起始头2位+标志1位+数据N位+校验位1位+结束尾2位. 注意:这里的起始头和结束尾是2位!!!因为有些场合1位标志位容易出错。 ------------分割线------------- c#读写串口缓冲区,发送比较简单。...
计算机前端-核心编程. Smarty12section控制步长、起始点、循环次数.avi
Hough_Initiation_hough航迹起始_航迹起始_hough变换_Hough航迹起始_Hough变换航迹.zip