0%

我们要想把一个系统搞清楚,首先要把它的线程模型弄明白。比如它是单线程的还是多线程的?如果它是单线程的,那逻辑就比较简单了,像mediasoup就是单进程多实例的模型;如果是多线程的,那它的线程是如何分配的?每个线程的作用是什么?我们必须把这些都要弄清楚才行,否则我们就无法将这个系统彻底搞明白。

阅读全文 »

janus中的plugin是其非常重要的一部分内容,今天我们就来对这块内容做一下分析,看看janus是如何实现plugin的,以及它的工作原理是怎样的。

阅读全文 »

说到WebRTC流媒体服务器就不得不提janus。说实话我以前对这款流媒体服务器并没有进行特别深入的研究,不过2019年10月我有幸作为声网RTC大会 Workshop 分会场的主讲嘉宾及串场人与janus的创始人Lorenzo Miniero有了一次深入交流,从中了解到janus的强大,因此决定有时间一定要对janus做下深入分析。

阅读全文 »

之前我在《janus前端核心库源码分析》一文中已经向你详细分析了janus.js文件的实现,但对于大多同学来说,知道如何使用它才是最重要的。那具体我们该如何使用它呢?janus中的videoroomtest.js是一个不错的例子,今天就来分析一下videoroomtest.js,看看它是是如何使用janus.js的。

阅读全文 »

videoroom

在Janus的众多插件中,大家最感兴趣的恐怕就是VideoRoom插件了。因为它实现的是一个音视频会议的场景,这正是大多数同学所需要的。而且在Janus众多的插件中VideoRoom应该也是最复杂的一个,如果你们撑握了它,再去看其它插件的实现就容易多了。

VideoRoom中,包括了很多API,这些API是我们打开VideoRoom的一把钥匙,所以本文的重点就是讲解这些API。我相信当你把这些API都撑握之后,再去看VideoRoom插件的代码时就会更加游刃有余了。

阅读全文 »

DTLS-SRTP 与 DTLS 的区别

DTLS用于数据加密,它是从 TLS 发展而来。 TLS用于TCP,而DTLS用于UDP。
DTLS-SRTP 只用户握手,交换fingerprint和密钥,真正的加密由SRTP来完成。

是否开启 DTLS-SRTP

在创建PeerConnection时设置DtlsSrtpKeyAgreement参数可以关闭/打开 DTLS-SRTP
discuss-webrtc

Hello,大家好!今天我们继续来分析janus。相信现在大家应该对janus 都比较熟悉了,它是一套完整的音视频会议系统,包括了WebRTC流媒体服务器和客户端API两大部分。

其中,客户端又包括Android、iOS以及浏览器端。今天我们要分析的内容就是浏览器端中的janus.js文件。之所以要分析它,是因为它是浏览器端最关键的一个文件,了解了它我们基本上就将浏览器端的逻辑全部撑握了。

从大的方面说,janus.js主要完成两方面的事儿。一是封装了浏览器与janus流媒体服务器之间的业务接口,使得在浏览器端开发音视频会议系统变得特别简单;二是对WebRTC的API做了封装,这样用户不用再理会WebRTC底层API该何使用了。

总之一句话,就是大大的减了少JS用户使用janus的难度。

阅读全文 »

TypeScript
我们要学习一门新知识,首先要了解一些新知识的历史。TypeScript 是微软开发的,它的出现是为了解决 JavaScript 没有类型检查的弊端。因此,TypeScript并不是一门新语言,它的作用就是帮JavaScript检查数据类型是否正确,所以称它为JavaScript的一个超集是更贴切的。

有很多同学对 TypeScript 产生疑惑,他们会问 TypeScript 可以在浏览器上运行吗?

阅读全文 »

SUF
随着网络基础设施的提高,音视频实时通信越来越成为人们日常生活和工作中必不可少的需求。2011年 WebRTC的出现,则更加速了这种需求变为现实的可能性。

熟悉 WebRTC 的同学应该都知道,WebRTC规范只定义了实时通信中客户端的行为,而没有规范服务端(包括哪些信令、数据如何流转)的行为。所以,你可以使用WebRTC库方便的实现 1:1 实时通信,但对于多人实时互动,光依靠 WebRTC库显然就无法完成要求了。

那我们该如何实现多人实时互动通信呢?

阅读全文 »