您的位置:首页 > 编程语言 > Java开发

Red5服务器代码导入eclipse并测试它自带的demo

2014-01-14 14:30 309 查看
最近做项目要写一个在android上跑的rtmp协议视频服务器,rtmp服务器端的资料实在难找,苦于找不到源码参考,我就想到了用Red5这一个java开源项目,虽然在android底层我们使用的是c++开发的服务器,但是这样一个开源的java项目一样可以对协议的交互与rtmp包的收发起到参考作用,所以整了一个来玩一玩。

这里为不让大家走弯路浪费时间,首先告诉大家的是,不是每一台电脑都可以成功的运行Red5-Webapp目录下的每一个app,比如作者的电脑运行Red5的installer就会出现:

Trying to connect to war location

Net status: NetConnection.Connect.Rejected

Async Error: [AsyncErrorEvent type="asyncError" bubbles=false cancelable=false eventPhase=2 text="Error #2095" error=ReferenceError: Error #1069]

Net status: NetConnection.Connect.Closed

Trying to connect to war location

Net status: NetConnection.Connect.Rejected

Async Error: [AsyncErrorEvent type="asyncError" bubbles=false cancelable=false eventPhase=2 text="Error #2095" error=ReferenceError: Error #1069]

Net status: NetConnection.Connect.Closed

Trying to connect to war location

具体为什么我也不知道是为什么,如果知道原因的朋友请告诉我。

如果遇到这种问题的朋友就请换一台环境纯净一点的机器试试,作者就曾经在这台机器上花了一天的时间实在没有找到原因,第二天换了一台机器才能成功的运行的。

下面进入正题,进行到Red5的与配置中:我使用的是Red5_0.9.1-zip版本,不要以为这是一篇多年前的教程,我只是选择了比较老的版本而已。事实证明,Red5项目组的文档工作做得实在坑爹,在新版本更新只有很少有我最开始用到的是0.8版本exe的安装程序,安装之后所有都可以正常使用,所有的demo都可以正常使用,可惜的是这个版本没有为导入eclipse设计的zip包版本,所以我们使用的是0.9.1版本。1.0.0及以上版本的和0.9版本的差别其实并不打,差别大的是0.8-0.9版本之间,这之间的改动已经影响到了demo的正常使用,下载的地址为:http://red5.org/downloads/red5/0_9/

1.下载



2.下载之后不用解压,用elipse的新建java project->Import->Archive File->选择你下载的zip包就行。

注意,如果要安装Demo,请使用吧java环境变量设置为1.6,如果使用1.7版本将无法安装Demo。





3.导入之后会有错误,不用着急,右键工程->Build Path->Configure Build Path....->然后删除红色选中的包就可以了。



4.将lib下的所有jar包都添入到build path中,选中右键->build path->add to build path.用同样的方法将boot.jar和red5.jar加入到build path。





5.启动:右键工程->Run As ->Run as Java Application,搜索Bootstrap,用它启动。



6.启动完成:你在浏览器中输入http://localhost:5080/后出现如下页面,证明red5已经导入成功。如果我们想要跑demo的话还要将src.zip文件夹解压,然后替换我们工程的src文件夹,所为一个source folder。



7.先在我们的工程导入已经告一个段落,接下来的内容我们一起来跑一个非常有研究价值的Demo---Publisher,为什么不跑通常的oflaDemo,一会再做解释。

8.为了跑publisher这个Demo,我们需要建立live这个web应用,具体怎么建立这个应用由于我主要不是为了做web开发,所以我没有仔细研究这个应用的内容,这里给大家一个简单的建立方法,那就是直接下载Red5 1.0以上版本zip(1.0已经自带live和vod应用)中webapp目录下的vod和live文件夹拷贝到我们的工程对应位置。





9.接下来还需要一些配置,这也就是red5_0.8版本的不同之处,配置这两个webapp,首先启动我们的Red5服务器,然后我们关注的是console输出的log,启动过程中输出的log实在太多,关于错误的log很难捕捉到,所以我建议大家将log先输出到文件后再来查找相关的错误信息,我把log输出到文件后查找我们所关注的webapp,vod和live



发现错误信息java.lang.ClassNotFoundException: org.red5.server.scope.WebScope,找不到这个类,这个时候我们回到我们的source folder——src中,看看有没有这个类。可以发现,没有org.red5.server.scope这个文件夹,但是我们可以在org.red5.server文件夹下找到WebScope.java文件,所以不是类不存在,而是它所在的位置变化了,所以我们改变配置文件中这个类的位置就可以了。具体方法是修改red5-web.xml,将其中的org.red5.server.scope.WebScope,修改为org.red5.server. WebScope,这样就可以找到这个类了。按照同样的方法将live这个应用中的red5-web.xml修改,重新启动服务器。





10.下面我们进入demo的调试,首先进入localhost:5080,然后点击launch a demo,然后选择publisher这个demo。





进入到demo后,连接摄像头,将server菜单下location一栏修改为rtmp://localhost/live,然后点击connect,成功后右边会出现10:55:08:880 - Using Adobe Windows Flash Player 11,9,900,170

10:55:18:610 - Connecting to rtmp://localhost/live

10:55:19:821 - NetConnection.Connect.Success

这样的log信息



进入到video菜单,选择你的摄像头,点击start。





成功打开后上面会出现摄像头的图像,然后点击publish,发布成功,记下name栏的streamxxxxxxxxxxxx的内容。

11.最后换一台电脑进行连接测试,看我们的视频是否发布成功。打开浏览器,输入http://你的red5服务器ip地址:5080/,然后进入刚才的publisher这个demo。首先将name栏改为刚才记录的streamxxxxxxxxxxxx,然后location栏改为rtmp://你的red5服务器ip地址/live,然后点击connect,右侧出现

10:55:19:821 - NetConnection.Connect.Success的log信息,最后再点击play,就可以进行摄像头直播了。







到这里就全部结束了。最后提一句,之所以oflademo不能在0.8以上版本成功运行,我发现是因为,0.8以上的版本代码中的接口有变化,而oflademo中并没有就这种变化做出相应的修改,它不像publisher这几个demo一样只需要修改配置文件就可以跑起来,它涉及到了oflademo源代码的修改,所以这里我们就不讨论了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: