`
yuzhongzi81
  • 浏览: 3558 次
文章分类
社区版块
存档分类
最新评论

RED5集成到tomcat,通过外网访问流媒体服务器中的视频时出错问题解决

 
阅读更多
这是最近在项目中遇到的问题,以前一直在内网测试,效果良好,自从公司租了租了服务器后,需要通过外网访问,之后问题就接二连三的来了
通过将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="<span style="color:#ff0000;">10.52.85.21</span>" />
	</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="<span style="color:#ff0000;">10.52.85.21</span>" />  
                    <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中就会出现cannotassignrequestedaddress错误
当使用内网时,就不会报错,并且使用命令查看端口时,发现1935是开启的

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

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

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

之后我在linux上部署了一个单独的red5服务器,通过安装其中的案例测试是可以正常播放的,说明外网的1935端口确实是开启的,只是随着red服务器的开启而随之开启,那么当我启动tomcat中的red5服务,经过测试确实1935也是开启了的,到底是哪里出错了?

于是我看了red5中一个测试程序的WEB-INF里面的red5-web.xml文件,发现他填写的地址竟然是"*,localhost:8080,localhost,127.0.0.1:8080",而不是对应的内网IP

那么是否意味着在tomcat中的red5服务也是要这么配置呢,于是我修改了root-web.xml文件中的内网地址,将其改为"*,localhost:8080,localhost,127.0.0.1:8080",测试通过,可以完美播放视频了

根据我的理解,应该是当你在浏览器或者流媒体视频播放器输入外网地址时,而配置文件总根本就找不到对应的外网地址,因为此时你配的是内网地址,所以根据也就找不到对应的tomcat中的red5服务,更谈不上调用red5服务播放视频了,而当填写的是"*,localhost:8080,localhost,127.0.0.1:8080"时,由于是接受所有访问地址,因此找到对应的fileList服务,同时将此地址转换成内网地址绑定到1935端口上,于是就可以正常播放了

分享到:
评论

相关推荐

    将red5集成到Tomcat服务器中

    将Red5集成到Tomcat服务器是一项常见的操作,...通过以上步骤,你可以成功地将Red5集成到Tomcat服务器,并开发基于Flex的流媒体应用。这使得在同一个服务器环境中管理Web应用和服务成为可能,简化了部署和管理流程。

    red5 与 tomcat项目集成

    1. **Red5 服务器**:Red5 是一个开源的流媒体服务器,支持 RTMP(Real Time Messaging Protocol)、RTMPT、RTMPE、RTMPTE、RTMPS 协议,用于实时音频、视频传输,以及数据共享。它允许开发者创建互动的媒体应用程序...

    基于 Red5 的流媒体服务器的搭建和应用

    ### 基于Red5的流媒体服务器搭建与应用详解 #### 一、Red5概述 **Red5**是一款基于Java开发的开源免费Flash流媒体服务器。它利用Java语言及一系列强大开源框架构建而成,为企业的各类应用提供了坚实的基础。Red5...

    Red5集成到Tomcat

    Red5集成到Tomcat demo 文档说明

    Red5-1.0-RC1集成到tomcat详细步骤

    在IT行业中,将Red5-1.0-RC1集成到Tomcat服务器是一个常见的操作,主要目的是为了利用Red5的实时流媒体服务功能,结合Tomcat的稳定性和广泛支持,搭建一个高效、可靠的流媒体发布和播放平台。下面将详细阐述这个过程...

    red5流媒体服务器

    通过以上对Red5流媒体服务器的详细介绍,我们可以看到它在在线直播和点播服务中的重要角色,以及在开发和应用过程中需要注意的关键点。对于需要构建自己的流媒体平台的开发者来说,Red5是一个值得考虑的开源解决方案...

    RED5流媒体服务器

    RED5流媒体服务器是一款开源的Java技术实现的流媒体服务器,它支持实时传输协议(RTMP)、RTMFP(Adobe的P2P协议)、HLS(High-Level Streaming)等多种流媒体协议,广泛应用于在线视频直播、点播服务。在本教程中,我们将...

    利用red5和ffmpeg搭建rtmp流媒体服务器

    通过以上步骤,您就成功搭建了一个基于FFmpeg和Red5的RTMP流媒体服务器,可以为VLC播放器、Web页面提供实时视频流服务。在此过程中,你可能会遇到各种配置和环境问题,需要根据实际情况调整配置,确保服务能顺利运行...

    red5入门,tomcat+red5+myeclipse集成,原创禁止转载

    Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP),并提供录制、播放、存储等功能,广泛应用于在线视频直播、VoIP、互动游戏等场景。本教程将介绍如何进行Red5的入门学习,并结合Tomcat和MyEclipse进行...

    搭建red5流媒体服务器1

    - [RED5 集成到 tomcat,通过外网访问流媒体服务器中的视频时出错问题解决](http://blog.csdn.net/yuzhongzi81/article/details/39205869) - [red5 视频直播初探]...

    RED5流媒体服务器(解压直接运行即可)

    RED5流媒体服务器是一款强大的基于Java开发的开源流媒体服务器,专为支持基于Flash的流媒体服务而设计。它的出现使得开发者和企业能够构建自定义的流媒体解决方案,包括视频直播、点播、录制和回放等功能。RED5提供...

    本项目是由springboot构建的red5流媒体服务器 服务添加了hls支持http请求支持

    本项目是由springboot构建的red5流媒体服务器。服务添加了hls支持http请求支持。red5_hls是对red5的1.1.1版本进行springboot整合,整合后直接使用springboot进行启动和管理。打jar包运行。目前通过实时推流测试。该...

    Red5-1.0-Final集成到tomcat的配置文件和打好的war可直接使用

    总之,将Red5 1.0 Final集成到Tomcat服务器中,能够创建一个功能强大的流媒体解决方案,允许开发者和企业构建丰富的交互式多媒体应用。正确配置和管理这个集成,可以确保稳定、高效地提供流媒体服务。

    tomcat整合red5

    通过本文的学习,我们不仅了解了如何将Red5整合到Tomcat中,还深入了解了Red5的功能特点及其优势。这对于想要搭建实时音视频传输系统的开发者来说,具有非常重要的参考价值。希望本文能帮助大家更好地理解和掌握Red5...

    red5流媒体服务器入门基础

    Red5流媒体服务器入门基础,其中附带例子聊天系统

    Red5流媒体服务器

    【Red5流媒体服务器】是基于Java开发的开源流媒体服务器,主要支持RTMP(实时消息传输协议)来实现Flash客户端与服务器之间的交互。Red5提供了视频、音频流的传输,以及Remote Shared Object等功能,与Adobe的FMS...

    red5部署到tomcat需要的jar包

    在将Red5流媒体服务器部署到Tomcat应用服务器时,我们需要了解一些关键的步骤和所需的依赖库。Red5是一款开源的Java实现的流媒体服务器,它支持RTMP、HLS、RTSP等协议,用于实时音频、视频流的发布、播放和录制。而...

    red5 1.0.7整合tomcat6+maven+oflaDemos

    标题中的"red5 1.0.7整合tomcat6+maven+oflaDemos"涉及到的是一个关于搭建和配置Red5服务器的教程,其中包含了使用Maven构建工具以及OFLA Demos的实践。Red5是一个开源的流媒体服务器,能够处理音频、视频、数据和...

    red5-server-1.0.1.zip 流媒体服务器

    Red5是一款开源的流媒体服务器软件,主要功能是支持实时音视频流的录制、播放和存储。它基于Java技术开发,因此具备跨平台的特性,能够在多种操作系统上运行,包括Windows、Linux和Mac OS等。Red5 1.0.1版本是该软件...

Global site tag (gtag.js) - Google Analytics