事件未到达 kurento java 服务器

Posted

技术标签:

【中文标题】事件未到达 kurento java 服务器【英文标题】:Events not reaching kurento java server 【发布时间】:2016-03-09 07:08:29 【问题描述】:

我是 Kurento 媒体服务器的新手,我正在尝试将一个事件从 kurento 媒体服务器发送到我拥有的 java 应用程序。

我使用以下步骤创建了一个事件:

编辑了interface json 文件:

"events": [
    "properties": [
        "name": "Total",
        "doc": "Total",
        "type": "float"
    ],
    "extends": "Media",
    "name": "TotalDetected",
    "doc": "Total Detected."
]

然后在我的.hpp 文件中:

sigc::signal<void, TotalDetected> signalTotalDetected;

在我的.cpp 文件中:

try 
    GST_WARNING ("Sending Event: TotalDetected");
    TotalDetected event (shared_from_this(), "Total-detected", total);
        signalTotalDetected (event);
    GST_WARNING ("Sent Event: TotalDetected");
     catch (std::bad_weak_ptr &e)  
    GST_WARNING ("EXCEPTION: Total detected ");

在我的 java 服务器中,我使用以下方法注册了事件:

totalFilter.addTotalDetectedListener(new EventListener<TotalDetectedEvent>() 
    @Override
    public void onEvent(TotalDetectedEvent event) 
        log.info("\n\nTotal Detected Event By:"+event.getTotal());
    
);

但是在完成所有这些之后,我无法从 kms 接收任何事件,我查看了 kms 日志,我正在获取正在发送的事件日志,但我在 java 服务器端没有收到任何事件。

我在代码中遗漏了什么吗?

Edit 1: 在 Eclipse 控制台上我得到了这个日志

[KurentoClient] 请求-> “身份证”:17, “方法”:“订阅”, “参数”: “对象”:“fcffbeb5-4ee0-4b49-ba05-a7bc7e716b2f_kurento.MediaPipeline/cb218dbd-0d4a-48cd-88ee-e6ecaf9f4350_vadcustomfilter.VADCustomFilter”, "type":"TotalReceived", “sessionId”:“67361dad-bce7-4ad6-a4ce-a26090190bad” , “jsonrpc”:“2.0” [KurentoClient]

编辑 2: 以下是dpkg -l | egrep -i "kurento|nice|kms"的输出

ii gstreamer0.10-nice:amd64 -> 0.1.4-1 ii gstreamer1.0-nice:amd64 -> 0.1.4-1 ii gstreamer1.5-nice:amd64 -> 0.1.13.1~20160224182402.77.g7bbb87a.trusty ii kms-cmake-utils -> 1.3.0.trusty ii kms-core-6.0 -> 6.4.0.trusty ii kms-core-6.0-dev -> 6.4.0.trusty ii kms-elements-6.0 -> 6.4.0.trusty ii kms-elements-6.0-dev -> 6.4.0.trusty ii kms-filters-6.0 -> 6.4.0.trusty ii kms-filters-6.0-dev -> 6.4.0.trusty ii kms-jsonrpc-1.0 -> 1.1.0.trusty ii kms-jsonrpc-1.0-dev -> 1.1.0.trusty ii kmsjsoncpp -> 1.6.3~20160119154506.38.g263929e.trusty ii kmsjsoncpp-dev -> 1.6.3~20160119154506.38.g263929e.trusty ii kurento-media-server-6.0 -> 6.4.0.trusty ii kurento-media-server-6.0-dev -> 6.4.0.trusty ii kurento-module-creator-4.0 -> 4.0.4.trusty ii libnice-dev -> 0.1.7.1~20160119154918.10.ge060eb5.trusty ii libnice10:amd64 -> 0.1.7.1~20160119154918.10.ge060eb5.trusty

【问题讨论】:

我试图在我的插件中触发一个事件(向客户端发送响应)。以上步骤是否足以触发事件?或者我想实现“gst 插件”或其他任何东西。我已经提到了一些 kms 过滤器样本。但是我没有得到在事件中发送值的确切步骤(没有得到任何文档)。当我执行上述步骤时,我收到以下错误::“错误'shared_from_this'未在此范围内声明”。注意::: 我正在使用 Opencv 模块。你能帮我做这件事吗?谢谢。 使用 this 而不是 static 方法为 error shared_from_this 并且是从 kms 自定义插件到 java 服务器的 sendign 事件在此处提到的步骤中运行良好。 感谢您的回复。我使用了 OpenCV 模块。当我在“接口”Json 中添加事件并尝试执行 cmake 时,我在对象文件夹中得到了 4 个生成的文件。我必须在哪个 CPP 中进行更改。我有“moduleImpl.cpp、moduleImpl.hpp、moduleOpenCVImpl.cpp 和 moduleOpenCVImpl.hpp”文件。我在“moduleOpenCVImpl.cpp”文件中添加了我的逻辑。你能帮我前进吗? 如果你想从 kms 自定义插件发送事件到 java 服务器然后看看这个例子 github.com/Kurento/kms-platedetector 我猜你的插件是否打开 cv 没有关系 我看过那个例子。在 OpenCV 模块实现文档中,他们提到“前两个文件不应修改。后两个文件将包含您的模块的逻辑”(参考:doc-kurento.readthedocs.org/en/stable/mastering/…)。但在给定的示例中,前两个文件仅针对事件生成和修改(因为 GStreamer 模块)。所以我没有明确的方法在 OpenCV 模块中实现这一点。你对此有什么想法吗? 【参考方案1】:

尝试将您的 libnice 版本升级到 0.1.13,这是某些 ice 候选版本出现错误的原因。让我们看看这是否解决了事件的问题。

【讨论】:

我用 kms 6.5 尝试了我的自定义模块,当 kms 尝试加载模块 undefined symbol: _ZTv0_n80_N7kurento15MediaObjectImpl9SerializeERNS_14JsonSerializerE 时出现此错误【参考方案2】:

一切似乎都很好。您只需要确定事件是否被触发。

如果您通过错误更改警告,则无需配置任何内容即可查看日志。这样你就可以知道事件是否被触发了。

如果您看不到您的日志,您可能在从 GStreamer 元素触发事件或注册来自 cpp 的信号时遇到问题。

【讨论】:

是的,我可以看到日志,但我没有在 java 服务器上收到此事件。 我在 Eclipse 控制台上收到此错误:&lt;-Res "id":19,"error":"code":40401,"message":"Error adding candidate","data":"type":"ICE_ADD_CANDIDATE_ERROR","jsonrpc":"2.0" 当任何客户端连接时Req-&gt; .... "operation":"addIceCandidate .... 您是否已将 kms 软件包更新到版本 6.4.0?您还需要 libnice 版本 0.1.13 @SagarPilkhwal 可能在 Java 上没有收到事件,因为这个错误,它取决于应用程序,但通常他们在收到错误时释放所有内容。正如我所说,尝试升级以避免错误并查看事件是否到达应用程序服务器。 我安装了以下软件包kurento-media-server-6.0, kurento-media-server-6.0-dev, kurento-module-creator-4.0, libnice-dev, libnice10:amd64

以上是关于事件未到达 kurento java 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Kurento媒体服务器抛出“处理方法时出现意外错误:未找到工厂'PlayerEndPoint''”

使用Kurento搭建一个流媒体服务器,实现在网页查看Rtsp流

Kurento - Firefox 无法与位于 wss://<ipaddress>:8433/kurento 的服务器建立连接。

如何在 kurento 媒体服务器中进行 rtmp 流式传输?

如何检查 Kurento 媒体服务器的流量

Kurento 浏览器/webRTC 支持