As a matter of fact, I agree with the summary written by Neil.
Kurento moved early on to an Apache 2.0 license with hopes of
becoming a community project where not only the original team but
also other big players maybe contributed together. This never
happened and the project failed to get inertia.
Kurento is deep inside nothing more than a glorified manager of
pretty complex GStreamer pipelines, and tries to empower users to
create any kind of construct they want, but that comes with the
price of a high complexity that needs resources ($$$) that are not
there in the market. Right now, its maintenance is being paid for
the needs and features used by the
OpenVidu project, which by the way
is able to abstract away whether Kurento or Mediasoup are used as
WebRTC SFU media servers.
Kurento is mainly an SFU because it is natural to connect one source
(e.g. WebRtcEndpoint) to N sinks, individually. However, it is able
to act as a MCU because it has something called Composite that is
able to mix several videos into a single one. I wouldn't recommend
using it, though; in general, for WebRTC, the SFU model seems to
have won as it is much more flexible and requires less powerful
machines (can directly transmit the source video to the sinks).
Speaking of resource usage: one thing that Kurento can do and
mediasoup cannot (and not sure about other servers) is to adapt
between incompatible codecs. You can load up a video file (or an
RTSP stream from wherever) that was recorded in any random format,
and Kurento will transcode it to VP8 or H.264 so other WebRTC
consumers will accept it. Other servers, well, if the source media
is not already in the appropriate encoding, they don't help you with
that. As a result, people tend to reinvent the wheel with custom
localhost-based RTP exchange between mediasoup and FFmpeg, where
FFmpeg does the transcoding.
Lastly, Kurento is a very low level tool. It's like going for FFmpeg
when what you want is to make a DVD movie. For people who want to
*make an actual WebRTC-based product*, as opposed to tinkering
endlessly with the thousand paper cuts of the WebRTC standard, I'd
recommend to go with
OpenVidu instead. It uses Kurento
behind the scenes, and also offers an upgrade path with mediasoup
when some needs grow and Kurento is not enough any more.
Cheers
--
Juan Navarro
Software Development Engineer
Kurento & OpenVidu WebRTC platforms | https://openvidu.io/