java - 如何将自定义 java 模块加载到 Wowza 流引擎中?
问题描述
我已逐步按照下面的教程进行操作,但是,我创建的模块似乎没有加载或执行,因为我没有看到与 Wowza 流引擎中的 getLogger 调用相关的任何日志条目。更具体地说,我创建了一个包含新模块的新 Wowza 项目(参见下面的代码)。然后 Eclipse 在安装目录的 lib 文件夹中创建了一个 jar 文件。我已将该模块添加到流服务器上的实时应用程序中。我还编辑了 Application.xml 文件以包含新模块。
为了希望运行我编写的模块,我正在使用 ffmpeg(根据此处的文档)将 mp4 文件流式传输到流引擎(通过实时应用程序),我可以在测试播放器中看到。我的理解是,这将触发模块中的至少一个事件侦听器。但是,日志中似乎没有出现任何内容。我可以看到的与流相关的唯一条目如下所示。
很长一段时间以来,我一直在尝试调试出了什么问题,因此我将不胜感激有关可能解决该问题的任何建议。
https://www.wowza.com/docs/How-to-extend-Wowza-Streaming-Engine-using-Java
public class GCStreamModule extends ModuleBase {
public void onAppStart(IApplicationInstance appInstance) {
String fullname = appInstance.getApplication().getName() + "/" + appInstance.getName();
getLogger().info("onAppStart: " + fullname);
}
public void onAppStop(IApplicationInstance appInstance) {
String fullname = appInstance.getApplication().getName() + "/" + appInstance.getName();
getLogger().info("onAppStop: " + fullname);
}
public void onConnect(IClient client, RequestFunction function, AMFDataList params) {
getLogger().info("onConnect: " + client.getClientId());
}
public void onConnectAccept(IClient client) {
getLogger().info("onConnectAccept: " + client.getClientId());
}
public void onConnectReject(IClient client) {
getLogger().info("onConnectReject: " + client.getClientId());
}
public void onDisconnect(IClient client) {
getLogger().info("onDisconnect: " + client.getClientId());
}
public void onStreamCreate(IMediaStream stream) {
getLogger().info("onStreamConnect");
}
public void onMediaStreamCreate(IMediaStream stream){
getLogger().info("onMediaStreamCreate: " + stream.getSrc());
}
}
解决方案
你需要:
- 使用 Wowza IDE 为您的模块构建 jar
- 将其复制到 Wowza SE lib 文件夹(在服务器上)
- 将其添加到部分
- 重新启动应用程序或 Wowza SE 以从新库加载新模块
这是 Application.xml 中的示例模块部分,用于从 lib/videowhisper.jar 加载示例模块:
<Modules>
<Module>
<Name>base</Name>
<Description>Base</Description>
<Class>com.wowza.wms.module.ModuleCore</Class>
</Module>
<Module>
<Name>logging</Name>
<Description>Client Logging</Description>
<Class>com.wowza.wms.module.ModuleClientLogging</Class>
</Module>
<Module>
<Name>flvplayback</Name>
<Description>FLVPlayback</Description>
<Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
</Module>
<Module>
<Name>VideoWhisper</Name>
<Description>VideoWhisper rtmp server side.</Description>
<Class>com.videowhisper.wms.module.VideoWhisper</Class>
</Module>
</Modules>
推荐阅读
- gitlab - Gitlab CI执行错误但管道成功
- sails.js - 如何修复“使用 `sails-mongo` 时,主键必须有 `columnName: '_id'`”
- java - 如何制作 Java 代理/缓存文件系统 (VFS)
- android - 解决后无法更改配置“:testCompile”的策略
- eclipse - 如何配置 Eclipse Content Assist 以便它首先建议 JavaFX 组件?
- mysql - 如何将变量传递给子查询?
- php - 将 JSON 字符串转换为 PHP 代码块
- jboss - 可以将 java 参数分配给 JAVA_OPTS 之间没有空格吗?
- ios - 如何使用 Alamofire 将跑步上传到 Strava 运动员的个人资料
- java - Docker Compose 出现异常