Welcome to my GitHub

Github.com/zq2599/blog…

Content: all original article classification summary and supporting source code, involving Java, Docker, Kubernetes, DevOPS, etc.;

This paper gives an overview of

  • As the third chapter of “Kurento combat”, let’s sort out the important knowledge points together, and observe and understand Kurento as a whole, so that the later learning and development can be better integrated, but also can effectively play Kurento’s ability;

It is very important to WebRTC

  1. Kurento is a WebRTC media server and a set of client apis, so the basic WebRTC knowledge base is mandatory and necessary, and it is recommended that you get to know it in advance;
  2. Without Kurento, the point-to-point audio and video stream processing logic based on WebRTC is as follows:

3. With Kurento, the client actually establishes a point-to-point connection with KMS(Kurento Media Server) and receives data from KMS, either native or processed by KMS(the hat demo in the previous article) :

Relationship with GStreamer

  • Once you know about WebRTC, you should have a basic understanding of GStreamer before you learn Kurento, so that when you learn Kurento, you will have a feeling like pipeline, Element, SRC, sink, etc. : These concepts are also present and important in GStream, and play a similar role to Kurento;
  • In Kurento’s KMS, the recording, playing, encoding and decoding capabilities all come from GStream library;
  • GStreamer is an open source multimedia framework that allows you to build streaming applications that Pipeline the steps together, with elements of each step implemented using GObjec plugins.
  • The following is a typical pipeline for separating audio and video from a multimedia file and exporting them separately to audio and video devices:

  • For comparison, take a look at Kurento’s pipeline. Here is a diagram of the pipeline for the demo filter, which puts a hat on the head of the person in the video:

  • As can be seen from the comparison of the above two figures, Kurento based on GStreamer also has pipeline, Element, SRC, sink, but Kurento has its own characteristics: KMS, WebRtcEndpoint and JsonRpc are all related to web services. Go back to Kurento’s official documentation page to see its positioning, as shown below:

  • GStreamer and Kurento have a better understanding: Kurento is basically aligned with GStreamer in design, and integrates GStreamer’s existing capabilities with WebRtc real-time audio and video technology under Pipeline+Element mechanism to create an efficient and scalable audio and video technology solution;
  • As Kurento learns more about GStreamer, the following image shows the template code in the scaffolding folder of Kurento source code:

Kurento client

  1. To better use KMS capabilities, Kurento officially provides Java and NodeJS client versions;
  2. It doesn’t matter if your programming language is not Java or NodeJS, you can refer to Kurento Protocol to implement the client yourself. ;
  3. Function of client: provide API to business call, through these API can send instructions to KMS, let KMS for business services, such as orchestration pipeline, as shown below, focus on business application services, integrated Kurento client can send instructions to KMS:

Summary of Basic Concepts

There are not many concepts involved in Kurento, and many of them are referred to GStreams. Generally speaking, it is easier to understand, so I will sort out all the important concepts for later study:

  • Module: Kurento itself is a plug-in framework, all plug-ins are called modules;
  • All modules are officially divided into three categories: main, built-in and CUSTOME. The following figure vividly explains their positioning in Kurento:

  • Then the concept of Kurento Toolbox was introduced and all the familiar capabilities were presented in Toolboox:

  • All the elements in toolbox have a belonging relationship with the modules previously divided. I have sorted them out with mind maps here, hoping to help you sort out these relationships:

  • In the mind map above, only the position of Group Communications could not be obtained from the previous information. Finally, it was determined to belong to KMS-Elements by browsing the source code (because its source code is in kMS-Elements project).

  • Thousands of words written, once doubt and recorded notes have become a part of this article, I hope this article can help you quickly grasp the focus, less departs less step pits, the next will start coding actual combat, are you ready?

You are not alone, Xinchen original accompany all the way

  1. Java series
  2. Spring series
  3. The Docker series
  4. Kubernetes series
  5. Database + middleware series
  6. The conversation series

Welcome to pay attention to the public number: programmer Xin Chen

Wechat search “programmer Xin Chen”, I am Xin Chen, looking forward to enjoying the Java world with you…

Github.com/zq2599/blog…