Giter Site home page Giter Site logo

bugtracker's Introduction

Kurento logo

Kurento Media Server

๐Ÿ Homepage ๐Ÿ“šDocumentation Docker Pulls
GitHub commits GitHub contributors Stack Exchange questions
Sourcegraph

Kurento Media Server is responsible for media transmission, processing, loading and recording. It is implemented in low level technologies based on the GStreamer multimedia toolkit, and provides the following features:

  • Networked streaming protocols, including HTTP, RTP and WebRTC.
  • Group communications (MCU and SFU functionality) supporting both media mixing and media routing/dispatching.
  • Generic support for Computer Vision and Augmented Reality filters (OpenCV).
  • Media storage supporting writing operations for WebM and MP4 and playback in all formats supported by GStreamer.
  • Automatic media transcoding between any of the codecs supported by GStreamer including VP8, H.264, H.263, AMR, OPUS, Speex, G.711, etc.

Project status

Caution

This project is on bare minimum maintenance mode.

There are no major new features planned for Kurento, and even minor issues may take some time to be addressed.

Kurento won't implement several WebRTC features such as Simulcast, End-To-End Encryption, Insertable Streams, or even support for more than 1 video + 1 audio in the same WebRTC peer connection.

For new videoconferencing projects we recommend to build on top of a higher-level platform such as OpenVidu (from the same team as Kurento). It hides to some extent the sheer complexity of scalable WebRTC systems, and allows you to focus on your app instead.

If you're just looking for a bare-bones, low-level WebRTC SFU like Kurento, mediasoup is a very good, modern and actively developed alternative.

FIWARE Platform

FIWARE Chapter FIWARE Member Status ๐ŸŽ“ FIWARE Academy

The Kurento project is part of FIWARE. For more information check the FIWARE documentation for Real-Time Media Stream Processing.

Kurento has been rated within FIWARE as follows:

  • Version Tested:
  • Documentation:
  • Responsiveness:
  • FIWARE Testing:

Kurento is also part of the NUBOMEDIA research initiative.

The Open API specification, also known as Kurento Protocol, is available at Stream-oriented Open API.

Documentation

Kurento provides detailed Documentation including tutorials, installation and development guides.

Useful Links

Usage:

Issues:

News:

Training:

Testing

Kurento has a full set of different tests mainly focused in the integrated and system tests, more specifically e2e tests that anyone can run to assess different parts of Kurento, namely functional, stability, tutorials, and API.

In order to assess properly Kurento from a final user perspective, a rich suite of E2E tests has been designed and implemented. To that aim, the Kurento Testing Framework (KTF) has been created. KTF is a part of the Kurento project aimed to carry out end-to-end (E2E) tests for Kurento. KTF has been implemented on the top of two well-known open-source testing frameworks: JUnit and Selenium.

If you want to know more about the Kurento Testing Framework and how to run all the available tests for Kurento you will find more information in Kurento developers documentation > Testing.

License

License badge

Copyright 2023 Kurento

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

bugtracker's People

Contributors

bonigarcia avatar igracia avatar j1elo avatar javierlopezfernandez avatar jcaden avatar rbenitez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bugtracker's Issues

Not able to get multiple WebRTC streams from different Kurento Media Servers to a single Browser

I'm having a very odd issue trying to get a single Browser (
latest Chrome and latest Firefox)
to receive WebRTC video from multiple Kurento Media Servers
(observed both in 6.1.1 and 6.0.1 as I have skipped 6.1.0).

It appears for a given browser page, I can only get media displayed
for the first Kurento Media Server that goes toward it.

For example, if I had:

KMS1 with WebRTC stream A and WebRTC stream B
and
KMS2 with stream X

If my browser page views A first, then it can also view B
when I add B.
However, it won't be able to see stream X when I try to add X.

THen if I remove the disconnect from the streams A and B,
then try to connect to X, then I would be able to see X.
But then trying to connect back to A and B, I don't see media
for those. In this example, I have a 2 vs. 1, but it appears any number for those
two are applicable.

Now, the really interesting part is that this behavior is true for both
Kurento H.264 on Ubuntu and Mac OS (Firefox or Chrome) .
However, if I use VP8 (Chrome) on Kurento, I see that this issue doesn't
exist for Mac OS client (but does exist for latest Ubuntu client).

Is there any explanation you can think of for this behavior?

Analyzing the working SDP vs. non-working SDP (remote and local),
I don't see any big difference. And the byte counts show 0
from about:webrtc for the test webcams that generate the data.


This is mainly a copy and paste from my post in kurento groups. Sorry I didn't have time to embeillish it but over time I may come back if I find more time to gather more info. Thanks.

Types are not correctly registered in js when there are name collisions in different modules

I created a Node.js process that uses the Kurento Client (for KMS version 6.0)
who prompts the user to select one of the four of the kurento filters (platedetector, crowddetector, chroma, and pointerdetector)
for application on their live webcam and then applies the selected fitler.

However, one problem I've noticed is that registering both the chroma and pointerdetector filter
will cause the Kurento Media Server to crash when trying to create the Filter Endpoint for
whichever shows up earlier in the register calls.

For example, if I did:

var kurento = require('kurento-client');
kurento.register('kurento-module-platedetector');
kurento.register('kurento-module-crowddetector');
kurento.register('kurento-module-chroma');
kurento.register('kurento-module-pointerdetector');

And then tried to do create a Chroma Filter Endpoint, the Kurento Media Server would crash
(wheras the PointerDetector would work fine).

If I swap their order in the register list, then trying to create a PointerDetector Filter Endpoint would
cause the Kurento Media Server to crash (whereas the Chroma Filter would work fine).

By the way, the other 2 Filters (platedetector and crowddetector) always seems to work regardless of the register order.

This problem happens on both KMS 6.0.1 and 6.1.1 which are the ony two versions I tried.

Here's the result of the gdb on core dump when I try to select the PointerDetectorFilter
with this register order

kurento.register('kurento-module-platedetector');
kurento.register('kurento-module-crowddetector');
kurento.register('kurento-module-pointerdetector');
kurento.register('kurento-module-chroma');

:

tsonghong@yu:/tmp/cores$ sudo gdb /usr/bin/kurento-media-server core.kurento-media-s.25810.yu.1443153635
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/kurento-media-server...(no debugging symbols found)...done.

warning: core file may not match specified executable file.
...


[New LWP 26896]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/kurento-media-server'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f9c49eb3f7e in kurento::module::pointerdetector::PointerDetectorFilterImpl::PointerDetectorFilterImpl(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::shared_ptr<kurento::MediaPipeline>, std::shared_ptr<kurento::module::pointerdetector::WindowParam>, std::vector<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam>, std::allocator<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam> > > const&) ()
   from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
Traceback (most recent call last):
  File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
(gdb) bt
#0  0x00007f9c49eb3f7e in kurento::module::pointerdetector::PointerDetectorFilterImpl::PointerDetectorFilterImpl(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::shared_ptr<kurento::MediaPipeline>, std::shared_ptr<kurento::module::pointerdetector::WindowParam>, std::vector<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam>, std::allocator<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam> > > const&) ()
   from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
#1  0x00007f9c49eb45d8 in kurento::module::pointerdetector::PointerDetectorFilterImplFactory::createObject(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::shared_ptr<kurento::MediaPipeline>, std::shared_ptr<kurento::module::pointerdetector::WindowParam>, std::vector<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam>, std::allocator<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam> > > const&) const ()
   from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
#2  0x00007f9c49eb7bbc in kurento::module::pointerdetector::PointerDetectorFilterImplFactory::createObjectPointer(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, Json::Value const&) const () from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
#3  0x00007f9c52313f40 in kurento::Factory::createObject(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::string const&, Json::Value const&) const () from /usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6
#4  0x00000000004dfe6b in kurento::ServerMethods::create(Json::Value const&, Json::Value&) ()
#5  0x00007f9c5208703f in kurento::JsonRpc::Handler::process(Json::Value const&, Json::Value&) () from /usr/lib/x86_64-linux-gnu/libjsonrpc.so.1
#6  0x00007f9c52087f00 in kurento::JsonRpc::Handler::process(std::string const&, std::string&) () from /usr/lib/x86_64-linux-gnu/libjsonrpc.so.1
#7  0x000000000054e4a7 in void kurento::WebSocketTransport::processMessage<websocketpp::server<websocketpp::config::asio> >(websocketpp::server<websocketpp::config::asio>*, std::weak_ptr<void>, websocketpp::server<websocketpp::config::asio>::message_ptr) ()
#8  0x00000000005336cc in std::_Function_handler<void (std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >), std::_Bind<std::_Mem_fn<void (kurento::WebSocketTransport::*)(websocketpp::server<websocketpp::config::asio>*, std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >)> (kurento::WebSocketTransport*, websocketpp::server<websocketpp::config::asio>*, std::_Placeholder<1>, std::_Placeholder<2>)> >::_M_invoke(std::_Any_data const&, std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >) ()
#9  0x00000000005558b1 in std::function<void (std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >)>::operator()(std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >) const ()
#10 0x0000000000562a8f in websocketpp::connection<websocketpp::config::asio>::handle_read_frame(std::error_code const&, unsigned long) ()
#11 0x000000000054d2e2 in websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::handle_async_read(boost::system::error_code const&, unsigned long) ()
#12 0x00000000005330ec in boost::asio::detail::completion_handler<boost::asio::detail::binder2<std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::system::error_code, unsigned long> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) ()
#13 0x000000000055a4bd in void boost::asio::detail::strand_service::dispatch<boost::asio::detail::binder2<std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::system::error_code, unsigned long> >(boost::asio::detail::strand_service::strand_impl*&, boost::asio::detail::binder2<std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::system::error_code, unsigned long>&) ()
#14 0x000000000055a5a6 in std::_Function_handler<void (boost::system::error_code const&, unsigned long), boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::asio::detail::is_continuation_if_running> >::_M_invoke(std::_Any_data const&, boost::system::error_code const&, unsigned long) ()
#15 0x0000000000561f23 in boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::a---Type <return> to continue, or q <return> to quit---
sio::mutable_buffers_1, boost::asio::detail::transfer_at_least_t, websocketpp::transport::asio::custom_alloc_handler<std::function<void (boost::system::error_code const&, unsigned long)> > >::operator()(boost::system::error_code const&, unsigned long, int) ()
#16 0x000000000056483e in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_at_least_t, websocketpp::transport::asio::custom_alloc_handler<std::function<void (boost::system::error_code const&, unsigned long)> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) ()
#17 0x000000000052fa64 in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
#18 0x0000000000520951 in kurento::WebSocketTransport::run() ()
#19 0x00007f9c506c3a40 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#20 0x00007f9c52606182 in start_thread (arg=0x7f9a3142a700) at pthread_create.c:312
#21 0x00007f9c4fe2b47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb)

(gdb) where full
#0  0x00007f9c49eb3f7e in kurento::module::pointerdetector::PointerDetectorFilterImpl::PointerDetectorFilterImpl(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::shared_ptr<kurento::MediaPipeline>, std::shared_ptr<kurento::module::pointerdetector::WindowParam>, std::vector<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam>, std::allocator<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam> > > const&) ()
   from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
No symbol table info available.
#1  0x00007f9c49eb45d8 in kurento::module::pointerdetector::PointerDetectorFilterImplFactory::createObject(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::shared_ptr<kurento::MediaPipeline>, std::shared_ptr<kurento::module::pointerdetector::WindowParam>, std::vector<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam>, std::allocator<std::shared_ptr<kurento::module::pointerdetector::PointerDetectorWindowMediaParam> > > const&) const ()
   from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
No symbol table info available.
#2  0x00007f9c49eb7bbc in kurento::module::pointerdetector::PointerDetectorFilterImplFactory::createObjectPointer(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, Json::Value const&) const () from /usr/lib/x86_64-linux-gnu/libkmspointerdetectorimpl.so.6
No symbol table info available.
#3  0x00007f9c52313f40 in kurento::Factory::createObject(boost::property_tree::basic_ptree<std::string, std::string, std::less<std::string> > const&, std::string const&, Json::Value const&) const () from /usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6
No symbol table info available.
#4  0x00000000004dfe6b in kurento::ServerMethods::create(Json::Value const&, Json::Value&) ()
No symbol table info available.
#5  0x00007f9c5208703f in kurento::JsonRpc::Handler::process(Json::Value const&, Json::Value&) () from /usr/lib/x86_64-linux-gnu/libjsonrpc.so.1
No symbol table info available.
#6  0x00007f9c52087f00 in kurento::JsonRpc::Handler::process(std::string const&, std::string&) () from /usr/lib/x86_64-linux-gnu/libjsonrpc.so.1
No symbol table info available.
#7  0x000000000054e4a7 in void kurento::WebSocketTransport::processMessage<websocketpp::server<websocketpp::config::asio> >(websocketpp::server<websocketpp::config::asio>*, std::weak_ptr<void>, websocketpp::server<websocketpp::config::asio>::message_ptr) ()
No symbol table info available.
#8  0x00000000005336cc in std::_Function_handler<void (std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >), std::_Bind<std::_Mem_fn<void (kurento::WebSocketTransport::*)(websocketpp::server<websocketpp::config::asio>*, std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >)> (kurento::WebSocketTransport*, websocketpp::server<websocketpp::config::asio>*, std::_Placeholder<1>, std::_Placeholder<2>)> >::_M_invoke(std::_Any_data const&, std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >) ()
No symbol table info available.
#9  0x00000000005558b1 in std::function<void (std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >)>::operator()(std::weak_ptr<void>, std::shared_ptr<websocketpp::message_buffer::message<websocketpp::message_buffer::alloc::con_msg_manager> >) const ()
No symbol table info available.
#10 0x0000000000562a8f in websocketpp::connection<websocketpp::config::asio>::handle_read_frame(std::error_code const&, unsigned long) ()
No symbol table info available.
#11 0x000000000054d2e2 in websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::handle_async_read(boost::system::error_code const&, unsigned long) ()
No symbol table info available.
#12 0x00000000005330ec in boost::asio::detail::completion_handler<boost::asio::detail::binder2<std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::system::error_code, unsigned long> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::---Type <return> to continue, or q <return> to quit---
task_io_service_operation*, boost::system::error_code const&, unsigned long) ()
No symbol table info available.
#13 0x000000000055a4bd in void boost::asio::detail::strand_service::dispatch<boost::asio::detail::binder2<std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::system::error_code, unsigned long> >(boost::asio::detail::strand_service::strand_impl*&, boost::asio::detail::binder2<std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::system::error_code, unsigned long>&) ()
No symbol table info available.
#14 0x000000000055a5a6 in std::_Function_handler<void (boost::system::error_code const&, unsigned long), boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, std::_Bind<std::_Mem_fn<void (websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config>::*)(boost::system::error_code const&, unsigned long)> (std::shared_ptr<websocketpp::transport::asio::connection<websocketpp::config::asio::transport_config> >, std::_Placeholder<1>, std::_Placeholder<2>)>, boost::asio::detail::is_continuation_if_running> >::_M_invoke(std::_Any_data const&, boost::system::error_code const&, unsigned long) ()
No symbol table info available.
#15 0x0000000000561f23 in boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_at_least_t, websocketpp::transport::asio::custom_alloc_handler<std::function<void (boost::system::error_code const&, unsigned long)> > >::operator()(boost::system::error_code const&, unsigned long, int) ()
No symbol table info available.
#16 0x000000000056483e in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_at_least_t, websocketpp::transport::asio::custom_alloc_handler<std::function<void (boost::system::error_code const&, unsigned long)> > > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) ()
No symbol table info available.
#17 0x000000000052fa64 in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
No symbol table info available.
#18 0x0000000000520951 in kurento::WebSocketTransport::run() ()
No symbol table info available.
#19 0x00007f9c506c3a40 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#20 0x00007f9c52606182 in start_thread (arg=0x7f9a3142a700) at pthread_create.c:312
        __res = <optimized out>
        pd = 0x7f9a3142a700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140300228142848, 7420177177097261475, 0, 0, 140300228143552, 140300228142848, -7364052446146473565, -7367494175881834077},
              mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#21 0x00007f9c4fe2b47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.
(gdb) 

Unable to install old versions / Binary distribution not available

I need to install an old version (6.2.0) because latest version does not support TURN, and we need it. It appears that the ubuntu package repo does not contain old binary versions.
This is very annoying because:

  • Does not allow to downgrade
  • Does not allow to replicate a working 6.2.0 install on another server

I tried to build the old version from source, but I'm having issues, which are out of scope here. Anyway, you should provide old versions.

If you don't want to let them in the repo, please provide them in an archival form. Anyway, standard deb practice is to leave old version in the repo, in order to not break apt on existing installations.

Node Tutorial one to Many has no loading the remote server Stream Spinner moving endless

Hello , I am new to using Kurrento required in project , but as i clone the tutorial given on git hub for Kurento and following the instruction for one2Many call . First of all there is broken packages fro adapter.js as i successfully resolved them but after that there is an issue i.e my webcam is running well and i am able to see my side stream but not able to see the remote stream there is spinner moving endless.

And also there are two error as i see on console of my chrome i.e:-

1)Failed to parse SessionDescription. m=audio 0 UDP/TLS/RTP/SAVPF Expects at least 4 fields.
2)Uncaught (in promise) Failed to parse SessionDescription. m=audio 0 UDP/TLS/RTP/SAVPF Expects at least 4 fields.

Please help me to out from this situation .
Any help would be appreciated.
Thanks

adapter.js dependency broken in tutorial-js

webrtc/adapter has decided to stop publishing a built adapter.js file. The bower dependency has a loose requirement of "*", but should be restricted to something like 0.2.9 for adapter.js until that project can publish a built adapter.js file or the tutorials come up with instructions to build it.

https://github.com/webrtc/adapter/issues/206

kurento-tutorial-js/kurento-recorder/bower.json

  "dependencies": { 
    "adapter.js": "*",
    "bootstrap": "~3.3.0",
    "ekko-lightbox": "~3.3.0",
    "demo-console": "1.5.1",
    "kurento-client": "6.2.0",
    "kurento-utils": "6.2.0"
  } 

Composite recording problems

Backgrounds

Composite is used only to record video from one user and audio for the rest of logged on users.

Composite is not used to deliver video nor audio to the logged on users, these negotiate independent WebRTC stream for each logged on user with the KMS

Detailed description

I have made several tests involving composite & hubport creation order:

  • Creating the composite when there are, at least, two logged on users
  • Creating the composite when creating pipeline but recorder when there are, at least, two logged on users
  • Defer hubport creation when there are, at least, two logged on users

In all these cases I can see a "black screen and no audio" during several seconds, the number of seconds is equal to the ellapsed time between "pipeline creation" and all "composite-recording infraestructure" initialization.

Apparently it should work if I create all "composite-recording infraestructure" when creating pipeline, and delaying recording to the moment that there are "at-least" two logged-on users. Unfortunately I have seen inconsistent behavior and also black screen.

Comparison with standalone recording features

If recorder is created for an individual webrtc stream (audio or audio&video) these problems not appear, you can create recorder whenever you want.

Workaround

Record each file in an indepedent way, use ffmpeg to combine files, invoking it from an embedded REST Server - as Jersey -

More information

This issue and detailed information could be seen in https://groups.google.com/forum/#!topic/kurento/FgHTaRYyp80

Removing not supported codec 'OPUS/48000/2'

From https://groups.google.com/forum/#!topic/kurento/NiqUtyXgZPw

Ubuntu: 14.04
kurento-media-server-6.0: 6.3.1.trusty
kms-core-6.0: 6.3.0.trusty
App server is the Hello World tutorial from git, version 6.1.0.

KMS incorrectly rejects OPUS when responding to this SDP offer:

v=0
o=- 1453762830611886000 1 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 9 UDP/TLS/RTP/SAVPF 111 8 0
c=IN IP4 0.0.0.0
a=rtcp-mux
a=sendrecv
a=rtpmap:111 OPUS/48000/2
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=ice-ufrag:ZfjL
a=ice-pwd:wiaY1VPsHvoJuKehvpHvcd
a=candidate:1 1 UDP 2013266431 192.168.0.109 62741 typ host
a=candidate:2 1 TCP 1019216383 192.168.0.109 0 typ host tcptype active
a=candidate:3 1 TCP 1015022079 192.168.0.109 59776 typ host tcptype passive
a=candidate:4 1 UDP 2013266431 21.57.2.200 59013 typ host
a=candidate:5 1 TCP 1019216383 21.57.2.200 0 typ host tcptype active
a=candidate:6 1 TCP 1015022079 21.57.2.200 59777 typ host tcptype passive
a=candidate:7 1 UDP 1677722111 104.193.168.123 62741 typ srflx raddr 192.168.0.109 rport 62741
a=candidate:8 1 TCP 847249919 104.193.168.123 0 typ srflx raddr 192.168.0.109 rport 0 tcptype active
a=candidate:9 1 TCP 843055615 104.193.168.123 59776 typ srflx raddr 192.168.0.109 rport 59776 tcptype passive
a=candidate:10 1 UDP 167772671 52.34.12.79 52204 typ relay raddr 192.168.0.109 rport 62741
a=candidate:11 1 UDP 1677722111 172.56.38.55 23575 typ srflx raddr 21.57.2.200 rport 59013
a=candidate:12 1 TCP 847249919 172.56.38.55 0 typ srflx raddr 21.57.2.200 rport 0 tcptype active
a=candidate:13 1 TCP 843055615 172.56.38.55 59777 typ srflx raddr 21.57.2.200 rport 59777 tcptype passive
a=candidate:14 1 UDP 167772671 52.34.12.79 52540 typ relay raddr 21.57.2.200 rport 59013
a=fingerprint:sha-256 1B:9B:75:82:12:6F:62:6E:13:9D:44:08:98:FD:1B:B7:59:90:42:D9:21:B5:D5:BF:2D:12:A2:5E:42:D6:1B:32
a=setup:actpass

The following messages appear in the logs:

2016-01-26 06:01:11,240765 29536 [0x00007f7d93fff700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:68 remove_not_supported_codecs_from_array() Removing not supported codec 'OPUS/48000/2'
2016-01-26 06:01:11,241005 29536 [0x00007f7d93fff700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:68 remove_not_supported_codecs_from_array() Removing not supported codec 'AMR/8000'
2016-01-26 06:01:11,241133 29536 [0x00007f7d93fff700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:68 remove_not_supported_codecs_from_array() Removing not supported codec 'H264/90000'

Here is SdpEndpoint.conf.json:

{
"numAudioMedias" : 1,
"numVideoMedias" : 1,
"audioCodecs" : [
{
"name" : "OPUS/48000/2"
// Next is an example about how a codec can be configured.
// WARNING: Usage of properties is not yet supported
// "properties" : {
// "maxcodedaudiobandwidth" : "16000",
// "maxaveragebitrate" : "20000",
// "stereo": "1",
// "useinbandfec" : "1",
// "usedtx" : "0"
// }
},
{
"name" : "PCMU/8000"
},
{
"name" : "AMR/8000"
}
],
"videoCodecs" : [
{
"name" : "VP8/90000"
},
{
"name" : "H264/90000"
}
]
}

sdp_pattern.txt:

v=0
o=- 0 0 IN IP4 0.0.0.0
s=Kurento Media Server
c=IN IP4 0.0.0.0
t=0 0
m=audio 0 RTP/AVP 111 99 0
a=rtpmap:111 OPUS/48000/2
a=rtpmap:99 AMR/8000/1
a=rtpmap:0 PCMU/8000
m=video 0 RTP/AVP 96 97 100 101
a=rtpmap:96 H263-1998/90000
a=rtpmap:97 VP8/90000
a=rtpmap:100 MP4V-ES/90000
a=rtpmap:101 H264/90000

Feature request for RecorderEndpoint and Kurento Repository

Hi! First of all thanks for your support, Kurento team has been awesome until now.

Some days ago I reported that videos recorded to Kurento Repository were creating non seekable videos. Mainly because the headers were being written in the beginning of the file and, on recording stop those headers would need to change.

I suggested adding an option to store the video only when finished recording, but I don't know if the following suggestion would be better.

If the recorder already knows the duration when starts recording, is it needed to update the header when it ends?

By the way I am very happy with your support, how can I donate you? You really deserve it.

KMS 6.4.1~1.g3ffe480, kurento-repository 6.3.1-SNAPSHOT, Ubuntu Server 14.04 LTS -- Canโ€™t seek recorded video from kurento repository

Hi!
I can't seek recorded videos through player.setPosition(...), player.getVideoInfo().getIsSeekable() always returns false.

Those are my dependencies:
libraryDependencies += "org.kurento" % "kurento-java" % "6.3.0"
libraryDependencies += "org.kurento" % "kurento-client" % "6.3.0"
libraryDependencies += "org.kurento" % "kurento-repository-client" % "6.3.0"

Thanks ;-)

Kurento Room Destroy not releasing resources

Hi,

In group call when room is destroyed resources are not getting released though release() method called in close() when its called in pre-destroy. I don't even see the logs printed in close method.

recorderEndpoint.release();
if (hubPort != null) {
hubPort.release();
}

if (composite != null) {
    composite.release();
}

pipeline.release(new Continuation() {

  @Override
  public void onSuccess(Void result) throws Exception {
    log.trace("ROOM {}: Released Pipeline", Room.this.name);
  }

  @Override
  public void onError(Throwable cause) throws Exception {
    log.warn("PARTICIPANT {}: Could not release Pipeline", Room.this.name);
  }
}); 

This logs not getting logged. Please check this.

NPM package 'kurento-browser-extensions' doesn't exist

kurento-utils optionally depends on kurento-browser-extensions, a non-existent package. This causes Meteor to crash while attempting to install kurento-utils. While that's probably a Meteor bug, it might be a good idea to create a stub package or something.

Non-resolvable parent POM in tutorial project

There appears to be a problem with the structure of the Maven projects, and I don't know these projects well enough to fix this structural problem.

I'm following the instructions in https://www.kurento.org/docs/current/tutorials/java/tutorial-3-one2many.html with the goal of setting up a basic media server.

I've created a new Ubuntu 14.04 machine for this purpose and cloned the sources just before the build, so everything is up to date.

root@chat-server-rtc:~/kurento-tutorial-java/kurento-one2many-call# mvn compile
exec:java
[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project org.kurento.tutorial:kurento-one2many-call:6.1.1-SNAPSHOT
(/root/kurento-tutorial-java/kurento-one2many-call/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for org.kurento.tutorial:kurento-tutorial:
6.1.1-SNAPSHOT: Could not find artifact org.kurento:kurento-parent-pom:pom:6.1.1
-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ org.kurento.tuto
rial:kurento-tutorial:6.1.1-SNAPSHOT, /root/kurento-tutorial-java/pom.xml, line
5, column 10 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildin
gException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableMo
delException

I opened the POM files in question and everything looks fine to me, but I'm far from an expert at Maven or at Kurento. This IS a tutorial project, it seems to me that it should Just Work for someone who isn't familiar with this software. Isn't that the point?

The One2ManyCallApp refuses connections when the HTML client page is served from a different machine

I've set up the unmodified tutorial app on a server, and it works as far as that goes: http://chat-server-rtc.dev.t3ach.co:8080/

But my existing site isn't on that server, it's on a dedicated Apache server that only serves static HTML/Javascript files. I expect that this would be the case with almost all real-world uses of this software (am I wrong?).

I've copied the HTML and Javascript, from the tutorial app, onto a page on the web server: http://dev.t3ach.co/main/conference-room?id=643

Since it's the same Kurento server (or "Java client"), and since the browser client is using the same HTML/Javascript, one would expect things to keep working on this new page. But the socket won't even open, it gives me this error:

WebSocket connection to 'ws://chat-server-rtc.dev.t3ach.co/call' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

I know that browsers don't like cross-domain communication, but this is the server refusing the connection, so I don't think we can blame the browser. There must be some way to modify the server so that it accepts cross-domain socket connections.

The only suggestion that I've found, after extensive searching, is to use the WebSocketHandlerRegistry.setAllowedOrigins method, and this just makes the problem worse (connections get refused even from the same server using the 100% unmodified page), whether I allow all domains or only a specific one.

Isn't this a very common requirement for any kind of specialized server that does something other than displaying static files? Being able to access it from a page hosted on a standard web server? It is in my experience, but I'm really second-guessing myself here, because I'm apparently the first person to have this problem.

If what I'm trying to do is outside of the scope of supported features, I'll have to maintain two separate public-facing web sites that look identical, and they'll need to share user state such as logins. I'll do that if I need to, but it seems like a lot of code duplication and added complexity.

KMS 6.3.3 : RecordedEndpoint-webm files- Audio only listened if file is played through a browser

No sound when playing recorded webm files in a local environment with a video player like VLC.
If the file is played through a browser everything is perfect.
These are the list of errors from the log file:

2016-02-12 17:04:33,286951 1184 [0x00007fb246ffd700] error recorderendpoint kmsrecorderendpoint.c:1186 kms_recorder_endpoint_query_caps() No appsrc attached to pad kmsrecorderendpoint1:sink_audio
2016-02-12 17:04:33,287091 1184 [0x00007fb246ffd700] error recorderendpoint kmsrecorderendpoint.c:1186 kms_recorder_endpoint_query_caps() No appsrc attached to pad kmsrecorderendpoint1:sink_audio
2016-02-12 17:04:33,287830 1184 [0x00007fb246ffd700] error recorderendpoint kmsrecorderendpoint.c:1186 kms_recorder_endpoint_query_caps() No appsrc attached to pad kmsrecorderendpoint1:sink_audio
2016-02-12 17:04:33,288381 1184 [0x00007fb246ffd700] error recorderendpoint kmsrecorderendpoint.c:1186 kms_recorder_endpoint_query_caps() No appsrc attached to pad kmsrecorderendpoint1:sink_audio
2016-02-12 17:04:33,288822 1184 [0x00007fb246ffd700] error recorderendpoint kmsrecorderendpoint.c:1186 kms_recorder_endpoint_query_caps() No appsrc attached to pad kmsrecorderendpoint1:sink_audio

If users have different set of devices (ie. UserA (Cam/Mic) - UserB (Mic)) data is correctly decoded by UserB endpoint, User A is unable to get audios

Dockerfile.txt
Hello,

Recently I've encountered a problem when users have different set of devices available. For example let's have:

UserA - camera + microphone
UserB - microphone

When connection is made UserB is able to see and hear UserA but UserA doesn't hear anything from UserB. When debuging, in chrome://webrtc-internals one can see that data is passed to UserA.

To see by yourself this problem please follow steps described in http://doc-kurento.readthedocs.org/en/stable/tutorials/java/tutorial-one2one.html but use my fork
https://github.com/JanuszP/kurento-tutorial-java/tree/differentDevices (branch differentDevices):

  1. Get the code:
    git clone https://github.com/JanuszP/kurento-tutorial-java.git
    cd kurento-tutorial-java/kurento-one2one-call
    git checkout differentDevices
    mvn compile exec:java
  2. Access https://localhost:8443 in two tabs (accept the unknown certificate) - let's name them tabA and tabB
  3. In tabA register (ie as UserA)
  4. In tabB register (ie as UserB) and ender UserA as peer, don't press enter
    5a. Click on "Call audio only" - you'll start to receive audio from UserA, but UserA won't hear anything from UserB
    5b. Click on "Call audio only - receive video" - you'll start to receive audio and video from UserA but User A won't hear anything from UserB

In my oppinion this is a bug as one can't expect that all users will have the same set of devices available and if that's not the case then there is no way of contacting UserA. I'd expect that parties share as much as they can, so in configuration mentioned above UserA can hear UserB, UserB can see and hear everything.

My OS: Ubuntu 15.10
Tested kurento versions (running in docker image, Dockerfile attached):

Version: 6.3.3
Found modules:
Module: 'core' version '6.3.1'
Module: 'elements' version '6.3.1'
Module: 'filters' version '6.3.0'

And

Version: 6.3.42.g7386d4a
Found modules:
Module: 'core' version '6.3.2
19.g21d51f9'
Module: 'elements' version '6.3.217.ge44014a'
Module: 'filters' version '6.3.1
1.gb3f6a20'

Browser: Chrome 45.0.2454.101

Best Regards,
Janusz

Ubuntu Wily packages...

It seems the distro packages for Ubuntu no longer work due to dependencies not being meet since upgrading from vivid. Hopefully it should just be a case of just tweaking these surely to line up with wily's packages? Currently I'm working round this by using Docker with --net=host

Got request timeout from nodejs api after a long period of inactivity

I have connected to KMS using kurento-client through secure websocket. It worked as well. I left my node server running with this open connection for a night, - no communication happened and now in the morning i've tried to register a new pipeline.

Using: KMS 6.1.1 on a distant network

{ [Error: Request has timed out]
  request: '{"jsonrpc":"2.0","method":"create","params":{"type":"MediaPipeline","sessionId":"1af516ae-068d-43ff-ac81-1d00ad3e083c"},"id":23}',
  retry: [Function: retry] }
Error: Request has timed out
    at /workspace/videochat/node_modules/kurento-client/lib/KurentoClient.js:332:24
    at /workspace/videochat/node_modules/kurento-client/lib/KurentoClient.js:504:16
    at callback2 (/workspace/videochat/node_modules/promisecallback/index.js:27:25)
    at lib$es6$promise$$internal$$tryCatch (/workspace/videochat/node_modules/es6-promise/dist/es6-promise.js:331:16)
    at lib$es6$promise$$internal$$invokeCallback (/workspace/videochat/node_modules/es6-promise/dist/es6-promise.js:343:17)
    at /workspace/videochat/node_modules/es6-promise/dist/es6-promise.js:891:13
    at lib$es6$promise$asap$$flush (/workspace/videochat/node_modules/es6-promise/dist/es6-promise.js:125:9)
    at process._tickDomainCallback (node.js:381:11)

Looking at the network stats:

tcp        0      0 10.0.2.15:49978         x.x.x.x:8433     ESTABLISHED

And found these lines in the server log:

2015-10-14 10:32:58,718016 2390 [0x00007f6550ff9700]    info KurentoWebSocketTransport WebSocketTransport.cpp:257 keepAliveSessions()  Keep alive 1af516ae-068d-43ff-ac81-1d00ad3e083c

Could you please help me how to keep open the connection?

Kurento crashes on vp8enc invalid parameter

Kurento constantly crashes on this error:

2016-03-14 21:43:54,690903 26443 [0x00007fce82a718c0]   error KurentoMediaPipelineImpl  MediaPipelineImpl.cpp:26 busMessage()  Error on bus: error message: 0x7fce64067310, time 99:99:99.999999999, seq-num 36607, element 'vp8enc0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstvpxenc.c\(1904\):\ gst_vpx_enc_handle_frame\ \(\):\ /GstPipeline:pipeline0/KmsHubPort:kmshubport0/KmsAgnosticBin2:kmsagnosticbin2-5/KmsEncTreeBin:kmsenctreebin0/GstVP8Enc:vp8enc0:\012invalid\ parameter";
2016-03-14 21:43:54,691199 26443 [0x00007fce82a718c0]   error KurentoMediaElementImpl   MediaElementImpl.cpp:256 _media_element_impl_bus_message()  MediaElement error: error message: 0x7fce64067310, time 99:99:99.999999999, seq-num 36607, element 'vp8enc0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstvpxenc.c\(1904\):\ gst_vpx_enc_handle_frame\ \(\):\ /GstPipeline:pipeline0/KmsHubPort:kmshubport0/KmsAgnosticBin2:kmsagnosticbin2-5/KmsEncTreeBin:kmsenctreebin0/GstVP8Enc:vp8enc0:\012invalid\ parameter";

The pipeline is this:

RtpEndpoint -> (HubPort ->) OneToMany -> (HubPort ->) WebRtcEndpoint

I'm sending a h264 video and I guess there is a problem with the encoding to VP8.

This is the error log:

Segmentation fault (thread 140523436189440, pid 26443)
Stack trace:
0xAD89 at /usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstvpx.so
0x666B at /usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstvpx.so
0x8E18 at /usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstvpx.so
[gst_video_encoder_get_type]
/usr/lib/x86_64-linux-gnu/libgstvideo-1.5.so.0:0x419FB
[gst_flow_get_name]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x6E4F7
[gst_pad_push]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x7649E
[gst_base_transform_get_type]
/usr/lib/x86_64-linux-gnu/libgstbase-1.5.so.0:0x36500
[gst_flow_get_name]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x6E4F7
[gst_pad_push]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x7649E
[gst_base_transform_get_type]
/usr/lib/x86_64-linux-gnu/libgstbase-1.5.so.0:0x36500
[gst_flow_get_name]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x6E4F7
[gst_pad_push]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x7649E
[gst_base_transform_get_type]
/usr/lib/x86_64-linux-gnu/libgstbase-1.5.so.0:0x36500
[gst_flow_get_name]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x6E4F7
[gst_pad_push]
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0:0x7649E
0x3CAF9 at /usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstcoreelements.so

kms-core: Few headers not found

kms-core/src/server/implementation/objects/MediaObjectImpl.hpp:5:27: fatal error: MediaObject.hpp: No such file or directory

KMS 6.4.0, Image overlay memory consumption to high

Hello,
When using the ImageOverlay filter the Memory consumption is enormous. The structure is something like this:
PlayerEndpoint(give the url from an IP camera)-->ImageOverlayFilter(with an image)-->WebRtcEndpoints of viewers. When the PlayerEndpint is connected to the filter the memory consumption start increasing at about 50MB/s and when it reaches 100%(which happens in a couple of minutes) KMS crashes and the server itself freezes. Its kinda unusable like this.
KMS version 6.4.0(but it also happened with 6.2.0)
gstreamer - 1.5
Configuration files are the default ones that come with the server installation.
I am using NodeJs and its on the same machine as Kurento.
The machine is running on an 64bit Ubuntu 14.04 and has 8GB Ram, Intel Xeon X5570 2.93Ghz 8 core.

Kurento 6.4.1 crashes when configuring the WebRtcEndpoint.conf.ini pemCertificate

When we configure a pem certificate to /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini,
we see that kurento crashes after exchanging SDPs with a WebRtc application.

We are using Version: 6.4.1 Kurento (daily build)
PEMcrashing_gdbcoredump.txt
PEMcrashing_kurentomedialog.txt

ubuntu@kurento1:/etc/kurento/modules/kurento$ cat WebRtcEndpoint.conf.ini

stunServerAddress=
stunServerPort=19302

pemCertificate=.pem

We verified that if we undo the configuration, then kurento won't crash.

The exact versions of the binaries are:

ubuntu@kurento1:/var/log/kurento-media-server$ dpkg --list | grep kurento
ii kurento-media-server-6.0 6.4.120160310095912.4.g9a56711.trusty amd64 Kurento Media Server
ii kurento-module-creator-4.0 4.0.5
20160210214321.3.g76ca25d.trusty all Kurento module creator
ubuntu@kurento1:/var/log/kurento-media-server$ dpkg --list | grep kms
ii kms-cmake-utils 1.3.120160225151921.1.gb4fa868.trusty all Kurento cmake utils
ii kms-core-6.0 6.4.1
20160314161458.20.g7ba2f64.trusty amd64 Kurento core module
ii kms-core-6.0-dev 6.4.120160314161458.20.g7ba2f64.trusty amd64 Kurento core module
ii kms-elements-6.0 6.4.1
20160314164110.25.g3982eb5.trusty amd64 Kurento elements module
ii kms-elements-6.0-dev 6.4.120160314164110.25.g3982eb5.trusty amd64 Kurento elements module
ii kms-filters-6.0 6.4.1
20160314170258.3.g06e2b4f.trusty amd64 Kurento filters module
ii kms-filters-6.0-dev 6.4.120160314170258.3.g06e2b4f.trusty amd64 Kurento filters module
ii kms-jsonrpc-1.0 1.1.1
20160210175344.2.gf8e5185.trusty amd64 Kurento jsonrpc library
ii kms-jsonrpc-1.0-dev 1.1.120160210175344.2.gf8e5185.trusty amd64 Kurento jsonrpc library
ii kmsjsoncpp 1.6.3
20160224182314.38.g263929e.trusty amd64 Kurento jsoncpp library
ii kmsjsoncpp-dev 1.6.3~20160224182314.38.g263929e.trusty amd64 Kurento jsonrpc library
ubuntu@kurento1:/var/log/kurento-media-server$

Above attached files are:

  1. The gdp core dump stack trace

  2. The kurento logs that occur during the crash for exactly one stream attempt

Other info:

  1. We are doing H.264 (not VP8) only

  2. Our kurento servers are running on Ubuntu 14.04

  3. The pem file we are using contains all certificates including root

KMS 6.1.1, one2many javascript. Audio quality drop soon after stream started .

Hello ,

I haved used one2many project and modified it to use audio only .
After the streaming is started , audio quality seems to drop significantly, but the stream has good banwidth.

Client :NodeJS Javascript kurento-one2many-call
KMS : Version: 6.1.1
Found modules:
Module: 'core' version '6.1.2'
Module: 'elements' version '6.1.1'
Module: 'filters' version '6.1.1'
OS : Ubuntu 14.04 for Kms and client, Demo pages were openned from Chrome on Window 8.1.
Links to pictures from peer-to-peer connection test :
http://imgur.com/npIAEWp
http://imgur.com/rac7yC1

I tested the audio using a Fast Track Pro external sound card with a media player. I can quarantee that the sound the audio card gives is perfect quality.
I also did a test by connecting the smartphone into line in soundcard jack and play music .
I also did a test by using virtual sound card (VBCABLE driver) and played songs from media player such as Winamp.
On all, i noticed same behaviour.

Steps to reproduce and result:
Audio stream at first has very good quality, after 4-5 seconds the quallity sudden drops.But the bandwith remains unchanged .

This quality drop is seen with or without SDP changes in code.
I even tried adding properties to Opus codec, but nothing seems to solve it ( https://tools.ietf.org/html/draft-ietf-payload-rtp-opus-11 )

My internet wired connection is 100Mbps in upload and download so i am not considering connection issues.
Here are some configurations i'm using that might help in giving a solution :

//MediaElement.conf.ini

outputBitrate=1500000

/// SdpEndpoint.conf.json
{
"numAudioMedias" : 1,
"numVideoMedias" : 0,
"audioCodecs" : [
{
"name" : "opus/48000/2"
},
{
"name" : "PCMU/8000"
},
{
"name" : "AMR/16000"
}
],

//kurneto-utils .js
//audio only setting
var MEDIA_CONSTRAINTS = {
audio: true,
video:false
};

function set_bandwidth(sdp) {
sdp = sdp.replace(/a=mid:audio\r\n/g, 'a=mid:audio\r\nb=AS:510\r\n'); // biggest bandwidth opus can handle
sdp = sdp.replace(/a=mid:video\r\n/g, 'a=mid:video\r\nb=AS:1000\r\n');
sdp = sdp.replace('a=rtpmap:111 opus/48000/2' , 'a=rtpmap:111 opus/48000/2\r\na=fmtp:111 maxplaybackrate=48000; sprop-maxcapturerate=48000;maxaveragebitrate=510000; stereo=1; useinbandfec=1; usedtx=0; cbr=0;maxptime=120; ');
return sdp;
}

Support for ORTC, more specifically MS Edge

Hi, I'm relatively new to all this WebRTC stuff so trying to get my head round the various edge cases etc.

I see ORTC has landed in from about build 10572 of Windows 10. Is there any plans for Kurento to support this? I'm raising it here as I see it as a feature request, and I think it's fairly valid one given:

  • MS Edge will soon have a large enough market share to be considered important
  • ORTC seems be gaining traction elsewhere (namely Chrome)

My understanding is that currently in WebRTC all negotiation relating to media / transport (ICE) etc is done using SDP which is not used at all in the ORTC flavour. While it's a pain MS have chosen a different path from Chrome / FF, it seems logical from a technical perspective as SDP is arcane at best to most. I get the impression that ORTC might be introduced as something that can sit underneath SDP offer/answer negotiation.

From what I can see there is an ORTC-adapter.js project out there that translates ORTC calls into SDP offers, but the implementation currently seems rough on the edges (there were a few unimplemented methods on RTCPeerConnection kurento-utils tried calling - addEventListener was one, and it seems fussy over things like the format of the urls option iceCandidates when using freeice (I think this generates an array, where as the adapter just expects a string). My testing was limited to just adding the ortc-adapter.js as a script tag to one of the existing one-to-many demo and running in MS Edge build 10576 and watching the console. I'm sure there's a few other issues that will come out further on, but I'm not versed well enough in WebRTC to itemise these. If I gain some time / experience in due course I'll try and add to this.

weird errors on startup about libraries

I found these at /var/log/kurento/media-server_error.log, but my system is working fine

Is there any problem with it?

libdc1394 error: Failed to initialize libdc1394
0:00:00.103778831  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstdvdread.so' has invalid datetime '2015-09-18/created>'
0:00:00.136335567  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstmpeg2dec.so' has invalid datetime '2015-09-18/created>'
0:00:00.136745279  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstx264.so' has invalid datetime '2015-09-18/created>'
0:00:00.149385196  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstamrnb.so' has invalid datetime '2015-09-18/created>'
0:00:00.149892678  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgsta52dec.so' has invalid datetime '2015-09-18/created>'
0:00:00.165895962  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstcdio.so' has invalid datetime '2015-09-18/created>'
0:00:00.182804168  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstamrwbdec.so' has invalid datetime '2015-09-18/created>'
0:00:00.206795943  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstasf.so' has invalid datetime '2015-09-18/created>'
0:00:00.210295672  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstlame.so' has invalid datetime '2015-09-18/created>'
0:00:00.212479635  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstxingmux.so' has invalid datetime '2015-09-18/created>'
0:00:00.225731371  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstmad.so' has invalid datetime '2015-09-18/created>'
0:00:00.246967330  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstrmdemux.so' has invalid datetime '2015-09-18/created>'
0:00:00.247758795  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstdvdsub.so' has invalid datetime '2015-09-18/created>'
0:00:00.250516444  5662      0x12be400 ERROR     GST_PLUGIN_LOADING gstplugin.c:811:_priv_gst_plugin_load_file_for_registry: GstPluginDesc for '/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgsttwolame.so' has invalid datetime '2015-09-18/created>'

Very large latency when webrtc client & KMS in different network

Hi,

I posted question in https://groups.google.com/forum/#!topic/kurento/7S2ESeYRYJ4 but Jose said I should post here.

Enviroment setup:
KMS - 6.4.0 deployed in Ubuntu 14.04
Nodejs - deployed in Ubuntu 14.04
Camera: Logitech C920 HD
VLC: v2.2.x
Client: Chrome v48.0.2564.116 m

Running:

  • Streaming RTSP with VLC by command:
    cvlc -vvv v4l2:///dev/video1 --sout '#transcode{vcodec=h264,fps=25,width=1280,height=720,vb=800,acodec=none}:rtp{sdp=rtsp://:8554/}'
  • Nodejs:
    Development from one2many example:
    Server: create PlayerEndpoint {useEncodedMedia:false} -> create WebRTCEndpoint. Setup outputBitrate in MediaElement.conf.ini = 1500000
    Client: using lastest adapter.js, kurento-utils, setup
    mediaConstraints: { audio: false, frameRate: {min: 20}, width: {min: 640, ideal: 1280}, height: {min: 480, ideal: 720}, aspectRatio: 1.5 }

configuration: { iceServers: [{"urls": "stun:xx.xx.xx.xx:80"},{"urls": "turn:xx.xx.xx.xx:80?transport=udp","credential":"xxxxxxx","username":"xxx"},{"urls": "turn:xx.xx.xx.xx:80?transport=tcp","credential":"xxxxxxx","username":"xxx"}] }

Result:

  • Local network: both presenter & viewer can see very well high quality video with same outputBitrate setup before.
  • Outsite local: Almost cannot see video, sometime when camera moving, framerate received jump to 25 and back to 3-4, audio still have delay but not very long like video.

Please help me check this issue

Embedded device video not displayed on FF w/o manual WebRtcEndpoint reconnect (Kurento 6.3+)

Hello Kurento team:

We have embedded linux devices (similar to raspberry pi) running OpenWebRTC
that were able to stream H.264 video to Firefox prefectly fine with Kurento 6.2.

But after we upgraded Kurento to 6.3+ (including the 6.4.1 daily build),
we noticed that the embedded device video would not display on Firefox unless we
issued a reconnect (i.e. disconnect() and connect()) between
the embedded device and the Firefox Browsers' WebRtcEndpoints.

On the other hand, using webcams from our notebooks (including the Macbooks) as the video source
would still work fine before and after the Kurento 6.3+ upgrade.

To try to figure out the discrepency between our embedded device vs. the notebook webcams,
we then compiled a openh264 plugin with debug log enabled for Kurento 6.2 and 6.4.
We found that in the case of the embedded device,
Kurento 6.4 did not send out SPS/PPS to the Firefox until we did the disconnect() and connect().
For Kurento 6.2, we could see the SPS/PPS right before IDR frame after SEI frame.
Also, we noticed that in Kurento 6.4, the SPS/PPS frames were only at the beginning of each chunk of multiple nals
possibly indicating that Kurento is manipulating the SPS/PPS. One guess was that perhaps Kurento caches it first
and only starts to prepend it after the disconnect()/connect().

So, to reword this:

Our setup is an embedded device conected to browser through kms via two webrtc links [embedded device โ€”> kms โ€”> browser].
In kms6.2.0, it seems every sps/pps sent from embedded device will reach the browser in the original nal packet order.
However, in 6.3, the SPSs/PPSs are only seen on the browser side after a kms disconnect() and connect().
This perhaps caused decoding issue on the browser side.
So, that left us wondering if the kms pipeline is manipulating the SPS/PPS.

Some other key observations:

  1. This issue is reproducible 100% of the time with our embedded devices, and not randomly happening.

  2. During the period where Firefox doesn't display the video of the embedded device,
    we can confirm that if we were to run "about:webrtc" on Firefox, we were indeed able
    to see reported video packets including a constantly changing fps incoming.
    Plus, when we ran a network traffic monitor, we could confirm 100 to 250+ kpbs of increased
    network traffic going into the Firefox browser.
    So, there was no doubt video data was reaching Firefox during the moments of no displayed video.

  3. This issue would not happen if another WebRTC video session was already running
    through the browser. In other words, if there was at least one other WebRTC video session
    from a remote source (could be webcam and doesn't have to be embedded device nor the same embedded device),
    then any embedded device video session after that one will be displayed fine on Firefox (no need to disconnect() and connect()
    to see the video).

  4. We also observed the Kurento logs and found no error messages during the no video.
    Attached below are the full logs,
    but in summary we noticed a difference in the "Media Flow*" messages when comparing webcam vs. embedded device:

----------------------------------------------------------------
webcam:

1) WEBCAM connects to Kurento with WebRTC:

0:00:18.982057608  3784 0x7f982800ec50 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:430:mediaFlowOutStateChange:<kmswebrtcendpoint0> Media Flowing OUT in pad default with type video
0:00:18.996005744  3784 0x7f982800ed40 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:430:mediaFlowOutStateChange:<kmswebrtcendpoint0> Media Flowing OUT in pad default with type audio

2) WEBCAM Endpoint connects to the USER(Firefox) Endpoint and Video displays fine:

0:01:38.138247554  3784 0x7f982802c320 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type audio
0:01:38.458053067  3784 0x7f982802bf70 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type video

3) WEBCAM Endpoint disconnects the USER(Firefox) Endpoint:

0:04:08.134167388  3784 0x7f98480540a0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:480:mediaFlowInStateChange:<kmswebrtcendpoint1> Media NOT Flowing IN in pad default with type audio
0:04:08.135677836  3784 0x7f98480540a0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:480:mediaFlowInStateChange:<kmswebrtcendpoint1> Media NOT Flowing IN in pad default with type video

4) WEBCAM Endpoint reconnects the USER(Firefox) Endpoint:

0:04:55.882380378  3784 0x7f982c112370 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type audio
0:04:56.060663859  3784 0x7f982c0ee1e0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type video
embedded device:

1) EmbeddedDevice connects to Kurento with WebRTC:

0:00:27.283718292  3631 0x7f9ed0002b70 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:430:mediaFlowOutStateChange:<kmswebrtcendpoint0> Media Flowing OUT in pad default with type audio
0:00:33.190223866  3631 0x7f9ed8002540 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:430:mediaFlowOutStateChange:<kmswebrtcendpoint0> Media Flowing OUT in pad default with type video

2) EmbeddedDevice Endpoint connects to the USER(Firefox) Endpoint and Video doesn't display on Firefox:

0:06:00.137348698  3631 0x7f9eec053f20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type audio
0:06:04.929399109  3631 0x7f9eec0540f0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type video

3) EmbeddedDevice Endpoint disconnects the USER(Firefox) Endpoint:

0:06:42.109000358  3631 0x7f9ed0002b20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:480:mediaFlowInStateChange:<kmswebrtcendpoint1> Media NOT Flowing IN in pad default with type audio
0:06:42.109520868  3631 0x7f9ed0002b20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:480:mediaFlowInStateChange:<kmswebrtcendpoint1> Media NOT Flowing IN in pad default with type video
0:06:43.167749173  3631 0x7f9ed0002b20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:434:mediaFlowOutStateChange:<kmswebrtcendpoint0> Media NOT Flowing OUT in pad default with type video

4) EmbeddedDevice Endpoint reconnects the USER(Firefox) Endpoint and Video does display on Firefox:
0:07:02.613650456  3631 0x7f9ee4083ca0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type audio
0:07:02.810242711  3631 0x7f9ed8002540 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:430:mediaFlowOutStateChange:<kmswebrtcendpoint0> Media Flowing OUT in pad default with type video
0:07:08.475622697  3631 0x7f9ee40838f0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:476:mediaFlowInStateChange:<kmswebrtcendpoint1> Media Flowing IN in pad default with type video
  1. We also thought perhaps the issue related to the SDP descrepancy between the SDP offer of the Firefox webcam vs.
    embedded device. And here is the SDP reported in the Kurento 6.4 logs for both of those
    (in case you guys can spot a key mandatory difference):
webcam SDP offer:

"v=0\r\n
o=mozilla...THIS_IS_SDPARTA-43.0 7596407556004302705 0 IN IP4 0.0.0.0\r\n
s=-\r\n
t=0 0\r\n
a=fingerprint:sha-256 D6:D0:EC:FF:C4:9C:19:2D:0E:6A:2B:B0:C5:D4:F7:14:A5:3C:29:F5:A3:E6:51:65:E1:92:CB:92:28:D2:A0:6E\r\n
a=group:BUNDLE sdparta_0 sdparta_1\r\n
a=ice-options:trickle\r\n
a=msid-semantic:WMS *\r\n

m=audio 9 UDP/TLS/RTP/SAVPF 109 9 0 8\r\n
c=IN IP4 0.0.0.0\r\n
a=sendonly\r\n
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\n
a=ice-pwd:8c5a5e5c610c50650f4c8acd31ac4589\r\n
a=ice-ufrag:5d8eda04\r\n
a=mid:sdparta_0\r\n
a=msid:{43e195e6-b5fb-4658-bb01-7560fb8aae80} {e54bcc97-0ac2-4ac0-81d8-4102d805305c}\r\n
a=rtcp-mux\r\n
a=rtpmap:109 opus/48000/2\r\n
a=rtpmap:9 G722/8000/1\r\n
a=rtpmap:0 PCMU/8000\r\n
a=rtpmap:8 PCMA/8000\r\n
a=setup:actpass\r\n
a=ssrc:2397072748 cname:{e445d9ae-609a-41f3-9b5b-e05460621b2f}\r\n

m=video 9 UDP/TLS/RTP/SAVPF 120 126 97\r\n
c=IN IP4 0.0.0.0\r\n
a=sendonly\r\n
a=fmtp:126 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1\r\n
a=fmtp:97 profile-level-id=42e01f;level-asymmetry-allowed=1\r\n
a=ice-pwd:8c5a5e5c610c50650f4c8acd31ac4589\r\n
a=ice-ufrag:5d8eda04\r\n
a=mid:sdparta_1\r\n
a=msid:{43e195e6-b5fb-4658-bb01-7560fb8aae80} {d9bff552-bf9d-45a4-9825-9227b49b4426}\r\n
a=rtcp-fb:120 nack\r\n
a=rtcp-fb:120 nack pli\r\n
a=rtcp-fb:120 ccm fir\r\n
a=rtcp-fb:126 nack\r\n
a=rtcp-fb:126 nack pli\r\n
a=rtcp-fb:126 ccm fir\r\n
a=rtcp-fb:97 nack\r\n
a=rtcp-fb:97 nack pli\r\n
a=rtcp-fb:97 ccm fir\r\n
a=rtcp-mux\r\n
a=rtpmap:120 VP8/90000\r\n
a=rtpmap:126 H264/90000\r\n
a=rtpmap:97 H264/90000\r\n
a=setup:actpass\r\n
a=ssrc:1705482647 cname:{e445d9ae-609a-41f3-9b5b-e05460621b2f}\r\n
Embedded Device SDP offer:

"v=0\r\n
o=- 1457885336085230300 1 IN IP4 127.0.0.1\r\n
s=-\r\n
t=0 0\r\n

m=audio 9 UDP/TLS/RTP/SAVPF 0\r\n
c=IN IP4 0.0.0.0\r\n
a=rtcp-mux\r\n
a=sendrecv\r\n
a=rtpmap:0 PCMU/8000\r\n
a=ice-ufrag:fzMJ\r\n
a=ice-pwd:Z+keesWgM1K3N8ZiNb4wsI\r\n
a=fingerprint:sha-256 E7:C8:CA:E4:51:CE:D0:6B:BD:95:01:1A:02:84:59:6C:92:63:BA:BF:A0:FD:1C:6D:83:C5:AC:3F:DB:9A:B3:7F\r\n
a=setup:active\r\n

m=video 9 UDP/TLS/RTP/SAVPF 126\r\n
c=IN IP4 0.0.0.0\r\n
a=rtcp-mux\r\n
a=sendrecv\r\n
a=rtpmap:126 H264/90000\r\n
a=fmtp:126 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\n
a=rtcp-fb:126 nack pli\r\n
a=rtcp-fb:126 ccm fir\r\n
a=ice-ufrag:Zu4u\r\n
a=ice-pwd:z5Cb74v4zzWtYBxIJk7efw\r\n
a=fingerprint:sha-256 E7:C8:CA:E4:51:CE:D0:6B:BD:95:01:1A:02:84:59:6C:92:63:BA:BF:A0:FD:1C:6D:83:C5:AC:3F:DB:9A:B3:7F\r\n
a=setup:active\r\n"

Kurento full logs:

kurentologs_embedded.txt
kurentologs_webcam.txt

KMS not using STUN after it generates an SDP offer

Ubuntu: 14.04
kurento-media-server-6.0: 6.3.1.trusty
kms-core-6.0: 6.3.0.trusty
App server is modified from the Hello World tutorial from git, version 6.1.0.

I modified the hello world tutorial to generate an SDP offer on the Kurento side. Even though KMS is configured to use a working STUN server, the ICE candidates it generates only have the server's non-public IP.

Here's a log:

2016-01-26 07:04:23,235457 30249 [0x00007fb8a05288c0] debug KurentoMediaServer main.cpp:193 main() Dumping logs to /var/log/kurento-media-server
2016-01-26 07:04:23,235835 30249 [0x00007fb8a05288c0] info KurentoModuleManager ModuleManager.cpp:139 loadModules() Looking for modules in /usr/lib/x86_64-linux-gnu/kurento/modules
2016-01-26 07:04:23,236801 30249 [0x00007fb8a05288c0] debug KurentoModuleManager ModuleManager.cpp:87 loadModule() Module loaded from /usr/lib/x86_64-linux-gnu/kurento/modules/libkmsfiltersmodule.so
2016-01-26 07:04:23,236871 30249 [0x00007fb8a05288c0] info KurentoModuleManager ModuleManager.cpp:118 loadModule() Loaded filters version 6.3.0 generated at Jan 19 2016 16:52:15
2016-01-26 07:04:23,241546 30249 [0x00007fb8a05288c0] debug KurentoModuleManager ModuleManager.cpp:87 loadModule() Module loaded from /usr/lib/x86_64-linux-gnu/kurento/modules/libkmselementsmodule.so
2016-01-26 07:04:23,241607 30249 [0x00007fb8a05288c0] info KurentoModuleManager ModuleManager.cpp:118 loadModule() Loaded elements version 6.3.0 generated at Jan 19 2016 16:40:59
2016-01-26 07:04:23,241999 30249 [0x00007fb8a05288c0] debug KurentoModuleManager ModuleManager.cpp:87 loadModule() Module loaded from /usr/lib/x86_64-linux-gnu/kurento/modules/libkmscoremodule.so
2016-01-26 07:04:23,242058 30249 [0x00007fb8a05288c0] info KurentoModuleManager ModuleManager.cpp:118 loadModule() Loaded core version 6.3.0 generated at Jan 19 2016 16:14:22
2016-01-26 07:04:23,242119 30249 [0x00007fb8a05288c0] info KurentoMediaServer main.cpp:237 main() Kmsc version: 6.3.1
2016-01-26 07:04:23,242147 30249 [0x00007fb8a05288c0] info KurentoMediaServer main.cpp:238 main() Compiled at: Jan 20 2016 12:36:38
2016-01-26 07:04:23,242176 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:227 loadConfig() Reading configuration from: /etc/kurento/kurento.conf.json
2016-01-26 07:04:23,254598 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:164 loadModulesConfigFromDir() Looking for config files in /etc/kurento/modules
2016-01-26 07:04:23,254674 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:164 loadModulesConfigFromDir() Looking for config files in /etc/kurento/modules/kurento
2016-01-26 07:04:23,254799 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:189 loadModulesConfigFromDir() Loaded module config from: /etc/kurento/modules/kurento/MediaElement.conf.ini
2016-01-26 07:04:23,254895 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:189 loadModulesConfigFromDir() Loaded module config from: /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini
2016-01-26 07:04:23,255095 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:189 loadModulesConfigFromDir() Loaded module config from: /etc/kurento/modules/kurento/SdpEndpoint.conf.json
2016-01-26 07:04:23,255238 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:189 loadModulesConfigFromDir() Loaded module config from: /etc/kurento/modules/kurento/HttpEndpoint.conf.ini
2016-01-26 07:04:23,255376 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:189 loadModulesConfigFromDir() Loaded module config from: /etc/kurento/modules/kurento/UriEndpoint.conf.ini
2016-01-26 07:04:23,255527 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:189 loadModulesConfigFromDir() Loaded module config from: /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
2016-01-26 07:04:23,255570 30249 [0x00007fb8a05288c0] info KurentoLoadConfig loadConfig.cpp:243 loadConfig() Configuration loaded successfully
2016-01-26 07:04:23,255657 30249 [0x00007fb8a05288c0] debug KurentoLoadConfig loadConfig.cpp:249 loadConfig() Effective loaded config:
{
"mediaServer":
{
"resources":
{
"garbageCollectorPeriod": "240"
},
"net":
{
"websocket":
{
"port": "8888",
"path": "kurento",
"threads": "10"
}
}
},
"configPath": "/etc/kurento",
"modules":
{
"kurento":
{
"MediaElement":
{
"configPath": "/etc/kurento/modules/kurento"
},
"BaseRtpEndpoint":
{
"configPath": "/etc/kurento/modules/kurento"
},
"SdpEndpoint":
{
"numAudioMedias": "1",
"numVideoMedias": "1",
"audioCodecs":
[
{
"name": "OPUS/48000/2"
},
{
"name": "PCMU/8000"
},
{
"name": "AMR/8000"
}
],
"videoCodecs":
[
{
"name": "VP8/90000"
},
{
"name": "H264/90000"
}
],
"configPath": "/etc/kurento/modules/kurento"
},
"HttpEndpoint":
{
"serverAddress": "localhost",
"port": "9091",
"configPath": "/etc/kurento/modules/kurento"
},
"UriEndpoint":
{
"defaultPath": "file:///var/kurento/",
"configPath": "/etc/kurento/modules/kurento"
},
"WebRtcEndpoint":
{
"stunServerAddress": "74.125.142.127",
"stunServerPort": "19302",
"configPath": "/etc/kurento/modules/kurento"
}
}
}
}

2016-01-26 07:04:23,255758 30249 [0x00007fb8a05288c0] info KurentoServerMethods ServerMethods.cpp:80 ServerMethods() Not enough resources exception will be raised when resources reach 0.800000
2016-01-26 07:04:23,256375 30249 [0x00007fb8a05288c0] info KurentoWebSocketTransport WebSocketTransport.cpp:208 WebSocketTransport() Secure websocket server not enabled
2016-01-26 07:04:23,256856 30249 [0x00007fb8a05288c0] info KurentoMediaServer main.cpp:255 main() Mediaserver started
2016-01-26 07:04:23,257024 30249 [0x00007fb897549700] debug KurentoWorkerPool WorkerPool.cpp:37 workerThreadLoop() Working thread starting
2016-01-26 07:04:23,257113 30249 [0x00007fb897d4a700] debug KurentoWorkerPool WorkerPool.cpp:37 workerThreadLoop() Working thread starting
2016-01-26 07:04:50,133293 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:507 openHandler() Client connected from
2016-01-26 07:05:46,728268 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":1,"method":"create","params":{"type":"MediaPipeline","constructorParams":{}},"jsonrpc":"2.0"}<
2016-01-26 07:05:46,729591 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":1,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline"}}
<
2016-01-26 07:05:46,729753 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:432 storeConnection() Asociating session 02efa7e1-2a39-4824-985b-03aa3d1b32b5
2016-01-26 07:05:46,997165 30249 [0x00007fb896547700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":2,"method":"create","params":{"type":"WebRtcEndpoint","constructorParams":{"mediaPipeline":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline"},"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5"},"jsonrpc":"2.0"}<
2016-01-26 07:05:47,001377 30249 [0x00007fb896547700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:68 remove_not_supported_codecs_from_array() Removing not supported codec 'OPUS/48000/2'
2016-01-26 07:05:47,001629 30249 [0x00007fb896547700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:68 remove_not_supported_codecs_from_array() Removing not supported codec 'AMR/8000'
2016-01-26 07:05:47,001755 30249 [0x00007fb896547700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:68 remove_not_supported_codecs_from_array() Removing not supported codec 'H264/90000'
2016-01-26 07:05:47,001927 30249 [0x00007fb896547700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:281 WebRtcEndpointImpl() stun port 19302

2016-01-26 07:05:47,002047 30249 [0x00007fb896547700] info KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:285 WebRtcEndpointImpl() stun address 74.125.142.127

2016-01-26 07:05:47,002975 30249 [0x00007fb896547700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":2,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint"}}
<
2016-01-26 07:05:47,451167 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":3,"method":"invoke","params":{"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","operation":"connect","operationParams":{"sink":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint"},"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5"},"jsonrpc":"2.0"}<
2016-01-26 07:05:47,451523 30249 [0x00007fb894d44700] debug KurentoMediaElementImpl MediaElementImpl.cpp:665 connect() Connecting bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint -> bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint params AUDIO
2016-01-26 07:05:47,451740 30249 [0x00007fb894d44700] debug KurentoMediaElementImpl MediaElementImpl.cpp:665 connect() Connecting bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint -> bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint params VIDEO
2016-01-26 07:05:47,451887 30249 [0x00007fb894d44700] debug KurentoMediaElementImpl MediaElementImpl.cpp:665 connect() Connecting bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint -> bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint params DATA
2016-01-26 07:05:47,452088 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":3,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":null}}
<
2016-01-26 07:05:47,530459 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":4,"method":"invoke","params":{"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","operation":"generateOffer","sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5"},"jsonrpc":"2.0"}<
2016-01-26 07:05:48,046580 30249 [0x00007fb894d44700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":4,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":"v=0\r\no=- 3662780747 3662780747 IN IP4 0.0.0.0\r\ns=Kurento Media Server\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=group:BUNDLE audio0 video0\r\nm=audio 1 RTP/SAVPF 0\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=ssrc:65526568 cname:user1694387668@host-29df7460\r\na=ice-ufrag:Cz7u\r\na=ice-pwd:05vutO2zPmsBA+uTklu8rU\r\na=fingerprint:sha-256 D2:63:E1:5A:0A:1A:D0:EB:E4:50:0B:95:90:E4:E4:A1:FA:58:AF:0A:27:80:4D:9E:38:65:0E:34:C1:1E:A4:0A\r\na=mid:audio0\r\nm=video 1 RTP/SAVPF 97\r\nb=AS:500\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=rtpmap:97 VP8/90000\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 goog-remb\r\na=rtcp-fb:97 ccm fir\r\na=ssrc:980934908 cname:user1694387668@host-29df7460\r\na=ice-ufrag:Cz7u\r\na=ice-pwd:05vutO2zPmsBA+uTklu8rU\r\na=fingerprint:sha-256 D2:63:E1:5A:0A:1A:D0:EB:E4:50:0B:95:90:E4:E4:A1:FA:58:AF:0A:27:80:4D:9E:38:65:0E:34:C1:1E:A4:0A\r\na=mid:video0\r\n"}}
<
2016-01-26 07:05:52,453366 30249 [0x00007fb896547700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":5,"method":"invoke","params":{"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","operation":"processAnswer","operationParams":{"answer":"v=0\r\no=- 1453791952182598100 1 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\nm=audio 9 UDP/TLS/RTP/SAVPF 0\r\nc=IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=sendrecv\r\na=rtpmap:0 PCMU/8000\r\na=ice-ufrag:lxUH\r\na=ice-pwd:OS3iKHWhfKXNQbvrodnQzA\r\na=candidate:1 1 UDP 2013266431 192.168.0.109 61103 typ host\r\na=candidate:2 1 TCP 1019216383 192.168.0.109 0 typ host tcptype active\r\na=candidate:3 1 TCP 1015022079 192.168.0.109 61509 typ host tcptype passive\r\na=candidate:4 1 UDP 2013266431 21.57.2.200 50412 typ host\r\na=candidate:5 1 TCP 1019216383 21.57.2.200 0 typ host tcptype active\r\na=candidate:6 1 TCP 1015022079 21.57.2.200 61510 typ host tcptype passive\r\na=candidate:13 1 UDP 1677722111 104.193.168.123 61103 typ srflx raddr 192.168.0.109 rport 61103\r\na=candidate:14 1 TCP 847249919 104.193.168.123 0 typ srflx raddr 192.168.0.109 rport 0 tcptype active\r\na=candidate:15 1 TCP 843055615 104.193.168.123 61509 typ srflx raddr 192.168.0.109 rport 61509 tcptype passive\r\na=candidate:19 1 UDP 167772671 52.34.12.79 63582 typ relay raddr 192.168.0.109 rport 61103\r\na=candidate:21 1 UDP 1677722111 208.54.5.174 22118 typ srflx raddr 21.57.2.200 rport 50412\r\na=candidate:22 1 TCP 847249919 208.54.5.174 0 typ srflx raddr 21.57.2.200 rport 0 tcptype active\r\na=candidate:23 1 TCP 843055615 208.54.5.174 61510 typ srflx raddr 21.57.2.200 rport 61510 tcptype passive\r\na=candidate:27 1 UDP 167772671 52.34.12.79 50779 typ relay raddr 21.57.2.200 rport 50412\r\na=fingerprint:sha-256 A2:29:0A:F6:4B:2D:D3:36:4B:89:6D:3C:A8:FA:07:CF:A6:65:94:FA:2E:80:FF:81:54:18:34:5E:CD:A6:B9:B5\r\na=setup:active\r\nm=video 9 UDP/TLS/RTP/SAVPF 97\r\nc=IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=sendrecv\r\na=rtpmap:97 VP8/90000\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 ccm fir\r\na=ice-ufrag:0OCN\r\na=ice-pwd:XrDZvE4J7TJV1i0MAkClGz\r\na=candidate:7 1 UDP 2013266431 192.168.0.109 61918 typ host\r\na=candidate:8 1 TCP 1019216383 192.168.0.109 0 typ host tcptype active\r\na=candidate:9 1 TCP 1015022079 192.168.0.109 61511 typ host tcptype passive\r\na=candidate:10 1 UDP 2013266431 21.57.2.200 62691 typ host\r\na=candidate:11 1 TCP 1019216383 21.57.2.200 0 typ host tcptype active\r\na=candidate:12 1 TCP 1015022079 21.57.2.200 61512 typ host tcptype passive\r\na=candidate:16 1 UDP 1677722111 104.193.168.123 61918 typ srflx raddr 192.168.0.109 rport 61918\r\na=candidate:17 1 TCP 847249919 104.193.168.123 0 typ srflx raddr 192.168.0.109 rport 0 tcptype active\r\na=candidate:18 1 TCP 843055615 104.193.168.123 61511 typ srflx raddr 192.168.0.109 rport 61511 tcptype passive\r\na=candidate:20 1 UDP 167772671 52.34.12.79 50146 typ relay raddr 192.168.0.109 rport 61918\r\na=candidate:24 1 UDP 1677722111 208.54.5.174 42105 typ srflx raddr 21.57.2.200 rport 62691\r\na=candidate:25 1 TCP 847249919 208.54.5.174 0 typ srflx raddr 21.57.2.200 rport 0 tcptype active\r\na=candidate:26 1 TCP 843055615 208.54.5.174 61512 typ srflx raddr 21.57.2.200 rport 61512 tcptype passive\r\na=candidate:28 1 UDP 167772671 52.34.12.79 60310 typ relay raddr 21.57.2.200 rport 62691\r\na=fingerprint:sha-256 A2:29:0A:F6:4B:2D:D3:36:4B:89:6D:3C:A8:FA:07:CF:A6:65:94:FA:2E:80:FF:81:54:18:34:5E:CD:A6:B9:B5\r\na=setup:active\r\n"},"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5"},"jsonrpc":"2.0"}<
2016-01-26 07:05:52,454041 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:118 kms_base_rtp_session_get_connection() Connection '0' not found
2016-01-26 07:05:52,454174 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:675 kms_base_rtp_session_start_transport_send() Cannot configure connection for media 0.
2016-01-26 07:05:52,454303 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:118 kms_base_rtp_session_get_connection() Connection '1' not found
2016-01-26 07:05:52,454418 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:675 kms_base_rtp_session_start_transport_send() Cannot configure connection for media 1.
2016-01-26 07:05:52,454552 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:118 kms_base_rtp_session_get_connection() Connection '0' not found
2016-01-26 07:05:52,454665 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:118 kms_base_rtp_session_get_connection() Connection '1' not found
2016-01-26 07:05:52,456760 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:118 kms_base_rtp_session_get_connection() Connection '0' not found
2016-01-26 07:05:52,457138 30249 [0x00007fb896547700] warning kmsbasertpsession kmsbasertpsession.c:118 kms_base_rtp_session_get_connection() Connection '1' not found
2016-01-26 07:05:52,457459 30249 [0x00007fb896547700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":5,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":"v=0\r\no=- 3662780747 3662780747 IN IP4 0.0.0.0\r\ns=Kurento Media Server\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=group:BUNDLE audio0 video0\r\nm=audio 1 RTP/SAVPF 0\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=ssrc:65526568 cname:user1694387668@host-29df7460\r\na=ice-ufrag:Cz7u\r\na=ice-pwd:05vutO2zPmsBA+uTklu8rU\r\na=fingerprint:sha-256 D2:63:E1:5A:0A:1A:D0:EB:E4:50:0B:95:90:E4:E4:A1:FA:58:AF:0A:27:80:4D:9E:38:65:0E:34:C1:1E:A4:0A\r\na=mid:audio0\r\nm=video 1 RTP/SAVPF 97\r\nb=AS:500\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=rtpmap:97 VP8/90000\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 goog-remb\r\na=rtcp-fb:97 ccm fir\r\na=ssrc:980934908 cname:user1694387668@host-29df7460\r\na=ice-ufrag:Cz7u\r\na=ice-pwd:05vutO2zPmsBA+uTklu8rU\r\na=fingerprint:sha-256 D2:63:E1:5A:0A:1A:D0:EB:E4:50:0B:95:90:E4:E4:A1:FA:58:AF:0A:27:80:4D:9E:38:65:0E:34:C1:1E:A4:0A\r\na=mid:video0\r\n"}}
<
2016-01-26 07:05:52,615117 30249 [0x00007fb891d3e700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":6,"method":"subscribe","params":{"type":"OnIceCandidate","object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5"},"jsonrpc":"2.0"}<
2016-01-26 07:05:52,615527 30249 [0x00007fb891d3e700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":6,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":"b68fa4e6-b7f9-4993-af66-55ee9ecbb792"}}
<
2016-01-26 07:05:52,741924 30249 [0x00007fb891d3e700] debug KurentoWebSocketTransport WebSocketTransport.cpp:485 processMessage() Message: >{"id":7,"method":"invoke","params":{"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","operation":"gatherCandidates","sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5"},"jsonrpc":"2.0"}<
2016-01-26 07:05:52,743835 30249 [0x00007fb891d3e700] debug KurentoWebSocketEventHandler WebSocketEventHandler.cpp:52 sendEvent() Sending event: {"jsonrpc":"2.0","method":"onEvent","params":{"value":{"data":{"candidate":{"module":"kurento","type":"IceCandidate","candidate":"candidate:1 1 UDP 2013266431 172.31.11.58 37364 typ host","sdpMLineIndex":0,"sdpMid":"audio0"},"source":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","tags":[],"timestamp":"1453791952","type":"OnIceCandidate"},"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","type":"OnIceCandidate"}}}
-> 02efa7e1-2a39-4824-985b-03aa3d1b32b5
2016-01-26 07:05:52,744039 30249 [0x00007fb891d3e700] debug KurentoWebSocketEventHandler WebSocketEventHandler.cpp:52 sendEvent() Sending event: {"jsonrpc":"2.0","method":"onEvent","params":{"value":{"data":{"candidate":{"module":"kurento","type":"IceCandidate","candidate":"candidate:1 1 UDP 2013266431 172.31.11.58 37364 typ host","sdpMLineIndex":1,"sdpMid":"video0"},"source":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","tags":[],"timestamp":"1453791952","type":"OnIceCandidate"},"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","type":"OnIceCandidate"}}}
-> 02efa7e1-2a39-4824-985b-03aa3d1b32b5
2016-01-26 07:05:52,744276 30249 [0x00007fb891d3e700] debug KurentoWebSocketEventHandler WebSocketEventHandler.cpp:52 sendEvent() Sending event: {"jsonrpc":"2.0","method":"onEvent","params":{"value":{"data":{"candidate":{"module":"kurento","type":"IceCandidate","candidate":"candidate:1 2 UDP 2013266430 172.31.11.58 53648 typ host","sdpMLineIndex":0,"sdpMid":"audio0"},"source":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","tags":[],"timestamp":"1453791952","type":"OnIceCandidate"},"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","type":"OnIceCandidate"}}}
-> 02efa7e1-2a39-4824-985b-03aa3d1b32b5
2016-01-26 07:05:52,744515 30249 [0x00007fb891d3e700] debug KurentoWebSocketEventHandler WebSocketEventHandler.cpp:52 sendEvent() Sending event: {"jsonrpc":"2.0","method":"onEvent","params":{"value":{"data":{"candidate":{"module":"kurento","type":"IceCandidate","candidate":"candidate:1 2 UDP 2013266430 172.31.11.58 53648 typ host","sdpMLineIndex":1,"sdpMid":"video0"},"source":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","tags":[],"timestamp":"1453791952","type":"OnIceCandidate"},"object":"bfbb08ae-e235-457d-9e8d-1ac2dc57cf15_kurento.MediaPipeline/136f5cb1-2b9e-4f32-a31c-ac7f960b3150_kurento.WebRtcEndpoint","type":"OnIceCandidate"}}}
-> 02efa7e1-2a39-4824-985b-03aa3d1b32b5
2016-01-26 07:05:52,744790 30249 [0x00007fb891d3e700] debug KurentoWebSocketTransport WebSocketTransport.cpp:487 processMessage() Response: >{"id":7,"jsonrpc":"2.0","result":{"sessionId":"02efa7e1-2a39-4824-985b-03aa3d1b32b5","value":null}}

setMaxVideoxxx to 0 does not set unlimited upper values, and there is a typo in setMaxOuputBitrate

I'm trying to stream with a high bitrate, but no matter what I do Kurento (6.2.0) always sets target-bitrate to 300000 on the encoder. Here's my latest attempt:

    viewer.element = create('WebRtcEndpoint');
    viewer.element.setMaxVideoRecvBandwidth(0);
    viewer.element.setMaxVideoSendBandwidth(0);
    viewer.element.setMinVideoRecvBandwidth(1000);
    viewer.element.setMinVideoSendBandwidth(1000);
    viewer.element.setMaxOuputBitrate(1000000);

Oddly enough, the property max-output-bitrate gets correctly set to 1000000 on the KmsWebrtcEndpoint bin, but that doesn't seem to affect vp8enc. The setMin/MaxVideoSend/RecvBandwidth family of functions appear to have to effect whatsoever as far as I can tell.

Also, setMaxOuputBitrate should probably be spelled setMaxOutputBitrate, unless I'm missing something.

Can't record composite hub

I'm getting this error when I try to create a recording from a composite hub:

Error occured in media pipeline: Internal data flow error. -> gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline32/KmsCompositeMixer:kmscompositemixer14/GstVideoTestSrc:videotestsrc14:
streaming task paused, reason not-negotiated (-4) 1 UNEXPECTED_PIPELINE_ERROR

Sample Reproduction Code:

callerWebRtcEP.connect(calleeWebRtcEP);
calleeWebRtcEP.connect(callerWebRtcEP);

composite = new Composite.Builder(pipeline).build();

calleeHubPort = new HubPort.Builder(composite).build();
callerHubPort = new HubPort.Builder(composite).build();

calleeWebRtcEP.connect(calleeHubPort);
callerWebRtcEP.connect(callerHubPort);

callerHubPort.connect(recorderEP);

recorderEP.record();

Media server crashes when calling proccessOffer with an empty string using the node library

We are using kurento-client version 6.1.0 module in Node.js.

When calling WebRtcEndpoint.processOffer('') with an empty string the the media server crashes. The error log contains following entry.

** (kurento-media-server:21255): CRITICAL **: kms_ref_struct_ref: assertion 'refstruct != NULL' failed

The same error occurs when calling processAnswer with an empty string. It can also be reproduced by using a RtpEndpoint.

We're running Ubuntu 14.04 LTS and the following Kurento version.

Version: 6.1.1
Found modules:
    Module: 'core' version '6.1.2'
    Module: 'elements' version '6.1.1'
    Module: 'filters' version '6.1.1'

one2many tutorial not working with Firefox 42.0 when requesting video only

With the kurento one2many tutorial (https://github.com/Kurento/kurento-tutorial-node.git),
we found that the video would not show up under the 'Viewer'
in the Firefox browser under these circumstances:

  1. The traffic is H.264. I.e. We disabled vp8 on KMS forcing h.264. vp8 traffic doesn't appear to have this issue
  2. The browser is Firefox version 42.0. We verified the older Firefox versions like 41 and 39 didn't have this issue.
  3. The 'Viewer' user requests video but no audio by setting mediaConstraints.audio to false.
    Note that if the user sets both audio and video constraints to true, the issue won't happen.

Now, to match my configuration:

To configure H.264, I did on the KMS box:

install H.264 using the openh264:

$ sudo apt-get install openh264-gst-plugins-bad-1.5
$ sudo apt-get install gstreamer1.5-plugins

Then remove VP8 from Kurento by

a) commenting out:

a=rtpmap:97 VP8/90000

in this file:

/etc/kurento/sdp_pattern.txt

and

b) commenting out these lines

{
"name" : "VP8/90000"
},

from this file:

/etc/kurento/modules/kurento/SdpEndpoint.conf.json

Then restart Kurento on both boxes to pick up the change:

sudo service kurento-media-server-6.0 restart


To configure the 'Viewer' in the tutorial to request no audio, I altered:

kurento-tutorial-node/kurento-one2many-call/static/js/index.js

by adding the mediaConstraints option with audio set to false like this:

function viewer() {
if (!webRtcPeer) {
showSpinner(video);

            var options = {
                    remoteVideo: video,
                    onicecandidate : onIceCandidate,
                    mediaConstraints : {
                            audio: false,
                            video: true
                    }
            }

            webRtcPeer = kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(options, function(error) {
                    if(error) return onError(error);

                    this.generateOffer(onOfferViewer);
            });
    }

}

Again, setting both audio and video to true doesn't reproduce this issue.

Once you create the Presenter and have one Viewer, notice that the Viewer won't see anything.
However, if you run network activity monitor on your browser box, you'll see it reporting
that network traffic is actually coming in. But it's just for some reason no video is displayed
on the Firefox browser.

The kurento version is 6.1.1.

If you still can't reproduce the issue, let me know. it could be possible the issue happens
if you disconnect all viewers from the presenter. I can later explain that if necessary.

Cannot build Kurento 6.1.1 on Ubuntu 14.04

Hello,

We are running into some issues with Kurento 6.3.2 related to the TURN server. So, we are trying to downgrade to the last-known version which worked well for us โ€“ 6.1.1.

We tried to build Kurento 6.1.1 on Ubuntu 14.04 with GCC version 4.8.5, but we ran into a build error as follow:

[ 63%] Building CXX object server/CMakeFiles/kurento-media-server.dir/ServerMethods.cpp.o
/home/pac/Desktop/kurento-media-server-6.1.1/server/ServerMethods.cpp: In constructor โ€˜kurento::ServerMethods::ServerMethods(const ptree&)โ€™:
/home/pac/Desktop/kurento-media-server-6.1.1/server/ServerMethods.cpp:92:94: error: no matching function for call to โ€˜kurento::ModuleInfo::ModuleInfo(std::string, std::string, std::vector<std::basic_string<char> >&)โ€™
                          moduleIt.second->getVersion(), moduleIt.second->getName(), factories) ) );
                                                                                              ^
/home/pac/Desktop/kurento-media-server-6.1.1/server/ServerMethods.cpp:92:94: note: candidates are:
In file included from /home/pac/Desktop/kurento-media-server-6.1.1/server/ServerMethods.cpp:35:0:
/usr/include/kurento/modules/core/ModuleInfo.hpp:85:3: note: kurento::ModuleInfo::ModuleInfo()
   ModuleInfo() {};
   ^
/usr/include/kurento/modules/core/ModuleInfo.hpp:85:3: note:   candidate expects 0 arguments, 3 provided
In file included from /home/pac/Desktop/kurento-media-server-6.1.1/server/ServerMethods.cpp:35:0:
/usr/include/kurento/modules/core/ModuleInfo.hpp:31:3: note: kurento::ModuleInfo::ModuleInfo(const string&, const string&, const string&, const std::vector<std::basic_string<char> >&)
   ModuleInfo (const std::string &version, const std::string &name, const std::string &generationTime, const std::vector<std::string> &factories) {
   ^
/usr/include/kurento/modules/core/ModuleInfo.hpp:31:3: note:   candidate expects 4 arguments, 3 provided
/usr/include/kurento/modules/core/ModuleInfo.hpp:26:7: note: kurento::ModuleInfo::ModuleInfo(const kurento::ModuleInfo&)
 class ModuleInfo : public RegisterParent 
       ^
/usr/include/kurento/modules/core/ModuleInfo.hpp:26:7: note:   candidate expects 1 argument, 3 provided
/usr/include/kurento/modules/core/ModuleInfo.hpp:26:7: note: kurento::ModuleInfo::ModuleInfo(kurento::ModuleInfo&&)
/usr/include/kurento/modules/core/ModuleInfo.hpp:26:7: note:   candidate expects 1 argument, 3 provided
make[2]: *** [server/CMakeFiles/kurento-media-server.dir/ServerMethods.cpp.o] Error 1
make[1]: *** [server/CMakeFiles/kurento-media-server.dir/all] Error 2
make: *** [all] Error 2

The exact commands are as follow:

  506  lsb_release -a
  507  echo "deb http://ubuntu.kurento.org trusty-dev kms6" | sudo tee /etc/apt/sources.list.d/kurento-dev.list
  508  sudo apt-get update
  509  sudo apt-get install $(cat debian/control | sed -e "s/$/\!\!/g" | tr -d '\n' | sed "s/\!\! / /g" | sed "s/\!\!/\n/g" | grep "Build-Depends" | sed "s/Build-Depends: //g" | sed "s/([^)]*)//g" | sed "s/, */ /g")
  510  wget https://github.com/Kurento/kurento-media-server/archive/6.1.1.tar.gz
  511  tar xvzf 6.1.1.tar.gz 
  512  cd kurento-media-server-6.1.1/
  513  mkdir -p build
  514  cd build
  515  cmake ..
  519  make -j2
  520  g++ --version

Here's the complete build steps that led to the above error for your review.

https://gist.github.com/sivabudh/e7c99991996c3883e160

PS: Thanks for such a great work! You guys rock!

KMS 6.4.0 with turn (transport=tcp) crash if we turn off the turn

We have KMS 6.4 and a Turn server in different machines.
If we make a call and the streams go through the turn server, if we suddenly turn off the turn server, KMS process crash and we have to reboot it.
Steps to reproduce:
Cut UDP traffic in Server where is hosted KMS
Stablish a call and be sure that streams travel through the turn server via TCP.
During the call, switch off the turn
Allow UDP traffic again in the server
Try to make again the call

kms-elements dev package dependencies

As I understood (maybe I am wrong?), kms-elements-6.0-dev Ubuntu package should be dependent from openwebrtc-gst-plugins-dev and libsoup2.4-dev, because to build something with kms-elements we need to link against that libs.

Trouble with release() of rtpEndpoint

KMS
Version: 6.2.16.g9d55178
Found modules:
Module: 'core' version '6.2.1
17.g6c37842'
Module: 'elements' version '6.2.131.g18f2840'
Module: 'filters' version '6.2.1
1.gda6c417'

Os - ubuntu

When i create rtpEdnpoint for presenter by connecting to webRtcEndpoint - rtp encoding starts, and processor in hi load, all Ok.
But when I stop only rtpEndpoint (webRtcEndpoint leave alive) by calling rtpEndpont.release(). Processor still in hi load, and encoding still alive.

I cant find any errors in kurento logs.

Example for demonstration trouble is here (based on node one2many call titorial) - https://github.com/Lisitskiy/kurento-one2many-call

  1. Click - Presenter
  2. Click - Start Presenter Rtp
  3. Click - Stop Presenter Presenter

Latency of remote stream loop back with IPC/RTSP/RTMP.

Hi, all:

First off, thanks for this great work!

And I have walk through all of the tutorials, from hello-world to custom module and element metadata filter testing, function works well, but with time delay and poor performance while remote stream playing with IPC/RTSP/RTMP.

I just wonder does I missing somewhere configuration, or does the JSON IDL hurts the performance, or does the KMS transcoding lower performance, or could be use Thrift IDL, or MQTT messaging service to enhance existed web web socketing and JSON parsing functionality?

Thanks,
Yangbo

npm install for kurento-tutorial-node displays error messages

I have something like for any particular tutorial:

gyp ERR! build error gyp ERR! stack Error:makefailed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23) gyp ERR! stack at emitTwo (events.js:87:13) gyp ERR! stack at ChildProcess.emit (events.js:172:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) gyp ERR! System Darwin 15.4.0 gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /Users/cyril/Developer/kurento-tutorial-node/kurento-chroma/node_modules/ws/node_modules/bufferutil gyp ERR! node -v v4.2.1 gyp ERR! node-gyp -v v3.0.3 gyp ERR! not ok npm WARN optional dep failed, continuing [email protected]

Subsequent npm install calls shows no error.

KMS 6.4.0 No audio in Firefox (Windows)

After migrating to KMS 6.4 I have identified a problem in Firefox 44
In the onetomany tutorial, if presenter uses Chrome and the viewer Firefox, the viewer doesn't receive audio.
Other scenarios works perfectly

Chrome--->Chrome OK
Firefox--->Chrome OK
Firefox--->Firefox OK
Chrome--->Firefox KO

I have tested under Windows

Regards

Kurento-room-server does not have a mainClass defined in pom.xml

I use openjdk-7 and receive the following error:

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:java (default-cli) on project kurento-room-server: The parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin:1.3.2:java are missing or invalid

KMS 6.4.1 + libnice.0.1.13 segmentation fault (return)

I am using latest Kurento Media Server (6.4) and node.js app for one-2-one calls. However, Kurento process crashes from time to time inside libnice: (multiple crashes point to the same lib entries)

Segmentation fault (thread 139888166897408, pid 1093)
Stack trace:
[nice_output_stream_new]
/usr/lib/x86_64-linux-gnu/libnice.so.10:0x28C74
[nice_output_stream_new]
/usr/lib/x86_64-linux-gnu/libnice.so.10:0x2B00A
[nice_output_stream_new]
/usr/lib/x86_64-linux-gnu/libnice.so.10:0x2BD09
[nice_agent_gather_candidates]
/usr/lib/x86_64-linux-gnu/libnice.so.10:0x13E8B
[nice_agent_gather_candidates]
/usr/lib/x86_64-linux-gnu/libnice.so.10:0x1431E
[g_simple_permission_new]
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0:0x75B21
[g_main_context_dispatch]
/lib/x86_64-linux-gnu/libglib-2.0.so.0:0x49EAA
[g_main_context_dispatch]
/lib/x86_64-linux-gnu/libglib-2.0.so.0:0x4A250
[g_main_loop_run]
/lib/x86_64-linux-gnu/libglib-2.0.so.0:0x4A572
[gst_nice_src_get_type]
/usr/lib/x86_64-linux-gnu/gstreamer-1.5/libgstnice15.so:0x2F99
[g_test_get_filename]
/lib/x86_64-linux-gnu/libglib-2.0.so.0:0x70965
[start_thread]
/lib/x86_64-linux-gnu/libpthread.so.0:0x8182
[clone]
/lib/x86_64-linux-gnu/libc.so.6:0xFA47D

Converted stack trace

--- stack trace ---
#0  0x00007fc243a50cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
        resultvar = 0
        pid = 14973
        selftid = 18597
#1  0x00007fc243a540d8 in __GI_abort () at abort.c:89
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x7fc2240d8840, sa_sigaction = 0x7fc2240d8840}, sa_mask = {__val = {2, 18628, 140472386274647, 5, 0, 0, 140472335076648, 140471980504576, 18628, 11, 140472386303253, 0, 140472372118602, 0, 140471980499680, 6}}, sa_flags = 0, sa_restorer = 0x1}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00000000005188f1 in safe_abort () at /opt/kurento/kurento-media-server/server/death_handler.cpp:299
        sa = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0, 5, 0, 0, 140472372063624, 140471980504576, 18628, 11, 140472386303253, 0, 140472335273911, 1, 140471980500192, 18628, 140472372117244, 140471980500192}}, sa_flags = 469762052, sa_restorer = 0x7fc245d74340 <__restore_rt>}
#3  Debug::DeathHandler::SignalHandler (sig=<optimized out>, secret=<optimized out>) at /opt/kurento/kurento-media-server/server/death_handler.cpp:600
        forkedPid = <optimized out>
        trace_size = <optimized out>
        name_buf = <optimized out>
        end = 0 '\000'
        memory = 0x0
        trace = <optimized out>
        oldFreeHook = <optimized out>
        path_max_length = <optimized out>
        cwd = <optimized out>
        uc = <optimized out>
        oldMallocHook = <optimized out>
        prev_memory = <optimized out>
#4  <signal handler called>
No locals.
#5  0x00007fc23fdef3d4 in socket_is_reliable (sock=0x7fc2240b8250) at udp-turn-over-tcp.c:444
        priv = 0x0
#6  0x00007fc23fddcd6b in agent_socket_send (sock=0x7fc2240b8250, addr=addr@entry=0x7fc2240d8858, len=56, buf=buf@entry=0x7fc2240dbae8 "") at agent.c:6032
No locals.
#7  0x00007fc23fde3932 in priv_discovery_tick_unlocked (pointer=pointer@entry=0x7fc224029030) at discovery.c:1130
        timeout = 397
        now = {tv_sec = 1458209263, tv_usec = 613151}
        cand = 0x7fc2240d8840
        agent = 0x7fc224029030
        i = 0x7fc224083940
        not_done = 1
        buffer_len = 0
        __FUNCTION__ = "priv_discovery_tick_unlocked"
#8  0x00007fc23fde3a57 in priv_discovery_tick (pointer=0x7fc224029030, pointer@entry=<error reading variable: value has been optimized out>) at discovery.c:1189
        agent = 0x7fc224029030
        ret = <optimized out>
#9  0x00007fc24333a913 in g_timeout_dispatch (source=0x7fc2240c2d20, callback=<optimized out>, user_data=<optimized out>) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmain.c:4577
        timeout_source = 0x7fc2240c2d20
        again = <optimized out>
#10 0x00007fc243339eaa in g_main_dispatch (context=0x7fc2180008c0) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmain.c:3154
        dispatch = 0x7fc24333a900 <g_timeout_dispatch>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7fc224029030
        callback = 0x7fc23fde3a30 <priv_discovery_tick>
        cb_funcs = <optimized out>
        cb_data = 0x7fc2240bfc10
        need_destroy = <optimized out>
        source = 0x7fc2240c2d20
        current = 0x7fc2240055a0
        i = 0
#11 g_main_context_dispatch (context=context@entry=0x7fc2180008c0) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmain.c:3769
No locals.
#12 0x00007fc24333a250 in g_main_context_iterate (context=0x7fc2180008c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmain.c:3840
        max_priority = 2147483647
        timeout = 18
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 1
        fds = 0x7fc218001220
#13 0x00007fc24333a572 in g_main_loop_run (loop=0x7fc218001200) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmain.c:4034
        __func__ = "g_main_loop_run"
#14 0x00007fc2430d358d in loop_thread_init (data=<optimized out>) at /opt/kurento/kms-core/src/gst-plugins/commons/kmsloop.c:102
        self = <optimized out>
        loop = 0x7fc218001200
        context = 0x7fc2180008c0
        __FUNCTION__ = "loop_thread_init"
#15 0x00007fc243360965 in g_thread_proxy (data=0x7fc224006ca0) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gthread.c:778
        thread = <optimized out>
#16 0x00007fc245d6c182 in start_thread (arg=0x7fc22e7fc700) at pthread_create.c:312
        __res = <optimized out>
        pd = 0x7fc22e7fc700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140471980508928, 904605987515166446, 0, 0, 140471980509632, 140471980508928, -934054209651183890, -934138517035782418}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#17 0x00007fc243b1447d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

It happens during ice candidates pairings :

    2016-03-17 08:43:12,095520 1093 [0x00007f3a407f0700]   debug KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:214 newSelectedPairFull() <kmswebrtcendpoint43>  New pair selected stream_id: 1, component_id: 1, local candidate: candidate:4 1 UDP 2013266431 222.250.42.158 55844 typ host, remot
e candidate: candidate:candidate:2003496507 1 UDP 25042687 222.250.42.151 51817 typ relay raddr 83.21.212.134 rport 51817

Application log shows that error happens at the moment after both SDP answers were generated, and just before startCommunication command is going to be fired:

AppServer-0 Thu, 17 Mar 2016 08:43:11 GMT kms:CallMediaPipeline generateSdpOffer 16
AppServer-0 Thu, 17 Mar 2016 08:43:11 GMT kms:server pipeline:sdpAnswer:caller sdpReady
AppServer-0 Thu, 17 Mar 2016 08:43:11 GMT kms:CallMediaPipeline generateSdpOffer 15
AppServer-0 Thu, 17 Mar 2016 08:43:11 GMT kms:server pipeline:sdpAnswer:callee sdpReady
AppServer-0 reconnect to server 0 100 ff19ebc8-b114-495e-bf31-31f188f6ea8e

Full stack trace and log in can be seen in this gist

$ kurento-media-server -v
Version: 6.4.1~1.g3ffe480
Found modules:
        Module: 'core' version '6.4.1~2.g4ed0cfc'
        Module: 'elements' version '6.4.1~3.g8e842ad'
        Module: 'filters' version '6.4.1~3.g06e2b4f'

# dpkg -l |grep -i libnice
ii  libnice10:amd64                     0.1.13.1~20160224182402.77.g7bbb87a.trusty amd64        ICE library (shared library)

I can reproduce this by using two Chrome browsers (Mac + Win) and by making around 10-15 calls (call out - hang - call out - hang ..)

Thanks! And sorry for the long description :)

Permissive License for tutorial code

License tutorial code under more permissive license e.g. BSD.

I wonder how many people are unintentionally breaking LGPL by not releasing their application code if they've used the tutorial code as a starting point. Was the decision to licence the tutorial code as LGPL taken because the main body of work is licensed under LGPL and it happened by default?

Kurento 6.1.1 some filters are leaking memory when not connected downstream

Hi, I've noticed my Kurento server 6.1.1 would segfault with an error regarding rtpjitterbuffer
and would like to check with you guys for any ideas.
(I believe I had this issue since when I was using Kurento first time when it was 6.0.1
but decided to mentioned it now and don't suspect it's something introduced in 6.1.1 in particular)

Everytime there's a crash, I notice this rtpjitterbuffer line added in dmesg syslog:

[2383818.318980] rtpjitterbuffer[2022]: segfault at 7f68bd8d8022 ip 00007f6ed98b2005 sp 00007f69837d4eb8 error 6 in libc-2.19.so[7f6ed981a000+1bb000]
[2384993.694412] nvidia 0000:83:00.0: irq 242 for MSI/MSI-X
[2384996.247091] nvidia 0000:84:00.0: irq 243 for MSI/MSI-X
[2392555.749510] rtpjitterbuffer[2775]: segfault at 7f12115bc000 ip 00007f17c586e0b6 sp 00007f14a57f8eb8 error 6 in libc-2.19.so[7f17c57d6000+1bb000]
[2437114.484534] nvidia 0000:83:00.0: irq 242 for MSI/MSI-X
[2437117.035556] nvidia 0000:84:00.0: irq 243 for MSI/MSI-X
[2452113.745150] rtpjitterbuffer[6211]: segfault at 7f33d3bc3c32 ip 00007f3834156005 sp 00007f34337fceb8 error 6 in libc-2.19.so[7f38340be000+1bb000]

Right now, I don't know what exactly triggers this. We have multiple users trying to view webrtc connections
and involve the WebRtcEndpoint and CV Filters
and we are using H.264 only (no VP8).
It doesn't crash constantly, just seemingly random perhaps a few times a day.

Here's the version of software we are running for gstreamer, kurento:

tsonghong@topper:/tmp/cores$ dpkg --list | grep kurento
ii kurento-media-server-6.0 6.1.120150917092655.5.g9fdeccd.trusty amd64 Kurento Media Server
ii kurento-media-server-6.0-dev 6.1.1
20150917092655.5.g9fdeccd.trusty amd64 Kurento media server, development files and tools
ii kurento-module-creator-4.0 4.0.1.trusty all Kurento module creator
tsonghong@topper:/tmp/cores$ dpkg --list | grep kms
ii bbswitch-dkms 0.7-2ubuntu1 amd64 Interface for toggling the power on nVidia Optimus video cards
ii dkms 2.2.0.3-1.1ubuntu5.14.04.1 all Dynamic Kernel Module Support Framework
ii kms-chroma-6.0 6.1.120150911095807.1.gfcd2964.trusty amd64 Kurento Chroma Filter
ii kms-cmake-utils 1.2.2
20150714125501.1.g3acfd2b.trusty all Kurento cmake utils
ii kms-core-6.0 6.1.220150911093636.55.gc48a96a.trusty amd64 Kurento core module
ii kms-core-6.0-dev 6.1.2
20150911093636.55.gc48a96a.trusty amd64 Kurento core module
ii kms-crowddetector-6.0 6.1.120150911095836.1.gacc19a5.trusty amd64 Kurento Crowd Detector Filter
ii kms-elements-6.0 6.1.1
20150911095143.52.g9bf6042.trusty amd64 Kurento elements module
ii kms-elements-6.0-dev 6.1.120150911095143.52.g9bf6042.trusty amd64 Kurento elements module
ii kms-filters-6.0 6.1.1
20150911095453.1.g7dcf61b.trusty amd64 Kurento filters module
ii kms-filters-6.0-dev 6.1.120150911095453.1.g7dcf61b.trusty amd64 Kurento filters module
ii kms-jsonrpc-1.0 1.0.1
20150714130721.1.g78881e4.trusty amd64 Kurento jsonrpc library
ii kms-jsonrpc-1.0-dev 1.0.120150714130721.1.g78881e4.trusty amd64 Kurento jsonrpc library
ii kms-platedetector-6.0 6.1.1
20150911095820.1.g437567f.trusty amd64 Kurento Plate Detector Filter
ii kms-pointerdetector-6.0 6.1.120150911095927.1.gc6c3092.trusty amd64 Kurento Pointer Detector Filter
ii kmsjsoncpp 1.6.3
20150901123209.38.g263929e.trusty amd64 Kurento jsoncpp library
ii kmsjsoncpp-dev 1.6.3~20150901123209.38.g263929e.trusty amd64 Kurento jsonrpc library
tsonghong@topper:/tmp/cores$

tsonghong@topper:/tmp/cores$ dpkg --list | grep gst
ii gir1.2-gst-plugins-base-1.5 1.5.9020150904162934.164.g70e0c36.trusty amd64 Description: GObject introspection data for the GStreamer Plugins Base library
ii gir1.2-gstreamer-1.0 1.2.4-0ubuntu1 amd64 Description: GObject introspection data for the GStreamer library
ii gir1.2-gstreamer-1.5 1.5.90
20150904161713.208.g2893eef.trusty amd64 Description: GObject introspection data for the GStreamer library
ii gstreamer0.10-pulseaudio:amd64 0.10.31-3+nmu1ubuntu5 amd64 GStreamer plugin for PulseAudio
ii gstreamer1.0-clutter 2.0.8-1build1 amd64 Clutter PLugin for GStreamer 1.0
ii gstreamer1.0-plugins-base:amd64 1.2.4-1ubuntu1 amd64 GStreamer plugins from the "base" set
ii gstreamer1.0-plugins-good:amd64 1.2.4-1
ubuntu1 amd64 GStreamer plugins from the "good" set
ii gstreamer1.0-x:amd64 1.2.4-1ubuntu1 amd64 GStreamer plugins for X11 and Pango
ii gstreamer1.5-alsa:amd64 1.5.90
20150904162934.164.g70e0c36.trusty amd64 GStreamer plugin for ALSA
ii gstreamer1.5-doc 1.5.2.120150901123757.112.ga536485.trusty all GStreamer core documentation and manuals
ii gstreamer1.5-libav:amd64 1.5.2.1
20150901123759.34.g07a7b16.trusty amd64 libav plugin for GStreamer
ii gstreamer1.5-libav-dbg:amd64 1.5.2.120150901123759.34.g07a7b16.trusty amd64 libav plugin for GStreamer (debug symbols)
ii gstreamer1.5-nice:amd64 0.1.7.1
20150901123618.10.ge060eb5.trusty amd64 ICE library (GStreamer plugin)
ii gstreamer1.5-plugins-bad:amd64 1.5.9020150908080720.82.g02d110d.trusty amd64 GStreamer plugins from the "bad" set
ii gstreamer1.5-plugins-bad-dbg:amd64 1.5.90
20150908080720.82.g02d110d.trusty amd64 GStreamer plugins from the "bad" set (debug symbols)
ii gstreamer1.5-plugins-bad-doc 1.5.9020150908080720.82.g02d110d.trusty all GStreamer documentation for plugins from the "bad" set
ii gstreamer1.5-plugins-base:amd64 1.5.90
20150904162934.164.g70e0c36.trusty amd64 GStreamer plugins from the "base" set
ii gstreamer1.5-plugins-base-apps 1.5.9020150904162934.164.g70e0c36.trusty amd64 GStreamer helper programs from the "base" set
ii gstreamer1.5-plugins-base-dbg:amd64 1.5.90
20150904162934.164.g70e0c36.trusty amd64 GStreamer plugins from the "base" set
ii gstreamer1.5-plugins-base-doc 1.5.9020150904162934.164.g70e0c36.trusty all GStreamer documentation for plugins from the "base" set
ii gstreamer1.5-plugins-good:amd64 1.5.90
20150911130940.37.g4b11097.trusty amd64 GStreamer plugins from the "good" set
ii gstreamer1.5-plugins-good-dbg:amd64 1.5.9020150911130940.37.g4b11097.trusty amd64 GStreamer plugins from the "good" set
ii gstreamer1.5-plugins-good-doc 1.5.90
20150911130940.37.g4b11097.trusty all GStreamer documentation for plugins from the "good" set
ii gstreamer1.5-plugins-ugly:amd64 1.5.9020150904171312.32.g7b02ce4.trusty amd64 GStreamer plugins from the "ugly" set
ii gstreamer1.5-plugins-ugly-dbg:amd64 1.5.90
20150904171312.32.g7b02ce4.trusty amd64 GStreamer plugins from the "ugly" set (debug symbols)
ii gstreamer1.5-plugins-ugly-doc 1.5.9020150904171312.32.g7b02ce4.trusty all GStreamer documentation for plugins from the "ugly" set
ii gstreamer1.5-pulseaudio:amd64 1.5.90
20150911130940.37.g4b11097.trusty amd64 GStreamer plugin for PulseAudio
ii gstreamer1.5-tools 1.5.2.120150901123757.112.ga536485.trusty amd64 Tools for use with GStreamer
ii gstreamer1.5-x:amd64 1.5.90
20150904162934.164.g70e0c36.trusty amd64 GStreamer plugins for X11 and Pango
ii libclutter-gst-2.0-0:amd64 2.0.8-1build1 amd64 Open GL based interactive canvas library GStreamer elements
ii libgstreamer-plugins-bad1.5-0:amd64 1.5.9020150908080720.82.g02d110d.trusty amd64 GStreamer development files for libraries from the "bad" set
ii libgstreamer-plugins-base0.10-0:amd64 0.10.36-1.1ubuntu2 amd64 GStreamer libraries from the "base" set
ii libgstreamer-plugins-base1.0-0:amd64 1.2.4-1
ubuntu1 amd64 GStreamer libraries from the "base" set
ii libgstreamer-plugins-base1.5-0:amd64 1.5.9020150904162934.164.g70e0c36.trusty amd64 GStreamer libraries from the "base" set
ii libgstreamer-plugins-base1.5-dev 1.5.90
20150904162934.164.g70e0c36.trusty amd64 GStreamer development files for libraries from the "base" set
ii libgstreamer-plugins-good1.0-0:amd64 1.2.4-1ubuntu1 amd64 GStreamer development files for libraries from the "good" set
ii libgstreamer0.10-0:amd64 0.10.36-1.2ubuntu3 amd64 Core GStreamer libraries and elements
ii libgstreamer1.0-0:amd64 1.2.4-0ubuntu1 amd64 Core GStreamer libraries and elements
ii libgstreamer1.0-dev 1.2.4-0ubuntu1 amd64 GStreamer core development files
ii libgstreamer1.5-0:amd64 1.5.90
20150904161713.208.g2893eef.trusty amd64 Core GStreamer libraries and elements
ii libgstreamer1.5-0-dbg:amd64 1.5.9020150904161713.208.g2893eef.trusty amd64 Core GStreamer libraries and elements
ii libgstreamer1.5-dev 1.5.90
20150904161713.208.g2893eef.trusty amd64 GStreamer core development files
ii openh264-gst-plugins-bad-1.5:amd64 1.5.9020150908080720.82.g02d110d.trusty amd64 GStreamer plugins from openh264
ii openwebrtc-gst-plugins 0.10.0
20150901123621.96.gf9d5cbe.trusty amd64 OpenWebRTC specific GStreamer plugins
tsonghong@topper:/tmp/cores$

ANd a dump of one of the gdb core print:

tsonghong@topper:/tmp/cores$ sudo gdb /usr/bin/kurento-media-server core.rtpjitterbuffer.2173.topper.1444919632
...
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/kurento-media-server'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:79
79  ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: No such file or directory.
Traceback (most recent call last):
  File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
(gdb) bt
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:79
#1  0x00007f17306f18eb in memcpy (__len=<optimized out>, __src=<optimized out>, __dest=0x7f11b038714a)
    at /usr/include/x86_64-linux-gnu/bits/string3.h:51
#2  gst_rtp_h264_set_src_caps (rtph264depay=rtph264depay@entry=0x7f14d4061570) at gstrtph264depay.c:367
#3  0x00007f17306f2432 in gst_rtp_h264_depay_handle_nal (rtph264depay=rtph264depay@entry=0x7f14d4061570, 
    nal=nal@entry=0x7f1317e723e0, in_timestamp=in_timestamp@entry=308597263135, marker=marker@entry=1)
    at gstrtph264depay.c:826
#4  0x00007f17306f302b in gst_rtp_h264_depay_process (depayload=depayload@entry=0x7f14d4061570, 
    rtp=rtp@entry=0x7f14a57f9380) at gstrtph264depay.c:1213
#5  0x00007f17c3d0db23 in gst_rtp_base_depayload_handle_buffer (filter=filter@entry=0x7f14d4061570, 
    in=in@entry=0x7f1317e72a40, bclass=<optimized out>, bclass=<optimized out>) at gstrtpbasedepayload.c:444
#6  0x00007f17c3d0e325 in gst_rtp_base_depayload_chain (pad=pad@entry=0x7f146400d020, 
    parent=parent@entry=0x7f14d4061570, in=in@entry=0x7f1317e72a40) at gstrtpbasedepayload.c:508
#7  0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f146400d020)
    at gstpad.c:4088
#8  gst_pad_push_data (pad=pad@entry=0x7f172c3e2c80, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
#9  0x00007f17c6fc5e5e in gst_pad_push (pad=pad@entry=0x7f172c3e2c80, buffer=buffer@entry=0x7f1317e72a40)
    at gstpad.c:4459
#10 0x00007f17c6faf9fb in gst_proxy_pad_chain_default (pad=pad@entry=0x7f172c3e1b20, 
    parent=parent@entry=0x7f172c3e2c80, buffer=buffer@entry=0x7f1317e72a40) at gstghostpad.c:126
#11 0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f172c3e1b20)
    at gstpad.c:4088
#12 gst_pad_push_data (pad=pad@entry=0x7f146400c960, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
#13 0x00007f17c6fc5e5e in gst_pad_push (pad=pad@entry=0x7f146400c960, buffer=buffer@entry=0x7f1317e72a40)
    at gstpad.c:4459
#14 0x00007f176c3375ab in gst_rtp_pt_demux_chain (pad=pad@entry=0x7f146400c4e0, parent=parent@entry=0x7f16e41eb900, 
    buf=buf@entry=0x7f1317e72a40) at gstrtpptdemux.c:442
#15 0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f146400c4e0)
    at gstpad.c:4088
#16 gst_pad_push_data (pad=pad@entry=0x7f146400c060, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
#17 0x00007f17c6fc5e5e in gst_pad_push (pad=0x7f146400c060, buffer=buffer@entry=0x7f1317e72a40) at gstpad.c:4459
#18 0x00007f176c331fbe in pop_and_push_next (jitterbuffer=jitterbuffer@entry=0x7f156802b610, seqnum=39076)
    at gstrtpjitterbuffer.c:2979
#19 0x00007f176c332c69 in handle_next_buffer (jitterbuffer=0x7f156802b610) at gstrtpjitterbuffer.c:3078
#20 gst_rtp_jitter_buffer_loop (jitterbuffer=0x7f156802b610) at gstrtpjitterbuffer.c:3513
#21 0x00007f17c6feeaae in gst_task_func (task=0x7f16e41eba70) at gsttask.c:343
#22 0x00007f17c6a637cc in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007f17c6a62e45 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007f17c80ab182 in start_thread (arg=0x7f14a57fa700) at pthread_create.c:312
#25 0x00007f17c58d047d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) where full
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:79
No locals.
#1  0x00007f17306f18eb in memcpy (__len=<optimized out>, __src=<optimized out>, __dest=0x7f11b038714a)
    at /usr/include/x86_64-linux-gnu/bits/string3.h:51
No locals.
#2  gst_rtp_h264_set_src_caps (rtph264depay=rtph264depay@entry=0x7f14d4061570) at gstrtph264depay.c:367
        data = 0x7f11b038714a "gB\300\036\032\062\065\001@z@<\"\021\250"
        len = <optimized out>
        new_size = <optimized out>
        i = 31
        profile_compat = <optimized out>
        codec_data = 0x7f1317e724f0
        map = {memory = 0x7f11124ae010, flags = (GST_MAP_READ | GST_MAP_WRITE), 
          data = 0x7f11124ae0a0 "\001B\300\036\377\340\216\242gB\300\036\034\062\065\001@z@<\"\021\250", 
          size = 2641755421, maxsize = 2641755428, user_data = {0x7f17c6fb31f7 <gst_debug_log+135>, 0x7f17307213fd, 
            0x7f14a57f8f48, 0x1}, _gst_reserved = {0x3000000030, 0x7f14a57f9028, 0x7f14a57f8f60, 0x4}}
        nalmap = {memory = 0x7f13e44594c0, flags = GST_MAP_READ, 
          data = 0x7f0db19f20a4 "gB\300\036\032\062\065\001@z@<\"\021\250", size = 4287130303, maxsize = 4287130310, 
          user_data = {0x7f17c6f8d316 <gst_buffer_map_range+534>, 0x1198830, 0x7f17c6f7fb21 <gst_object_ref+33>, 0xc}, 
          _gst_reserved = {0x7f13d33fbd70, 0xc, 0x1, 0x7f13c5a88ad0}}
        level = <optimized out>
        res = <optimized out>
        srccaps = 0x7f1484123de0
        __FUNCTION__ = "gst_rtp_h264_set_src_caps"
#3  0x00007f17306f2432 in gst_rtp_h264_depay_handle_nal (rtph264depay=rtph264depay@entry=0x7f14d4061570, 
    nal=nal@entry=0x7f1317e723e0, in_timestamp=in_timestamp@entry=308597263135, marker=marker@entry=1)
    at gstrtph264depay.c:826
        depayload = 0x7f14d4061570
        nal_type = 1
        map = {memory = 0x7f13c5a88ad0, flags = GST_MAP_READ, data = 0x7f13c5a88b60 "", size = 16, maxsize = 23, 
          user_data = {0x0, 0x0, 0x7f17c6a2d330 <g_hash_table_lookup+176>, 0xd4061570}, _gst_reserved = {
            0x7f1317e723e0, 0x7f146403275c, 0xc, 0x1}}
        outbuf = 0x0
        out_timestamp = 308597263135
        keyframe = 0
        out_keyframe = 0
        __FUNCTION__ = "gst_rtp_h264_depay_handle_nal"
#4  0x00007f17306f302b in gst_rtp_h264_depay_process (depayload=depayload@entry=0x7f14d4061570, 
    rtp=rtp@entry=0x7f14a57f9380) at gstrtph264depay.c:1213
        outsize = 16
        marker = 1
        payload_len = 12
        payload = 0x7f146403275c "a\301\020"
        header_len = 1
        nal_ref_idc = <optimized out>
        map = {memory = 0x7f13c5a88ad0, flags = GST_MAP_WRITE, data = 0x7f13c5a88b60 "", size = 16, maxsize = 23, 
---Type <return> to continue, or q <return> to quit--- 
          user_data = {0x7f1317e721c0, 0x7f1317e72600, 0x7f14a57f93d0, 0x18}, _gst_reserved = {0xca57f9380, 0x18, 0xc, 
            0x7f14a57f9380}}
        nalu_size = 12
        timestamp = 308597263135
        rtph264depay = 0x7f14d4061570
        buf = 0x7f1317e5e7f0
        outbuf = 0x7f1317e723e0
        nal_unit_type = 1 '\001'
        __FUNCTION__ = "gst_rtp_h264_depay_process"
#5  0x00007f17c3d0db23 in gst_rtp_base_depayload_handle_buffer (filter=filter@entry=0x7f14d4061570, 
    in=in@entry=0x7f1317e72a40, bclass=<optimized out>, bclass=<optimized out>) at gstrtpbasedepayload.c:444
        process_rtp_packet_func = <optimized out>
        process_func = <optimized out>
        priv = 0x7f14d4061510
        ret = GST_FLOW_OK
        out_buf = <optimized out>
        seqnum = <optimized out>
        rtptime = <optimized out>
        discont = <optimized out>
        buf_discont = <optimized out>
        gap = <optimized out>
        rtp = {buffer = 0x7f1317e72a40, state = 0, data = {0x7f1464032750, 0x0, 0x7f146403275c, 0x0}, size = {12, 0, 
            12, 0}, map = {{memory = 0x7f14640326c0, flags = GST_MAP_READ, 
              data = 0x7f1464032750 "\200\376\230\244\376+\356\316\003\363\001;a\301\020", size = 24, maxsize = 41, 
              user_data = {0x0, 0x0, 0x0, 0x0}, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, {memory = 0x0, 
              flags = (unknown: 0), data = 0x0, size = 0, maxsize = 0, user_data = {0x0, 0x0, 0x0, 0x0}, 
              _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, {memory = 0x0, flags = (unknown: 0), data = 0x0, size = 0, 
              maxsize = 0, user_data = {0x0, 0x0, 0x0, 0x0}, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, {memory = 0x0, 
              flags = (unknown: 0), data = 0x0, size = 0, maxsize = 0, user_data = {0x0, 0x0, 0x0, 0x0}, 
              _gst_reserved = {0x0, 0x0, 0x0, 0x0}}}}
#6  0x00007f17c3d0e325 in gst_rtp_base_depayload_chain (pad=pad@entry=0x7f146400d020, 
    parent=parent@entry=0x7f14d4061570, in=in@entry=0x7f1317e72a40) at gstrtpbasedepayload.c:508
        bclass = <optimized out>
        basedepay = 0x7f14d4061570
        flow_ret = <optimized out>
#7  0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f146400d020)
    at gstpad.c:4088
        chainfunc = 0x7f17c3d0e300 <gst_rtp_base_depayload_chain>
        parent = 0x7f14d4061570
        ret = <optimized out>
        handled = 0
#8  gst_pad_push_data (pad=pad@entry=0x7f172c3e2c80, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
        peer = 0x7f146400d020
        ret = <optimized out>
        handled = 0
---Type <return> to continue, or q <return> to quit---
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#9  0x00007f17c6fc5e5e in gst_pad_push (pad=pad@entry=0x7f172c3e2c80, buffer=buffer@entry=0x7f1317e72a40)
    at gstpad.c:4459
        res = <optimized out>
        __func__ = "gst_pad_push"
#10 0x00007f17c6faf9fb in gst_proxy_pad_chain_default (pad=pad@entry=0x7f172c3e1b20, 
    parent=parent@entry=0x7f172c3e2c80, buffer=buffer@entry=0x7f1317e72a40) at gstghostpad.c:126
        res = <optimized out>
        internal = 0x7f172c3e2c80
        __func__ = "gst_proxy_pad_chain_default"
#11 0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f172c3e1b20)
    at gstpad.c:4088
        chainfunc = 0x7f17c6faf940 <gst_proxy_pad_chain_default>
        parent = 0x7f172c3e2c80
        ret = <optimized out>
        handled = 0
#12 gst_pad_push_data (pad=pad@entry=0x7f146400c960, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
        peer = 0x7f172c3e1b20
        ret = <optimized out>
        handled = 0
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#13 0x00007f17c6fc5e5e in gst_pad_push (pad=pad@entry=0x7f146400c960, buffer=buffer@entry=0x7f1317e72a40)
    at gstpad.c:4459
        res = <optimized out>
        __func__ = "gst_pad_push"
#14 0x00007f176c3375ab in gst_rtp_pt_demux_chain (pad=pad@entry=0x7f146400c4e0, parent=parent@entry=0x7f16e41eb900, 
    buf=buf@entry=0x7f1317e72a40) at gstrtpptdemux.c:442
        ret = GST_FLOW_OK
        rtpdemux = 0x7f16e41eb900
        pt = <optimized out>
        srcpad = 0x7f146400c960
        caps = <optimized out>
        rtp = {buffer = 0x0, state = 0, data = {0x0, 0x0, 0x0, 0x0}, size = {0, 0, 0, 0}, map = {{memory = 0x0, 
              flags = GST_MAP_READ, data = 0x7f1464032750 "\200\376\230\244\376+\356\316\003\363\001;a\301\020", 
              size = 24, maxsize = 41, user_data = {0x0, 0x0, 0x0, 0x0}, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, {
              memory = 0x0, flags = (unknown: 0), data = 0x0, size = 0, maxsize = 0, user_data = {0x0, 0x0, 0x0, 0x0}, 
              _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, {memory = 0x0, flags = (unknown: 0), data = 0x0, size = 0, 
              maxsize = 0, user_data = {0x0, 0x0, 0x0, 0x0}, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, {memory = 0x0, 
              flags = (unknown: 0), data = 0x0, size = 0, maxsize = 0, user_data = {0x0, 0x0, 0x0, 0x0}, 
              _gst_reserved = {0x0, 0x0, 0x0, 0x0}}}}
        __FUNCTION__ = "gst_rtp_pt_demux_chain"
#15 0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f146400c4e0)
    at gstpad.c:4088
        chainfunc = 0x7f176c3372e0 <gst_rtp_pt_demux_chain>
        parent = 0x7f16e41eb900
---Type <return> to continue, or q <return> to quit---
        ret = <optimized out>
        handled = 0
#16 gst_pad_push_data (pad=pad@entry=0x7f146400c060, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
        peer = 0x7f146400c4e0
        ret = <optimized out>
        handled = 0
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#17 0x00007f17c6fc5e5e in gst_pad_push (pad=0x7f146400c060, buffer=buffer@entry=0x7f1317e72a40) at gstpad.c:4459
        res = <optimized out>
        __func__ = "gst_pad_push"
#18 0x00007f176c331fbe in pop_and_push_next (jitterbuffer=jitterbuffer@entry=0x7f156802b610, seqnum=39076)
    at gstrtpjitterbuffer.c:2979
        priv = 0x7f156802b350
        result = GST_FLOW_OK
        item = <optimized out>
        outbuf = 0x7f1317e72a40
        outevent = 0x0
        outquery = 0x0
        dts = <optimized out>
        pts = <optimized out>
        percent = -1
        do_push = 1
        type = <optimized out>
        msg = 0x0
        __FUNCTION__ = "pop_and_push_next"
#19 0x00007f176c332c69 in handle_next_buffer (jitterbuffer=0x7f156802b610) at gstrtpjitterbuffer.c:3078
        gap = <optimized out>
        next_seqnum = <optimized out>
        priv = 0x7f156802b350
        item = <optimized out>
        seqnum = <optimized out>
#20 gst_rtp_jitter_buffer_loop (jitterbuffer=0x7f156802b610) at gstrtpjitterbuffer.c:3513
        priv = 0x7f156802b350
        result = <optimized out>
        __FUNCTION__ = "gst_rtp_jitter_buffer_loop"
#21 0x00007f17c6feeaae in gst_task_func (task=0x7f16e41eba70) at gsttask.c:343
        lock = 0x7f146400c0d0
        tself = 0x7f1464007190
        priv = 0x7f16e41eba20
        __PRETTY_FUNCTION__ = "gst_task_func"
#22 0x00007f17c6a637cc in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#23 0x00007f17c6a62e45 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#24 0x00007f17c80ab182 in start_thread (arg=0x7f14a57fa700) at pthread_create.c:312
---Type <return> to continue, or q <return> to quit---
        __res = <optimized out>
        pd = 0x7f14a57fa700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139726652679936, -608099250359815056, 0, 0, 139726652680640, 
                139726652679936, 695474137587463280, 693564106158191728}, mask_was_saved = 0}}, priv = {pad = {0x0, 
              0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#25 0x00007f17c58d047d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.
(gdb) 
(gdb) bt
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:79
#1  0x00007f17306f18eb in memcpy (__len=<optimized out>, __src=<optimized out>, __dest=0x7f11b038714a)
    at /usr/include/x86_64-linux-gnu/bits/string3.h:51
#2  gst_rtp_h264_set_src_caps (rtph264depay=rtph264depay@entry=0x7f14d4061570) at gstrtph264depay.c:367
#3  0x00007f17306f2432 in gst_rtp_h264_depay_handle_nal (rtph264depay=rtph264depay@entry=0x7f14d4061570, 
    nal=nal@entry=0x7f1317e723e0, in_timestamp=in_timestamp@entry=308597263135, marker=marker@entry=1)
    at gstrtph264depay.c:826
#4  0x00007f17306f302b in gst_rtp_h264_depay_process (depayload=depayload@entry=0x7f14d4061570, 
    rtp=rtp@entry=0x7f14a57f9380) at gstrtph264depay.c:1213
#5  0x00007f17c3d0db23 in gst_rtp_base_depayload_handle_buffer (filter=filter@entry=0x7f14d4061570, 
    in=in@entry=0x7f1317e72a40, bclass=<optimized out>, bclass=<optimized out>) at gstrtpbasedepayload.c:444
#6  0x00007f17c3d0e325 in gst_rtp_base_depayload_chain (pad=pad@entry=0x7f146400d020, 
    parent=parent@entry=0x7f14d4061570, in=in@entry=0x7f1317e72a40) at gstrtpbasedepayload.c:508
#7  0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f146400d020)
    at gstpad.c:4088
#8  gst_pad_push_data (pad=pad@entry=0x7f172c3e2c80, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
#9  0x00007f17c6fc5e5e in gst_pad_push (pad=pad@entry=0x7f172c3e2c80, buffer=buffer@entry=0x7f1317e72a40)
    at gstpad.c:4459
#10 0x00007f17c6faf9fb in gst_proxy_pad_chain_default (pad=pad@entry=0x7f172c3e1b20, 
    parent=parent@entry=0x7f172c3e2c80, buffer=buffer@entry=0x7f1317e72a40) at gstghostpad.c:126
#11 0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f172c3e1b20)
    at gstpad.c:4088
#12 gst_pad_push_data (pad=pad@entry=0x7f146400c960, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
#13 0x00007f17c6fc5e5e in gst_pad_push (pad=pad@entry=0x7f146400c960, buffer=buffer@entry=0x7f1317e72a40)
    at gstpad.c:4459
#14 0x00007f176c3375ab in gst_rtp_pt_demux_chain (pad=pad@entry=0x7f146400c4e0, parent=parent@entry=0x7f16e41eb900, 
    buf=buf@entry=0x7f1317e72a40) at gstrtpptdemux.c:442
#15 0x00007f17c6fbe4d5 in gst_pad_chain_data_unchecked (data=0x7f1317e72a40, type=<optimized out>, pad=0x7f146400c4e0)
    at gstpad.c:4088
#16 gst_pad_push_data (pad=pad@entry=0x7f146400c060, type=type@entry=4112, data=<optimized out>, 
    data@entry=0x7f1317e72a40) at gstpad.c:4340
#17 0x00007f17c6fc5e5e in gst_pad_push (pad=0x7f146400c060, buffer=buffer@entry=0x7f1317e72a40) at gstpad.c:4459
#18 0x00007f176c331fbe in pop_and_push_next (jitterbuffer=jitterbuffer@entry=0x7f156802b610, seqnum=39076)
    at gstrtpjitterbuffer.c:2979
#19 0x00007f176c332c69 in handle_next_buffer (jitterbuffer=0x7f156802b610) at gstrtpjitterbuffer.c:3078
#20 gst_rtp_jitter_buffer_loop (jitterbuffer=0x7f156802b610) at gstrtpjitterbuffer.c:3513
#21 0x00007f17c6feeaae in gst_task_func (task=0x7f16e41eba70) at gsttask.c:343
#22 0x00007f17c6a637cc in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007f17c6a62e45 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007f17c80ab182 in start_thread (arg=0x7f14a57fa700) at pthread_create.c:312
#25 0x00007f17c58d047d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) 

If you have any ideas, let me know. thanks!

Henry

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.