基于red5的flex视频研究(1)
用了两星期多,在空闲时间研究了下基于red5的实时视频直播,今天终于有了第一个版本,虽然比较简单,但是费了我好多心血,从零开始到现在,学到了好多以前根本就不知道的知识,根本没用过的东西。。。。在这里和大家分享,共同进步!
先把效果给大家看看吧,然后再细说这个过程,以后还会有后续的研究日记。。。。也希望我能坚持下去。。。。
实现了实时视频,群聊,在线列表……
环境搭建:red hat 6 linux+red5(0.9)
flex 3 + myeclipse8.5
这儿要说一下,搭环境还是挺重要的,我刚开始是跑在window上的,window上的环境搭建还是挺容易的,网上资料也很多,为了方便我没装ant(也不知道window环境下为啥不用装),等到了后来将red5移到linux上时,环境搭建就不像window上那样简单了,ant是必要的,作为编译red5(解压目录下有个build.xml,window解压目录下没有),另外设要置好jdk环境变量,启动red5之前要ant下,参照 http://wangguorui89.iteye.com/blog/698230,可是这时会抛出异常,找不到各种配置文件,当时就很郁闷,版本不一样?再网上找了好久也没解决,最后还是到官网上找找,还是官网上的配置说明给力,http://trac.red5.org/wiki/Install,原来缺的东西还需要在它的版本库中checkout 下来,顺便就又学了些svn的东西,帽是它上面就说了0.9版本的需要这么做。。。。。还有一点在linux下安装时没有提示输入ip和端口,默认的就是0.0.0.0(表示都可以访问),5080(red5端口号),这些都在conf/red5.proerties中配置。
red5的中文资料的确很少,但是官网上的技术文档还是还是容易读懂的,我也找了个pdf版本的,另外red5api也是必须的。
red5 应用程序:项目文件必须放在webapps下面,在项目一级目录中必须有WEB-INF和META-INF,大家可以直接把解压后的例子中的拷贝过来,然后在WEB-INF中会有三个重要的文件:
red5-web.properties:里面webapp.contextPath=/项目文件夹名称
red5-web.xml:只需要改动bean id = “web.hander” name="code"> cam.setMode(320,240,10); //设置摄像头的捕获模式 分辨率: 320*240 每秒10帧 cam.setQuality(100*100,80); mic.setUseEchoSuppression(true); //抑制回音(很重要)
在刷新用户列表和聊天记录时,设置监听器:
//为共享对象添加异步事件,这也是服务器同步处理多客户端最关键的地方, //一个客户端进行了什么操作,其它客户端也会有相应的变化,就是通过此事件来完成的 listSO.addEventListener(SyncEvent.SYNC, listSOSyncHandler); //每当由用户进入时,listSOSyncHander方法执行,刷新用户列表 //用户列表共享对象被更新之后事件 private function listSOSyncHandler(evt:SyncEvent) { showUserList(); //更新用户列表 } private function showUserList() { userArr = new ArrayCollection(); //用户数组更新 for (var j in listSO.data) { userArr.addItem({username:listSO.data[j]}); } userList.dataProvider = userArr; //添加DataProvider }
remoteStream.bufferTime=2; //缓冲2秒再播放,保证视频流畅