RED5集成到tomcat,通过外网访问流媒体服务器中的视频时出错~~~真心求知道的朋友指点一下~~~

萌萌的卡洛奇 2014-09-10 08:59:49
这是最近在项目中遇到的问题,以前一直在内网测试,效果良好,自从公司租了租了服务器后,需要通过外网访问,之后问题就接二连三的来了

通过将red5项目集成到tomcat中,然后访问red5服务器中的视频文件时,一直访问不到

现在有一个外网,例如为:183.54.223.123 对应内网为:10.52.85.21

在tomcat中的webapps中,有一个fileList编写的red5服务程序
在fileList 下的WEB-INF/classes中存在一些.xml配置文件,其中需要改变的主要是root-web.xml和red5-core.xml
以下是我的配置文件:
root-web.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

<!-- ROOT web context -->
<bean id="web.context" class="org.red5.server.Context">
<property name="scopeResolver" ref="red5.scopeResolver" />
<property name="clientRegistry" ref="global.clientRegistry" />
<property name="serviceInvoker" ref="global.serviceInvoker" />
<property name="mappingStrategy" ref="global.mappingStrategy" />
</bean>

<bean id="web.scope" class="org.red5.server.WebScope" init-method="register">
<property name="server" ref="red5.server" />
<property name="parent" ref="global.scope" />
<property name="context" ref="web.context" />
<property name="handler" ref="global.handler" />
<property name="contextPath" value="/fileList" />
<property name="virtualHosts" value="10.52.85.21" />
</bean>

<bean id="web.handler" class="com.apps.Application" singleton="true" />

<bean id="streamService.service" class="com.services.StreamService" singleton="true"/>

<bean id="streamFilenameGenerator"
class="streamfile.path.PathBean">
<property name="recordPath" value="/usr/tmp/streams/" />
<property name="playbackPath" value="/usr/tmp/streams/" />
</bean>
</beans>



red5-core.xml
由于太长,我就粘贴需要改动的那个部分


<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">
<!-- This context holds all the networking: mina -->

.......省略部分......

<!-- RTMP Mina Transport -->
<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="rtmpMinaIoHandler" />
<property name="connectors">
<list>
<bean class="java.net.InetSocketAddress">
<constructor-arg index="0" type="java.lang.String"
value="10.52.85.21" />
<constructor-arg index="1" type="int" value="1935" />
</bean>
</list>
</property>
<property name="receiveBufferSize" value="65536" />
<property name="sendBufferSize" value="271360" />
<property name="connectionThreads" value="4" />
<property name="ioThreads" value="16" />
<!-- This is the interval at which the sessions are polled for stats. If mina monitoring is not
enabled, polling will not occur. -->
<property name="jmxPollInterval" value="1000" />
<property name="tcpNoDelay" value="true" />
</bean>

......省略部分......

</beans>



在root-web.xml中指定了流媒体服务器中的文件播放路径-->/usr/tmp/streams,同时我也在此目录下放置了test.flv文件

看其中的IP地址,我这里很疑惑,到底是填写内网地址呢还是外网地址

根据tomcat中的日志red5.log中记录,当使用外网地址时,使用netstat -ntl | more命令查看时,发现1935根本不会开启,同时red5.log中就会出现cannot assign requested address错误
当使用内网时,就不会报错,并且使用命令查看端口时,发现1935是开启的

但是无论通过哪种方法访问 rtmp://183.54.223.123/fileList/test.flv 或者使用 rtmp://10.52.85.21/fileList/test.flv 都不能正常播放
在外部用流媒体播放器是无法播放的,总是说不是指定路径,于是我将一个自己写的测试流媒体播放的播放器放置在项目的tomcat下,通过内部区访问,也是行不通的,同时给我标出的端口竟然是80(如Server not found rtmp://183.54.223.123:80/fileList),证明我不是通过1935访问的(但是在这种情况下,如果上面中的xml文件配置的是内网IP的话,1935应该是打开了的,为什么竟然是通过80端口访问的呢?)

于是我又想是不是外网服务器进入内网中时,有一层防火墙,阻止了1935端口开启,但是打电话去问时,给我的答案是只对80端口进行了部分限制,其它的端口没有限制,同时我使用telnet命令在windows上是能够测通的

这里我已经确认了本机上的防火墙已经把特定的端口开启了,而且我也做过吧防火墙全部关闭过的尝试,但是都没有效果

所以在此特求各位懂的朋友指明一下,谢谢~~~

下面就是fileList中的具体文件图片:
...全文
4443 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
widegoose 2016-04-25
  • 打赏
  • 举报
回复
我也遇到这个问题, 用ip还是不能访问
hunterlew 2016-03-06
  • 打赏
  • 举报
回复
楼主还在吗?急需请教
醉家男煮饺 2015-03-11
  • 打赏
  • 举报
回复
你好,请问一下你的的那个项目中有视频录制功能吗 ?怎么把red5整合到tomcat中的,最近我也在研究red5整合到tomcat中,我的那个项目有视频录制,没集成之前录制的视频生成到 项目名/streams 目录里 但是集成了以后 录制视频不好使了 请问你遇到过这样的情况吗?还有录制视频的路径你怎么改的啊?谢谢啊!
萌萌的卡洛奇 2014-10-15
  • 打赏
  • 举报
回复
引用 3 楼 sxcong 的回复:
red5效率太低,建议用nginx rtmp stream
呵呵,公司采用RED5,我也没办法,毕竟做决定的不是我啊
sxcong 2014-09-17
  • 打赏
  • 举报
回复
red5效率太低,建议用nginx rtmp stream
萌萌的卡洛奇 2014-09-11
  • 打赏
  • 举报
回复
up up up
萌萌的卡洛奇 2014-09-11
  • 打赏
  • 举报
回复
问题自己解决了,将root-web.xml中的内网地址修改为"*,localhost:8080,localhost,127.0.0.1:8080"就可以了 具体分析参看我的博客 http://blog.csdn.net/yuzhongzi81/article/details/39205869
Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备都安装了Node-RED,表明它在工业物联网和控制已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧