美文网首页音视频直播技术WebRTC
WebRTC流媒体服务器Janus各文件主要作用

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

作者: 音视频直播技术专家 | 来源:发表于2020-05-20 12:47 被阅读0次

    《WebRTC流媒体服务器-Janus的安装与布署》
    一文中我已经向你介绍了如何布署Janus,今天我们来了解一下 Janus 的源码,看看Janus目录中都包括哪些文件,以及它们所起的作用是什么。

    Janus架构图

    下载 Janus 源码

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

    git clone https://github.com/meetecho/janus-gateway.git
    cd janus-gateway
    

    Janus各源码文件的作用

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

    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做个初步分析,后面会对它的一些性能做下详细分析,静请期待!

    参考

    相关文章

      网友评论

        本文标题:WebRTC流媒体服务器Janus各文件主要作用

        本文链接:https://www.haomeiwen.com/subject/btegohtx.html