前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kurento实战之三:知识点小导游

Kurento实战之三:知识点小导游

作者头像
程序员欣宸
发布2022-05-06 14:23:15
6890
发布2022-05-06 14:23:15
举报
文章被收录于专栏:实战docker

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 作为《Kurento实战》的第三篇,咱们一起将重要的知识点梳理清楚,并从整体上观察和理解Kurento,这样后面的学习和开发能更好的融会贯通,还能高效发挥Kurento的能力;

WebRTC很重要

  1. Kurento 是一个 WebRTC 媒体服务器和一组客户端API,因此,基础WebRTC知识储备是强制的、必要的,建议您提前有所了解;
  2. 没有Kurento时基于WebRTC的点对点音视频流处理逻辑如下:
在这里插入图片描述
在这里插入图片描述
  1. 有Kurento后变成下面这种,客户端实际上和KMS(Kurento Media Server)建立了点对点连接,收到的数据也来自KMS,这些数据可以是原生的,又或许是被KMS处理过的(如上一篇文章中戴一顶帽子的demo):
在这里插入图片描述
在这里插入图片描述

和GStreamer的关系

  • 对WebRTC有了了解后,应该对GStreamer有基本的了解,然后再去学习Kurento会有更好的效果,这样当你在学习Kurento的过程中,遇到pipeline、element、src、sink这些概念时会有种本该如此的感觉:这些概念在GStream中同样存在且十分重要,它们发挥的作用和在Kurento中十分相似;
  • Kurento的KMS中,录制、播放、编解码等能力都来自GStream库;
  • GStreamer 是个开源多媒体框架,可以构建流媒体应用,以管道(Pipeline)方式将各步骤串联,每个步骤的元素(Element)基于GObjec通过插件(plugins)方式实现;
  • 下面是个典型的pipeline,功能是将一个多媒体文件的音视频分离,再分别输出到音频和视频设备上:
在这里插入图片描述
在这里插入图片描述
  • 作为对比,再来看看Kurento的pipeline,下面是滤镜demo的pipeline示意图,功能是给视频中的人头上戴一顶帽子:
在这里插入图片描述
在这里插入图片描述
  • 上面两个图对比可见,基于GStreamer的Kurento也有pipeline、element、src、sink,但Kurento有自己的特点:KMS、WebRtcEndpoint、JsonRpc这些概念都和网络服务相关,回到Kurento的官方文档首页看看它的定位,如下图所示:
在这里插入图片描述
在这里插入图片描述
  • 看到这里,聪明的您对GStreamer和Kurento应该有了更深刻全面的认识:Kurento在设计上和GStreamer基本对齐,并且将GStreamer的已有能力和WebRtc实时音视频技术在Pipeline+Element机制下整合组装,打造出高效可扩展的音视频技术方案;
  • 随着Kurento学习的深入,会接触到更多的GStreamer知识,如下图是Kurento源码的脚手架文件夹中的模板代码:
在这里插入图片描述
在这里插入图片描述

Kurento的客户端

  1. 为了更好的使用KMS的能力,Kurento官方提供了java和nodejs两个版本的客户端;
  2. 如果您擅长的编程语言不是java或nodejs也没关系,可以参考Kurento Protocol自己来实现客户端(作为java程序员的欣宸涌现出一丝优越感…);
  3. 客户端的作用:提供API给业务调用,通过这些API可以向KMS发送指令,让KMS为业务服务,例如编排pipeline,如下图,重点是业务应用服务,集成了Kurento的客户端后就能向KMS发送指令了:
在这里插入图片描述
在这里插入图片描述

基本概念梳理

Kurento中涉及的概念并不算多,且很多都向GStreams对其了,总的来说比较好理解,在此将所有重要概念梳理出来便于后面的学习:

  • module:Kurento本身是插件化的框架,所有插件(plugin)都被称为module;
  • 官方将所有module分为三大类:main、built-in、custome,下图很形象的解释了它们在Kurento中的定位:
在这里插入图片描述
在这里插入图片描述
  • 紧接着官方抛出了Kurento toolbox的概念,并且将熟悉的各种能力都展现在toolboox中:
在这里插入图片描述
在这里插入图片描述
  • toolbox中的所有element与前面划分的module都是有归属关系的,我这里用思维导图整理好了,希望能帮助您梳理清楚这些关系:
在这里插入图片描述
在这里插入图片描述
  • 上述思维导图中唯有Group Communications的位置无法从前面的信息中得到,最终通过翻阅源码的方法确定了属于kms-elements(因为其源码在kms-elements工程中)
  • 几千字写完,曾经的疑惑和记录的笔记都成了这篇文章的一部分,希望本文能帮助您快速抓住重点,少走弯路少踩坑,接下来就要开始编码实战了,您准备好了么?
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎访问我的GitHub
  • 本篇概览
  • WebRTC很重要
  • 和GStreamer的关系
  • Kurento的客户端
  • 基本概念梳理
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档