Red5 防止盗链可通过调用客户端方法得到主机URI,判断是否在允许范围内,如果不是则断开连接。
具体实现是:Application 必须实现IPendingServiceCallback 接口,通过如下方法调用客户端方法
public boolean appConnect(IConnection conn, Object[] params) { if (conn instanceof IServiceCapableConnection) { //调用客户端代码 IServiceCapableConnection sc = (IServiceCapableConnection) conn; sc.invoke("clientMethod", new Object[]{"One", 1},this); } return super.appConnect(conn, params); }
其中的clientMethod是客户端方法名称,new Object[]{"One", 1}是任意参数,this为必选
并书写接收客户端返回参数的方法
public void resultReceived(IPendingServiceCall arg0) { String host = arg0.getResult().toString(); String allowHost = “http://localhost:28080/redxserver”; boolean allow = false; if(host.indexOf( allowHost)>0){ allow = true; } if(!allow ){ //获取当前的链接 IConnection current = Red5.getConnectionLocal(); current.close(); System.out.println("关闭连接"); }else { System.out.println("不关闭连接"); } }
在播放器as内书写方法
var client1:Object=new Object(); client1.clientMethod=this.clientMethod; _connection.client =client1;
private function clientMethod(str:String,num:Number):String{ var str:String = ExternalInterface.call("window.top.location.href"); return str; }
还要修改BaseRTMPHandler.java中的方法,防止as方法出错了,仍然可以播放。
具体如下
protected void handlePendingCallResult(RTMPConnection conn, Notify invoke) { final IServiceCall call = invoke.getCall(); final IPendingServiceCall pendingCall = conn.retrievePendingCall(invoke.getInvokeId()); if (pendingCall != null) { // The client sent a response to a previously made call. Object[] args = call.getArguments(); if ((args != null) && (args.length > 0)) { // TODO: can a client return multiple results? pendingCall.setResult(args[0]); } Set<IPendingServiceCallback> callbacks = pendingCall.getCallbacks(); if (!callbacks.isEmpty()) { HashSet<IPendingServiceCallback> tmp = new HashSet<IPendingServiceCallback>(); tmp.addAll(callbacks); for (IPendingServiceCallback callback : tmp) { try { callback.resultReceived(pendingCall); } catch (Exception e) { log.error("Error while executing callback {} {}", callback, e); //关闭连接,添加下面两行即可 conn.close(); break; } } } } }
通过以上方法即可实现防止盗链
已经优化了,请看下一篇文章 red5(三) 防止盗链
相关推荐
RED二次开发_Node-RED与AI技术结合.docx RED二次开发_Node-RED与HTTP协议集成.docx RED二次开发_Node-RED与MQTT协议集成.docx RED二次开发_Node-RED与Websocket通信.docx RED二次开发_Node-RED与云平台集成.docx RED...
Red5 1.0 Final是该软件的一个稳定版本,为用户提供了一个可靠的平台来处理多媒体数据。 在整合Red5 1.0 Final与Apache Tomcat时,我们首先要理解这两个组件的角色。Red5作为一个流媒体服务器,负责处理和分发...
Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP),并提供录制、播放、存储等功能,广泛应用于在线视频直播、VoIP、互动游戏等场景。本教程将介绍如何进行Red5的入门学习,并结合Tomcat和MyEclipse进行...
1. **Red5 服务器**:Red5 是一个开源的流媒体服务器,支持 RTMP(Real Time Messaging Protocol)、RTMPT、RTMPE、RTMPTE、RTMPS 协议,用于实时音频、视频传输,以及数据共享。它允许开发者创建互动的媒体应用程序...
Red5是一款开源的流媒体服务器,它允许开发者创建实时的、交互式的富因特网应用程序(Rich Internet Applications,简称RIA)。0.9.1是Red5的一个特定版本,旨在提供稳定性和性能改进,以及可能的新功能。在这个版本...
Red5是一款开源的Java流媒体服务器,它支持实时流传输协议(RTSP)、实时传输协议(RTP)、实时控制协议(RTCP)以及互联网群组管理协议(IGMP),能够处理视频、音频流以及数据应用。Windows版本的Red5允许在Windows操作...
二、Flash开发与Red5结合 1. RTMP协议:Flash与Red5之间的通信主要基于RTMP协议,它允许客户端向服务器发送音频、视频数据流。理解RTMP协议的工作原理对于实现Flash与Red5的交互至关重要。 2. ActionScript 3.0接口...
Red5 Server是一款开源的流媒体服务器,主要用于处理和分发实时数据流,如视频、音频和其他类型的数据。这个"red5-server.zip"压缩包提供了一个免安装版本,使得用户可以在本地快速搭建起一个流媒体服务器,无需复杂...
Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP)、RTMPT、RTMPE、RTMPF、RTMPS等,能够处理音视频的直播、点播和录制等多种应用场景。在本项目中,我们关注的是Red5 1.0的Web版本,该版本特别适合在Web...
Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP)、H.264、Flash视频(FLV)以及其他多种媒体格式。免安装版的Red5是指无需通过传统安装过程,可以直接运行的版本,这对于开发者进行快速测试或者在不同...
《Red5服务器详解及其核心组件——以red5-war-0.8.0.zip中的red5.jar为例》 在IT行业中,尤其是在线媒体流服务领域,Red5是一个非常重要的开源服务器平台。它支持实时流传输协议(RTMP),使得开发者能够构建实时...
标题中的"red5-1.0.0-webapps-demos.zip"表明这是一个关于Red5服务器的Web应用程序示例的压缩包。Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP)、文件录制、播放以及直播等功能。1.0.0是其版本号,...
根据提供的文档信息,本文将详细阐述如何使用FFmpeg和Red5搭建一个RTMP流媒体服务器,以及相关的配置和测试步骤。 首先,了解RTMP(Real Time Messaging Protocol)是一种网络协议,它被广泛用于在线直播和流媒体...
### 基于Red5的流媒体服务器搭建与应用详解 #### 一、Red5概述 **Red5**是一款基于Java开发的开源免费Flash流媒体服务器。它利用Java语言及一系列强大开源框架构建而成,为企业的各类应用提供了坚实的基础。Red5...
#### 二、Red5服务器的主要特点 1. **开源免费**:Red5是基于Java语言编写的开源软件,可以自由地下载、使用和修改。 2. **高度可扩展性**:通过插件机制,开发者可以根据自己的需求定制Red5的功能,满足不同的应用...
Red5的手册中详细介绍了Red5的配置文件,包括jetty.xml、keystore、log4j.properties、realm.properties、tomcat-users.xml、red5.globals、red5.properties、red5.xml、red5-common.xml等。这些配置文件用于配置...
这个"Red5聊天建议系统"显然是基于Red5搭建的一个用于实时聊天的应用示例,对于初学者来说,它是学习如何利用Red5实现类似即时通讯功能的一个很好的起点。 首先,我们需要了解Red5的基本架构。Red5服务器的核心是...
对于开发人员来说,RED5提供了丰富的API和接口,可以使用Java、ActionScript或Flex进行二次开发。例如,你可以创建自定义的流处理服务,实现用户权限控制、内容加密解密等功能。 总结一下,RED5流媒体服务器是一个...