前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WebRTC流媒体服务器Janus各文件主要作用

WebRTC流媒体服务器Janus各文件主要作用

作者头像
音视频_李超
发布2020-05-26 21:47:11
2.4K0
发布2020-05-26 21:47:11
举报

《WebRTC流媒体服务器-Janus的安装与布署》

一文中我已经向你介绍了如何布署Janus,今天我们来了解一下 Janus 的源码,看看Janus目录中都包括哪些文件,以及它们所起的作用是什么。

Janus架构图

下载 Janus 源码

我们可以在这里找到 Janus 服务器的源码,执行下面命令即可将其下载下来:

代码语言:javascript
复制
git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway

Janus各源码文件的作用

当我们打开 Janus 源码目录后可以看到有一堆文件,这些文件的作用是什么呢?下面我们就对几个重要的文件和目录做下说明:

代码语言:javascript
复制
events
plugins          # 各种业务插件,所有的业务应用都在这里实现
transports
docs             # Janus的文档,它是通过 Doxygen 生成的
html             # Web端的Demo都放在这里
rtcp.h           # RTCP 是RTP的控制协议
rtcp.c           # RTCP 协议的具体实现
rtp.c            # RTP协议的实现,它用于传输音视频数据
rtp.h            # RTP 协议的头文件
rtpsrtp.h        # SRTP 协议
sctp.c           # SCTP 协议的实现
sctp.h           # SCTP 协议的头文件
sdp.c            # SDP 协议的实现
sdp.h            # SDP 协议的头文件
sdp-utils.c      # 处理 SDP 的常用工具
sdp-utils.h      
test             # 测试文件所在目录
record.c         # Janus的录制功能在该文件中实现
record.h        
ice.c            # Janus 使用 libnice 实现 ICE 功能,该文件是对libnice库的封装
ice.h
janus.c          # 该文件是Janus的主框架程序,里边做了很多事儿
janus.h
log.c            # 日志
log.h
dtls-bio.c       # DTLS 中 BIO 的实现
dtls-bio.h
dtls.c           # DTLS 协议实现
dtls.h
events.c
events.h

通过上面的描述,我们大体上可以知道 Janus 的实现并不是特别复杂。它自己实现了 RTP/RTCP、SRTP、SCTP、DTLS/DTLS-BIO、SDP 等 WebRTC 必要的协议,而对于数据传输,则是使用 libnice 库,并通过 ice.c/h 对libnice 做了一层封装。

除此之外,它所有的业务层都是以 plugin 的方式实现的,这对于后面的业务拓展有很大的优势。当我们要实现一个新业务时,只要按照 plugin 的规则进行开发就好了,非常简单。

另外,Janus是用纯C实现的,并且使用了Linux社区丰常优秀的库 glib(注意不是glibc),这个库的性能非常好,对于在Linux 下开发的同学来说对它应该十分熟悉。

小结

通过本文,你应该对 Janus 的源码有了一个大体功能的了解。由于 WebRTC 使用了很多的协议(如 RTP/RTCP、DTLS、SDP等),因此作为服务端的 Janus 也都必须实现这些协议,这样才能与 WebRTC 进行通信。

对于 Janus 使用的这些协议可能很多同学会觉得一脸懵B,不知道其中的原理和作用。如果你对这块感兴趣的话,可以去看我的网课《WebRTC入门》,在课程里我对这些协议都做了详细介绍。

如果你有一定基础的话,现在应该知道 Janus 的实现并不是特别复杂,但它的架构设计还是很值得借鉴的,尤其是plugin 的设计方案。

今天我只是对Janus做个初步分析,后面会对它的一些性能做下详细分析,静请期待!

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载 Janus 源码
  • Janus各源码文件的作用
  • 小结
  • 参考
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档