<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 架構 Janus的整體架構是插件化的,其中只有Core部分是正常啟動,其它三部分Transports,Plugin,EventHandler都是由Core動態從配置文件janus.jcfg中讀取配置的目錄,然后從配置的目錄中讀取動態庫加載的,只要動態庫中實現了指定的一些方法就能被Core模塊正確的加載;這樣從某種意義上來說Transports,plugin,EventHandler都是插件;可以被定制化增減; 架構簡圖: ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200616172536330.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fsc2hvdXl1,size_16,color_FFFFFF,t_70) 架構詳細圖: ![在這里插入圖片描述](https://img-blog.csdnimg.cn/2020061617255516.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fsc2hvdXl1,size_16,color_FFFFFF,t_70) 下面來詳細說一說整體架構中所有模塊的功能,看上面我繪制的詳細架構圖,本圖雖然不能體現所有功能,但是已經展示了所有重要的功能了; ### Core模塊 Core模塊中包含的都是Janus WebRTC server中必要的一些功能,一下做一些簡單說明 Session池:維護ICE過來的客戶端,這樣根據一定的規則把接收過到的RTP包轉給Session池中維護的端, 消息池:客戶端通過Tranports中過來的消息可以進行異步處理,先放入待處理池增加吞吐量; 配置管理:Janus 雖然提供了很多默認的配置,但是這些配置是可以被修改這些都是在配置管理中進行處理 日志體系:Janus中的日志都是通過這個模塊對外進行輸出,它管理了日志級別控制了輸出目標,支持文件輸出 ICE:ICE是Janus WebRTC server代理UDP的核心通過它進行P2P連接然后接收RTP包轉發 Stun/Turn server: 它們為ICE提供穿越打洞的能力,可以配置是否開啟,如果Janus和其它端在同一個NAT內無需打洞,可以通過配置關閉此功能,增加性能 RTP/RTCP:媒體的UDP包都是大包成RTP包轉發的 安全:支持SSL ### Transports通道 Transports顧名思義,它就是通道;具體來說就是信令通道;信令可以通過這些通道來從客戶端到服務端; Janus WebRTC server中實現了很多的信令通道方式,看上圖的六種通道,實際應用中我們不需要所有信令通道;實際情況下面我們根據實際情況只需要選擇1到2中信令通道就行了 ### Plugin Janus WebRTC server通過Plugin提供各種業務支持 Audiobridge:實現的功能是語音會議室,只發語音 Lua:讓插件支持lua VideoRoom: 音視頻會議室功能 SIP:支持接入SIP協議 VideoCall: 上圖有點問題,是VideoCall,也就是視頻一對一通話功能 Streaming: 抽取放出音視頻流,這樣您整個系統中其它組件需要純粹的音視頻流就可以實現了 ### EventHandler Janus中實現的事件機制,產生的事件可以通過這些Handler來處理, 支持的主要Handler有MQTT,RabbitMQ,WebSocket等 ## WebRTC音視頻轉發核心原理 Janus WebRTC server 通過開源庫libnice這個ICE開源庫把服務端模擬成一個Peer對等端;具體來說就是客戶端發起Offer并且發送自己的SDP和Candidate給Janus WebRTC server,然后Janus把服務器的IP和端加入Candidate作為Answer發送給客戶端,這樣客戶端和服務端就進行了對等連接;并且ICE監聽UDP通道接收到RTP包后轉發給其它的對等連接;這里要著重說明的是Janus每個客戶端發起連接后Janus都分配一個端口,也就是每個端占用一個UDP端口;Janus是多端口,這是不友好的點,后續有機會我們改造成單端口 轉發的核心原理就這么簡單,詳細的后面我們來看具體的代碼 ## 總結 看了這篇文章我們基本能了解Janus WebRTC server是一種什么架構,它支持哪些功能適合什么樣的業務場景;如何轉發媒體包 * * * **引用文章請標明出處,否則可以保留一切追究責任的權利** **技術交流:** **qq:408365330** **微信:egojit**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看