События не доходят до java-сервера kurento

Я новичок в медиа-сервере 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.

Что-то мне не хватает в коде?

Изменить 1: на консоли eclipse я получаю этот журнал

[KurentoClient]  Req->
   {
       "id":17,
       "method":"subscribe",
       "params":{
          "object":"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]  <-Res 
    {
        "id":17,
        "result":{
            "value":"0f2a346b-49f1-4867-aa7d-45ac3780bbbd",
            "sessionId":"67361dad-bce7-4ad6-a4ce-a26090190bad"
        },
        "jsonrpc":"2.0"
    }

Редактировать 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 

person Sagar Pilkhwal    schedule 09.03.2016    source источник
comment
Я пытаюсь вызвать событие в своем плагине (чтобы отправить ответ клиенту). Достаточно ли описанных выше шагов для запуска события? Или я хочу реализовать плагин gst или что-то еще. Я сослался на несколько образцов фильтров км. Но я не получил точного шага для отправки значения в событии (не получил никакой документации). Когда я делаю вышеуказанные шаги, я получаю следующую ошибку: ошибка shared_from_this не была объявлена ​​в этой области. Примечание ::: Я использую модуль Opencv. Не могли бы вы помочь мне сделать это? Спасибо.   -  person SKK    schedule 04.04.2016
comment
используйте метод this вместо static для error shared_from_this и событие yes sendign из настраиваемого плагина kms на сервер Java хорошо работает в шагах, упомянутых здесь.   -  person Sagar Pilkhwal    schedule 04.04.2016
comment
Спасибо за ответ. Я использовал модуль OpenCV. Когда я добавляю события в интерфейс Json и пытаюсь выполнить cmake, я получил 4 сгенерированных файла в папке объекта. В какой CPP я должен внести изменения. У меня есть файлы moduleImpl.cpp, moduleImpl.hpp, moduleOpenCVImpl.cpp и moduleOpenCVImpl.hpp. Я добавил свою логику в файл moduleOpenCVImpl.cpp. Вы можете помочь мне продвинуться вперед?   -  person SKK    schedule 04.04.2016
comment
если вы хотите отправить событие из настраиваемого плагина kms на сервер Java, взгляните на этот пример github.com/ Kurento / kms-platedetector нет никакого отношения к тому, что ваш плагин открыт cv или нет, я думаю   -  person Sagar Pilkhwal    schedule 04.04.2016
comment
Я смотрел в этом примере. В документации по реализации модуля OpenCV они упомянули, что первые два файла не должны изменяться. Последние два файла будут содержать логику вашего модуля (Ref: doc-kurento.readthedocs.org/en/stable/mastering/). Но в данном примере первые два файла сгенерированы и изменены только для событий (из-за модуля GStreamer). Поэтому у меня не было четкого способа реализовать это в модуле OpenCV. Вы что-нибудь об этом знаете?   -  person SKK    schedule 04.04.2016
comment
Нет, я не работал ни с одним модулем OpenCV, думаю, вам следует задать новый вопрос, кто-то может вам помочь. но я думаю, что для модулей opencv и gstreamer, отправляющих события из плагина в java, будет то же самое   -  person Sagar Pilkhwal    schedule 04.04.2016


Ответы (2)


Попробуйте обновить версию libnice до 0.1.13, это источник ошибок с некоторыми ледяными кандидатами. Посмотрим, решит ли это проблему с событиями.

person santoscadenas    schedule 09.03.2016
comment
Я пробовал свой собственный модуль с kms 6.5. Я получаю эту ошибку, когда kms пытается загрузить модуль undefined symbol: _ZTv0_n80_N7kurento15MediaObjectImpl9SerializeERNS_14JsonSerializerE - person Sagar Pilkhwal; 06.06.2016

Вроде все нормально. Вам просто нужно быть уверенным, что событие запущено.

Если вы измените предупреждения на ошибки, вы сможете просматривать свой журнал, ничего не настраивая. Таким образом вы можете узнать, запускается ли событие.

Если вы не видите свои журналы, возможно, у вас проблемы с запуском события из элемента GStreamer или, возможно, с регистрацией для сигнала из cpp.

person santoscadenas    schedule 09.03.2016
comment
да, я могу просматривать журналы, но я не получаю это событие на сервере Java. - person Sagar Pilkhwal; 09.03.2016
comment
Я получаю эту ошибку на консоли eclipse: <-Res {"id":19,"error":{"code":40401,"message":"Error adding candidate","data":{"type":"ICE_ADD_CANDIDATE_ERROR"}},"jsonrpc":"2.0"}, когда любой клиент подключается Req-> .... "operation":"addIceCandidate .... - person Sagar Pilkhwal; 09.03.2016
comment
Вы обновили пакеты kms до версии 6.4.0? Также вам понадобится libnice версии 0.1.13. - person santoscadenas; 09.03.2016
comment
@SagarPilkhwal, вероятно, события не принимаются на Java, потому что это ошибки, это зависит от приложений, но обычно они выпускают все, когда получают ошибку. Попробуйте выполнить обновление, как я уже сказал, чтобы избежать ошибок и посмотреть, доходит ли событие до сервера приложений. - person santoscadenas; 09.03.2016
comment
У меня установлены следующие пакеты kurento-media-server-6.0, kurento-media-server-6.0-dev, kurento-module-creator-4.0, libnice-dev, libnice10:amd64 - person Sagar Pilkhwal; 09.03.2016
comment
Думаю, иначе ничего не получилось бы :) но какие у этих пакетов версии? - person santoscadenas; 09.03.2016
comment
Просто вставьте вывод этой команды dpkg -l | egrep -i "kurento|nice|kms" - person santoscadenas; 09.03.2016