从FCS/FMS迁移到red5的指南(1)

migration guide form FCS/FMS  to red 5 :: 从FCS/FMS迁移到red5的指南

 

Author: Joachim Bauch  tranlater:yapollo.li  email:yapollo.li@gmail.com

作者:Joachim Bauch   翻译:yapollo.li 

 

Contents内容介绍:

 

 

 

 

 

 

 

 

序文:

这篇文档描述了 fcs/fms与red5之间的API(应用程序接口)的不同,目的在于帮助那些已经存在于FCS/FMS的应用程序迁移到RED5上,如果你还没有点red5经验,请阅读这方面的指南howto create new applications

应用程序回调

在实现服务器端应用程序的时候一个重要的功能就是通告客户端是否链接,以及当应用程序有新的实例创建的时候能够通知该消息。

Interface IScopeHandler

Red5在接口 IScopeHandler 中指定了这些动作 , 大家可以看它的api文档去进一步了解细节

 

Class ApplicationAdapter

ApplicationAdapter 类介绍:

因于一次请求中一些方法可能被重复的调用(比如:一旦有新客户端链接产生的时,connect方法就会被调用),所以这个类ApplicationAdapter 中定义了许多附加的方法事件

这个类通常被新的应用程序用作基础类

下面是一个一览表,它显示了FCS/FMS应用程序类和red5中ApplicationAdapter方法的对比

FCS / FMS                  Red5

 

onAppStart                  appStart roomStart

onAppStop                             appStop roomStop

appConnect                            roomConnect appJoin roomJoin

onDisconnect                                appDisconnect roomDisconnect appLeave roomLeave

 

你也可以使用ApplicationAdapter去核对流媒体对象,共享对象,或者预定义他们。关于进一步的细节可以参考它的api文档

以app做前缀的方法,是在主应用程序中被调用滴,以room做前缀的方法是在应用程序的房间(也就是实例中)被调用

 

 

链接方法的执行命令

假设你要链接rtmp://server/app/room1/room2

首先 ,建立连接,那么所有链接到room2的用户都能被全部显示,

  1. app (-> appConnect)
  2. room1 (-> roomConnect)
  3. room2 (-> roomConnect)

 

在连接被建立后,客户端对象能被取回,并且如果它(指取回的客户端对象)是第一个被客户端连接到这个作用域的,他就加入该作用域

  1. app (-> appJoin)
  2. room1 (-> roomJoin)      
  3. room2 (-> roomJoin)

 

如果在同一作用域内一个用户建立了第二个(或者多余)链接,那么只有这些连接方法被调用,如果你连接到部分相同作用域内,那么只有部分加入方法被调用

比如:连接 rtmp://server/app/room1/room3 将会触发下面的语句

  1. appConnect("app")
  2. joinConnect("room1")
  3. joinConnect("room3")
  4. roomJoin("room3")

appStart 方法在开启red5服务的时候,当前只能被调用一次,

roomStart 方法在第一个客户端连接到房间的时候被调用

 

接受,拒绝客户端

FCS/FMS 提供了如acceptConnection 和rejectConnection的方法去接受和拒绝新的客户端。对Red5应用程序,允许客户端连接,没有专门的动作是必须得在这种情况下后缀为Connect的方法只是需要返回true

如果客户端不允许去连接,在ApplicationAdapter 类中的rejectClient方法将会被调用,任何被传递给rejectClient的参数都是有效滴,会被看做状态对象的应用程序的属性从而被回调函数返回

 

当前的连接和客户端访问

Red5支持两种不同的方法,从被调用函数中访问当前的连接对象,这个连接对象能被用于获取活跃的客户端和他被连接的作用域。第一个使用 Red5 对象

代码如下:

import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.Red5;
 
public void whoami() {
    IConnection conn = Red5.getConnectionLocal();
    IClient client = conn.getClient();
    IScope scope = conn.getScope();
    // ...
}

第二种需要这个方法被定义一个IConnection类型的参数,同时当一个客户端调用该方法时第一个参数会被red5自动添加,代码如下:

import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
 
public void whoami(IConnection conn) {
    IClient client = conn.getClient();
    IScope scope = conn.getScope();
    // ...
}

Additional handlers

附加事件的处理

对于许多应用程序而言,已经存在的类包含的应用程序逻辑(指那些和red5不相关的)是必须被重复使用的,为了能对那些通过RTMP连接的客户端有效,这些类需要在Red5中作为事件注册。

当前有两个方法去注册这些事件:

1.    通过配置文件去增加他们

2.    通过手工从应用程序中注册他们

这些事件被客户端调用执行的示例代码如下:

nc = new NetConnection();
nc.connect("rtmp://localhost/myapp");
nc.call("handler.method", nc, "Hello world!");

如果一个事件处理器被请求,Red5总是会在检测配置文件环境中的设置的事件处理器之前先去在客户端的作用域范围内寻找它。

Handlers in configuration files

在配置文件中处理事件

这种方法更适用于那些对所有作用域的程序都运行的常见事件

下面是一个事件处理的例子,它的作用是去注册类com.fancycode.red5.HandlerSample

下面的bean 需要加入WEB-INF/red5-web.xml的文件中。

<bean id="sample.service" 
      class="com.fancycode.red5.HandlerSample" 
      singleton="true" />

Note that the id of the bean is constructed as the name of the handler (heresample) and the keyword service.

注意这个bean的id 被构建作为处理器程序和关键字服务的名字

 

 

Handlers from application code

在应用程序中用代码注册事件处理

不同作用域的应用程序使用不同的事件处理,如果想去更改它们,就需要在服务端的代码中注册他们。写在服务端的这些事件处理总会覆盖在red5-web.xml中配置的事件。这些已经注册过的必要函数被命名在IServiceHandlerProvider中,当然IServiceHandlerProvider在ApplicationAdapter类中实现哈

如同上面描述的类文件能被用代码注册的例子如下:

public boolean appStart(IScope app) {
    if (!super.appStart(scope))
        return false;
    
    Object handler = new com.fancycode.red5.HandlerSample();
    app.registerServiceHandler("sample", handler);
    return true;
}
 
注意:在这个例子中,只是这个应用程序的作用域有sample处理程序,而不是子作用域,如果想这个处理程序同样在
房间中起作用,必须在房间的作用域内的
利用MATLAB和Excel对逆流双管热交换器的热性能进行分析。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

从FCS/FMS迁移到red5的指南

migration guide form FCS/FMS  to red 5 :: 从FCS/FMS迁移到red5的指南 Author: Joachim Bauch  tranlater:yapollo.li  email:yapollo.li@gmail.com 作者:JoachimBauch   翻译:yapollo.li   Contents 内容

3273

通信行业CentOS 7内核网络栈优化:高并发连接下UDP/TCP性能调优与系统资源管理

内容概要:本文聚焦于CentOS 7系统在通信行业高并发场景下的性能调优实践,重点围绕内核网络栈优化展开,涵盖UDP/TCP缓冲区调整、文件句柄与连接跟踪表扩容、TIME_WAIT状态复用、软中断分布优化及tuned工具的自动化调优。通过具体配置参数和实际案例(如VoIP软交换系统)深入解析各项调优措施的设计原理与实施效果,有效解决高CPS下丢包、连接失败等问题,并展望了向云化、eBPF等动态智能调优方向的发展趋势。; 适合人群:从事通信系统运维、网络开发或Linux系统性能优化的技术人员,具备一定操作系统和网络基础知识,工作经验1年以上的中初级工程师。; 使用场景及目标:①应用于软交换、媒体网关、信令网关等高并发通信设备的系统调优;②解决UDP丢包、conntrack表满、TCP连接队列溢出等典型性能瓶颈;③提升系统在小包高频、低时延要求场景下的稳定性和吞吐能力。; 阅读建议:建议结合实际生产环境或测试平台同步验证文中配置,重点关注参数背后的物理意义(如BDP、softirq、conntrack机制),并配合ss、conntrack、dmesg等命令进行调优前后对比分析,确保安全可控地实施变更。

Migration guide from FCS/FMS to Red5

Preface This document describes API differences between the Macromedia Flash Communication Server / Flash Media Server 2 and Red5. It aims at helping migrate existing applications to Red5. If you ...

wwj256的专栏 149

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。

从FCS/FMS迁移到red5的指南(3)

    Remoting client 远程调用客户端 类RemotingClient中定义了所有需要通过远程调用协议调用的函数 下面的代码可以做为怎样使用远程调用客户端的例子: import org.red5.server.net.remoting.RemotingClient;   String url = "http://server/path/to/service"...

jayjayjayjayjayjay的专栏 139

【选址和定容】模拟退火改进多目标粒子群算法在分布式电源选址和定容中的应用【IEEE69节点】(Matlab代码实现)

内容概要:本文研究了模拟退火改进多目标粒子群算法在分布式电源选址和定容中的应用,以IEEE69节点配电系统为算例进行仿真分析。通过融合模拟退火算法的强全局搜索能力与粒子群算法的高效局部收敛特性,构建了一种改进的多目标优化算法,用于解决分布式电源在配电网中的最优位置选择与容量配置问题。研究旨在实现多重优化目标,包括最小化网络有功损耗、提升节点电压质量、增强系统运行的经济性与稳定性。文中详细阐述了多目标优化模型的数学构建、算法的改进机制与实现流程,并基于Matlab平台完成了算法编程与仿真验证,结果表明所提方法在求解质量和收敛性能上均优于传统算法。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事配电网规划、分布式能源系统优化、智能优化算法应用等相关领域的科研人员、工程师以及高校研究生。; 使用场景及目标:①解决高比例分布式电源接入背景下配电网的科学规划问题;②为新型电力系统中源网协调设计提供有效的优化工具;③为相关领域的科研工作提供可复现、可拓展的算法模型与仿真代码实例,支持进一步的算法对比与功能升级。; 阅读建议:建议读者结合提供的Matlab代码与IEEE69节点标准数据,动手复现实验结果,深入理解算法的参数设置、迭代过程与多目标折衷分析方法,并可根据实际研究需求修改目标函数或引入新的约束条件以适应不同的应用场景。

从FCS/FMS迁移到red5的指南(2)

注意:在这个例子中,只是这个应用程序的作用域有sample处理程序,而不是子作用域,如果想这个处理程序同样在房间中起作用,必须在房间的作用域内的roomStart方法中注册它。   Calls to client methods 调用客户端的方法 从red5的应用程序中调用客户端方法函数,你首先需要一个当前连接对象作为参考 代码如下: import org.red5.s...

jayjayjayjayjayjay的专栏 161

【详细图文】使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集

使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集,以及MobaXterm使用介绍和linux基础命令介绍。

qq_62844901的博客 3381

深入解析set_clock_groups:异步时钟约束的最佳实践与陷阱规避

本文深入解析了FPGA/芯片设计中set_clock_groups命令在异步时钟约束中的核心作用与最佳实践。文章对比了同步时钟、异步时钟与不重叠时钟的区别,强调了正确使用set_clock_groups避免时序分析陷阱的重要性,并提供了与set_false_path的优先级差异分析及实战规避方法,帮助设计者确保时序收敛与电路可靠性。

weixin_29232121的博客 372

《Red5 用户参考手册》之四:入门第三章 迁移指南

官方最新《Red5 用户参考手册》全套下载地址         本文档介绍了 Macromedia Flash 通信服务器/Adobe Flash 媒体服务器和 Red5 之间的 API 差异,目的是帮助我们将现有的应用转移至 Red5。         如果你还没有基于 Red5 的应用,请先阅读有关创建一个新的 Red5 应用程序的文档。         程序回调         当实

Defonds 的专栏 7204

别再手动写用例了!用AI Agent自动生成测试用例的保姆级实战(附Python代码)

本文详细介绍了如何利用AI Agent技术自动生成测试用例,大幅提升测试工程师的工作效率。通过Python代码实战演示,从环境搭建到核心Agent构建(需求解析、场景挖掘、用例编排),再到与企业工具链(TestRail、Jira)的深度集成,帮助团队实现测试用例的智能化生成与管理。

weixin_30897233的博客 645

从FSC/FMS到RED5移植向导

这个文档描述了Micromedia Flash Communication Server/Flash Media Server2和Red5 API的不同。他的目的是帮助移植现存的应用程序到RED5。   如果你得RED5里还没有应用程序,请读一下如何配置RED5.XML   应用程序回叫函数 当执行服务段应用程序时,一个最重要的功能就是得到客户端连接和断开的通知,然后去创建一个应用程...

wwj256的专栏 135

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一小程序源码

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一系统 系统特点: 目前已接入的 CPS 渠道: 充值:话费充值、电费充值、影视会员充值、会员卡券充值 本地团购:联联周边游 电商平台:京东、拼多多、唯品会、淘宝、抖音美团:外卖、闪购、酒店、到店、优选饿了么:外卖、商超 出行服务:滴滴打车、滴滴加油、滴滴货运、花小猪打车、高德打车、同程打车 连锁餐饮点餐:肯德基、麦当劳、百果园、奈雪的茶、瑞幸咖啡、星巴克、喜茶、汉堡王、必胜客电影票:特价电影票 注意:以上涉及到需要支付的 CPS 渠道,不需要预存!

qq_41837379的博客 3110

Win11安装Office2021

windows11安装office2021。

1万+

migration guide form FCS/FMS to red 5 :: 从FCS/FMS迁移到red5的指南

Author:Joachim Bauch  tranlate:yapollo.li  email:yapollo.li@gmail.com 作者:Joachim Bauch 翻译:yapollo.li email:yapollo.li@gmail.com 内容介绍:PrefaceApplication callbacksInterface IScopeHandlerClass Applicat

759

UE4-(反射)场景采集之场景采集2D

一、场景采集分为两种:场景采集2D、场景采集立方体 场景采集2D:采集2D图片模式。 操作: 1.选择场景采集2D,是一个摄像机的物体,摆放到场景中。 2.在文件夹空白处创建纹理,一定要注意创建纹理的格式, 纹理分为立方体渲染目标和渲染目标,此处我们使用的是2D模式,所以选择渲染目标(Texture Render Target2D)。创建后重命名为RenderTextue2D。 3.选择场景中刚拖入的 SceneCapture2D 摄像机在细节面板的Scene Capture 将..

Stone的博客 4601

red5 java_java 流媒体服务器Red5 FQA

1、 什么是red5?Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:• 把音频(MP3)和视频(FLV)转换成播放流;• 录制客户端播放流(只支持FLV);• 共享对象;• 现场直播流发布;• 远程调用。Red5的官方网站是http://www.osflash.org/,它目前正处在研发阶段,现在发布的测试版本为0.6,它的最终正式版为1.0,red5研发的进...

weixin_39606019的博客 338

【数字孪生工业应用实战】第2篇:数字孪生系统架构设计与技术选型——从“作秀”到“实干”的骨架构建

本文系统剖析了数字孪生系统从“作秀”到“实干”的架构设计关键。针对多数项目在POC转生产时因架构混乱、选型盲目而失败的问题,深入阐述了四层分层架构(感知层、传输层、模型层、应用层)的设计原则,重点解析了感知层的异构适配与边缘预处理、传输层的异步解耦与多模式通信等工程细节。结合OPC UA、MQTT、EdgeX Foundry等主流技术选型对比,以及汽车焊装车间边缘智能网关的实战代码,提供了从零搭建微型孪生系统的完整指导。旨在帮助工程师建立清晰的选型决策逻辑,构建稳定、可演进的数字孪生“骨架”。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 264

EXCEL VBA从入门到精通 第一章:VBA入门

在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。

1万+

red5 FAQ

1、    什么是red5? Red5是一个采用Java开发开源的Flash流媒体服务器。它支持: ·         把音频(MP3)和视频(FLV)转换成播放流; ·         录制客户端播放流(只支持FLV); ·         共享对象; ·         现场直播流发布; ·         远程调用。 Red5的官方网站是http://www.osf...

入海数沙 153

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

抛弃LCDS和FMS,在tomcat下开发Red5应用(第三篇)-ApplicationAdapte

一个完整的应用过程包括(1)应用程序启动。 (2)客户端建立连接。 (3)允许/拒绝客户端连接。 (4)客户端断开连接。(5)应用程序停止。这几个基本的动作。这些动作都在ApplicationAdapter中进行了实现,我们自己写的类只需要继承该类即可。对比FMS的各个过程,具体见Red5的安装安装版的安装目录下的MigrationGuide.txt文件。该迁移向导对比了FMS和Red5在上述过程

This My Life - chisj 1381

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 如何编写高质量的Java代码
下一篇: 从FCS/FMS迁移到red5的指南(2)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值