首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

基于java Red5服务器客户端视频聊天室搭起床了

2012-12-19 
基于java Red5服务器客户端视频聊天室搭起来了? 基于java Red5服务器客户端视频聊天室(ldfu)开发环境:Red5

基于java Red5服务器客户端视频聊天室搭起来了

? 基于java Red5服务器客户端视频聊天室(ldfu)

开发环境:

Red5(视频服务端内嵌Tomcat6),Mina(高性能? socket通讯框架),

Flash(Flex) Builder4,Myeclipse8.0,java sdk6.0

?

一.先看看客户端的界面,呵呵。

?(1)Flash Buidler开发原型图


基于java Red5服务器客户端视频聊天室搭起床了
?

(2)全屏图:
基于java Red5服务器客户端视频聊天室搭起床了
?

?? (3)UI部分源码:
基于java Red5服务器客户端视频聊天室搭起床了
? (4)服务器启动:


基于java Red5服务器客户端视频聊天室搭起床了
?

(5)开始视频接受对方数据流以及聊天记录:


基于java Red5服务器客户端视频聊天室搭起床了
?
基于java Red5服务器客户端视频聊天室搭起床了
?

二.原理:

?(1)服务器启动ServerSocket监听RTSP协议数据流;

? @Override
? public boolean appStart(IScope arg0) {
? ?/**
?? ?* 此应用启动时,第一个触发
?? ?*/
??? System.out.println("服务器启动成功!");
??? ?return super.appStart(arg0);
?? }

?(2)客户端Flash启动获取摄像头以及音频输入显示在本地左下方区域;

???? private var rtmpUrl:String="rtmp://192.168.1.100/chatlive";

?camera= Camera.getCamera();
?????if (camera!=null)
?????{
??????writeMessage("您的系统已经安装摄像头");
??????camera.addEventListener(ActivityEvent.ACTIVITY,cameraActivityHander);
??????camera.addEventListener(StatusEvent.STATUS, cameraStatusHander);
??????this.myVideo.attachCamera(camera);
?????}
?????else
?????{
??????writeMessage("您的系统没有安装摄像头");
?????}
?????mic = Microphone.getMicrophone();
?????if (mic!=null) {
??????writeMessage("您的系统已经安装麦克风");
??????mic.setSilenceLevel(0);
??????mic.gain = 100;
?????}
?????else
?????{
??????writeMessage("您的系统没有安装麦克风");
?????}

?(3)客户端Flash连接Red5服务器是否已经存在,存在则从服务器获取一个

自己的ID.不存在着提示:

?? nc = new NetConnection();
????nc.client = this;
????nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
????nc.connect(rtmpUrl, localUsername);

?(4)哈哈,其他代码暂时不公布,呵呵。

三.此视频架构缺点:

1.客户端需要服务器来中转数据流,严重依赖于服务器;

2.严重地占用服务器的资源,包括CPU,内存以及网络带宽,可扩展性差;

? 除非像ku6那样每年给电信烧十几亿的带宽费;客户端越多,服务器

需要越多,带宽要求越高。

?

四.感言:

这种架构没有太多钱投资情况下,几乎是无法运行的,呵呵。所以我想基于

P2P架构进行点对点聊天。经过多天的摸索,目前已经找到一种点对点直接视频

方式,它不需要服务器中转。不过稍微深入一点的技术,其技术难点:

? (1)如何穿透在NAT服务器后面的私有内部网络进行UDP数据传送,因为你的内部

????? IP地址在外面是看不到,外面也是无法主动连接内部IP;

? (2)如何穿透防火墙的阻拦;呵呵,现在的公司一般都打开http 80端口,我们就在这个

?? 上面下功夫,那就是利用Http隧道穿越!或JXTA技术,is No Problem。

? (3)以怎么样的协议传送视频音频数据

? (4)如何获取摄像头以及声音;

?目前(1),(2)两点已经实现基本的解决方案代码,加油,有挑战性,呵呵

4 楼 ningwu_05 2011-03-29   楼主好!我也是初学者,感觉你的代码很有利于入门学习,能不能发一份给我,我也研究研究
ningwu_05@126.com

感激不尽! 5 楼 maxjn8985 2011-03-31   楼主您好 觉得你很厉害 我最近在研究怎么视频 你的代码很厉害 能否给我一份以便学习研究 我的邮箱是maxjn8985@gmail.com 6 楼 zhjb_javaeye 2011-04-28   楼主你好,能否给的发一份谢谢,

zhjb_0000@qq.com 7 楼 icecooly 2011-07-04   楼主发一份,感谢~
icecooly.du@qq.com 8 楼 wsliouyu 2011-07-07   麻烦楼主给我发一份撒  谢谢
liuyu19865@vip.qq.com 9 楼 Ramls 2011-07-20   麻烦楼主给我发一份撒  谢谢   allen_lly@163.com 10 楼 hotdoor 2011-07-22   楼主您好,您的这个功能代码非常适合我学习,能发给我一份吗? 不胜感激,谢谢!
hotdoor1981@yahoo.com.cn 11 楼 lspnet 2011-07-28   您好,可以给我发一份代码么,谢谢了。lspnet@126.com 12 楼 lzosisql5 2011-11-01   最近在做这个,能发一份给我看下吗? 谢谢了~ 13 楼 lzosisql5 2011-11-01   lzosi@126.com 邮箱 14 楼 丛林黑豹 2011-11-23   这个功能实现代码只不过是red5官方videoconerence示例的基本fb改版.直接从官网下载实例代码运行,查阅就好.
官方所有demo代码的svn地址:http://red5.googlecode.com/svn/java/example/trunk (可在官网找到最新下载链接)  其中的videoconerence即为此例代码
楼主只不过想自我炫耀一下罢了.

再有,基本red5的视频会议运用,一般在内网运行.基于NIO技术的流传播,支持个千把链接没问题. 15 楼 xiaobingjava 2011-12-30   能给发一份吗?
123020576@qq.com
谢谢啦 16 楼 zxj_0611 2012-01-31   发给我一份咯。。。。我想试试。。。看看 zxj_0611@126.com或者715213471@qq.conm 17 楼 jonlik 2012-05-19   楼主啊,求一份源码,谢谢了!zhanghaoxuan1987@163.com 18 楼 hillhaw 2012-05-22   楼主好,我是初学者,能否将源码发给我一份,万分感谢^_^
hillhaw@qq.com 19 楼 林祥纤 2012-07-28   能给一份源码吗???邮箱: linxingliang198811@163.com ,谢谢。 20 楼 RicyLi 2012-08-04   楼主好,我是初学者,能否将源码发给我一份,谢谢了 ricky.lzl@hotmail.com 21 楼 tl_oni 2012-10-11   楼主好!小弟是初学者 烦请发给一份学习一下?谢谢!
7779177@qq.com
22 楼 ljy2012 2012-10-31   楼主好!没收到,能不能发下liangjiangyun@126.com 23 楼 nizhenhao 2012-11-18   给小弟发一份吧  小弟正在急着学习呢 麻烦了   964476278@qq.com

热点排行