`
kaka-pan
  • 浏览: 26165 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

基于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” class="java项目class文件目录"(响应客户端请求)

      web.xml:里面<display-name>和<param-value>一定要与项目名称一样

      新建java工程,我是直接将路径放在webapps下的,然后将WEB-INF和META-INF导入,注意要将java项目的output folder路径设为WEB-INF下的classes文件夹下,不然会抛出ClassNotFound异常。
     
      java程序比较简单,一个用户列表共享对象,一个用户消息共享对象,当用户连接到服务器(appConnect())时,将用户名和连接信息形成对应存入在线列表,当用户断开时(appDisConnect()),再删除此对应关系,另外还有一个广播消息方法,用于客户端调用。
    
      客户端(flex):
      视频发布端,视频接收端,用户列表刷新,聊天内容更新,连接服务器(初始化时)……
      视频发布端调用Camera,Microphone,这里要注意他们的相应配置,以达到视频的最佳效果,例如我设置的是:
   
      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秒再播放,保证视频流畅
    

    大家可以看看actionScript API中的Camera,Microphone相关方法说明。
     测试的时候,尽量不要在本机上,这样效果不是很明显,可以把.swf文件嵌入到jsp中,部署到应用服务器上,用多台主机登陆,看看视频效果……
     另外大家可以参看fms下的视频直播实现相关资料,毕竟fms资料还是相当多的,我就是遇到了瓶颈突然想到了fms下的开发,(因为它俩某些方面实现机制还是大同小异的,)才解决问题的。http://mhqawjh.iteye.com/它的具体代码在豆瓣上有一个系列讲解http://www.docin.com/mydoc-23978659-1.html 相信对大家肯定有所帮助的。
     接下来做的事情:处理些细节,比如视频请求应答交互,实现简单共享白板。
    第一次发表文章,可能有很多没写好的地方,望大家多多指教!
分享到:
评论
3 楼 starshine_java 2012-11-07  
我的是视频接收端一动就花

很郁闷 请问如何解决?

我按照你说的方式修改视频质量, 一弄视频超级卡  局域网

求指教~!   122521240  qq 你懂得
2 楼 AquariusM 2011-05-19  
自己搞不就行了
有没有太难 red5网上还是有很多资料和实例的
可以看看 会与很大帮助
1 楼 lingyuyao 2011-05-16  
请问能给我发一些red5+flex开发视频聊天的资料吗?不胜感激!我的邮箱是:yao_happy@163.com

相关推荐

    flex + red5 简单实例

    通过研究这个实例,开发者可以了解如何在Flex客户端中创建RTMP连接,发送和接收数据,以及如何在Red5服务器上创建和管理这些连接。这有助于开发者深入理解Flex与Red5之间的交互机制,为构建更复杂的多媒体应用奠定...

    Flex视频聊天室源码

    要运行这个Flex视频聊天室,你需要一个支持RTMP的服务器,如Adobe Flash Media Server或开源的Red5。在开发和调试过程中,你可以使用Flex Builder或IntelliJ IDEA等IDE,它们提供了集成的Flex开发环境和调试工具。 ...

    基于flex,red5,java的一个聊天程序(含私聊)

    标题中的“基于flex,red5,java的一个聊天程序(含私聊)”指的是一个使用Adobe Flex作为前端开发工具,Red5作为流媒体服务器,以及Java作为后端编程语言构建的实时聊天应用程序,其中包括了私聊功能。这个项目可能是...

    red5入门教程(pdf)

    7. **Red5与Flex/Flash集成**:由于Red5与Adobe Flex和Flash有良好的兼容性,开发者可以使用这些工具创建丰富的用户界面并与Red5服务器进行交互,实现如聊天室、在线视频会议等功能。 8. **错误处理与调试**:了解...

    RED5多人会议源码

    1. **RED5架构**:RED5由服务器端和客户端两部分组成。服务器端处理流媒体的发布、播放、录制和存储,而客户端则负责音视频数据的采集、编码、解码和显示。RED5支持多种流媒体格式,如FLV、F4V和MP4。 2. **RTMP与...

    red5入门教程.....

    - **即时通讯实现**:基于Red5开发即时通讯功能,支持多用户在线聊天。 #### 附录:开发工具使用 - **IDE配置与使用**:推荐使用Eclipse、IntelliJ IDEA等IDE进行Red5开发,包括项目创建、代码编辑、调试等功能。 ...

    red5 server 1.0.10-M7 源码

    Red5 Server基于Java技术构建,因此具备跨平台性。它的核心组件包括连接管理器、应用服务器、存储服务和流媒体处理等。连接管理器负责客户端的连接与断开,应用服务器处理业务逻辑,存储服务则用于保存录制的流媒体...

    基于FLV流媒体技术的视频会议系统设计

    本研究着眼于新的计算机技术在教学中的应用,特别是如何利用开源的Red5流媒体服务器结合Flex RIA(Rich Internet Applications)技术、Spring框架以及Cairngorm微架构技术工具,构建一个基于J2EE架构的FLV流媒体技术...

    FluorineFx+Flex视频聊天室源代码

    FluorineFx+Flex视频聊天室源代码是一款基于Adobe Flex和FluorineFx技术构建的实时在线视频聊天应用程序。这个项目展示了如何利用这两项技术实现高效的多媒体通信,为用户提供一个互动性强、功能丰富的聊天环境。...

    Red5_Flash服务器研究.pdf

    1. **启动监听**: 启动时,Red5会调用`RTMPPMinaTransport.start()`方法打开RTMP端口(默认为1935),并通过Mina API绑定`RTMPPMinaHandler`。 2. **消息处理**: 当客户端发起连接请求时,`RTMPPMinaHandler`中的`...

    openfire red5插件 sparkweb源码

    在实际应用中,开发者可以深入研究源码,了解Openfire与Red5的集成方式,以及SparkWeb如何处理音视频交互。这有助于定制自己的即时通讯解决方案,例如添加新的功能,优化性能,或者改进用户体验。同时,对于学习Flex...

    red5-server-1.0.4-RELEASE-server

    Red5服务器是一款开源的流媒体服务器,主要用于处理视频、音频流以及其他实时数据的传输。它的主要功能包括录制、播放、转码以及互动流媒体服务。标题"red5-server-1.0.4-RELEASE-server"表明这是一个特定版本的Red5...

Global site tag (gtag.js) - Google Analytics