Janus android demo

什么是 janus 网关

janus implementing the means to set up a WebRTC media communication with a browser, exchanging JSON messages with it, and relaying RTP/RTCP and messages between browsers and the server-side application logic they're attached to

webrtc 本来就是实现音视频 P2P 通信的,为什么还需要网关???

janus 本身只做3件事情,其它功能全部通过plugin 实现

  1. janus 实现了 webrtc 中的 RTP、RTCP、SDP、DLTS、ICE 等协议,这样他就可以和浏览器建立连接和通信。你可以把它看做另外一个浏览器。
  2. 实现了信令通道,浏览器可通过 websocket ,http rest 等方式和 janus 交换 json 数据。webrtc 本身没有实现信令(signaling) , 信令需要开发者自己实现。信令就是通信双方沟通通信细节的一个过程。
  3. 转发 RTP, RTCP 包。

EchoTest, VideoRoom 等应用全部通过Plugin 方式实现,你可以基于janus 规范灵活的编写自己的业务插件。

janus官方提供了基于C++ 的android sdk,但好像有bug,比较复杂。还有一个 janus-gateway-android 但接口很老了,好几年不更新了。所以最好还是自己实现一遍信令。

怎么实现??其实我们主要处理的就是 android 端的 P2P 通信的建立以及和 janus 的信令交互。模拟一遍官方 js demo 的信令通信过程就行了。

janus.png

android 端信令我们也是通过 websocket 实现。把上图右边的信令消息自己实现一遍就行了。

webrtc.jpg

webrtc P2P 建立的流程要清晰,上图要理解清楚。思路理清剩下的就很好实现了。

echotest.jpeg

DEMO: https://github.com/lesliebeijing/JanusAndroidDemo

参考1:https://blog.csdn.net/Java_lilin/article/details/104007291
参考2:https://github.com/benwtrent/janus-gateway-android
参考3:https://zhuanlan.zhihu.com/p/149324861?utm_source=wechat_session

你可能感兴趣的:(Janus android demo)