<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Webrtc音視頻會議之Janus編譯 ## 說明 通過Webrtc做音視頻的都了解一點,Webrtc音視頻方案有3種:SFU,MCU ,Mesh; 目前我所在項目組現有方案是MCU方案,MCU方案有一個種重要的特點就是所有流匯聚到MCU服務器然后進行編解碼合屏等等(不細說專門做音視頻的比我更專業),對于服務端壓力非常大不適合高并發的互聯網方案;我經過一些途徑知道不考慮網絡等一些因素,配置還比較好的單臺服務器接入的1080P視頻大概100路左右; 所以才有我后面的研究SFU方案,比較出名的互聯網會議ZOOM和騰訊會議就是SFU方案,SFU方案某種意義上講只是做流的轉發,而不做所有參會人員的視頻流編解碼合屏; 這樣只是對帶寬的要求比較高(5G時代都來害怕這個?)最重要的是視頻不是事先在服務器上合并好的,到了端上能更好的進行布局和做文章;不扯了,我能扯得大概也就這么多了………………;哈哈 ***** 研究想要快速出成果和學習到好的思想當然得站在大牛的肩膀上。 所以研究了一些github上面start比較多的項目;我比較中意Mediasoup和Janus;他們都是相對成熟的音視頻會議系統;同時如果考慮自研的話推薦大家一個很好的golang庫**pion**; ***** 這里這重點說Janus,Janus是由c開發,它的架構有點類似Nginx,插件化,核心模塊不是很大,然后各種功能都是通過插件模式提供,如果要進行二次開發大部分只需要寫Plugin就行了;下圖是Janus支持的插件和事件,下面列出來都是支持的,只是我進行了裁剪按照我自己的要求配置了相應的Plugin ![在這里插入圖片描述](https://img-blog.csdnimg.cn/2020060714463845.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fsc2hvdXl1,size_16,color_FFFFFF,t_70#pic_center) ## 環境準備 1. 安裝了**ubuntu**系統的visualbox虛擬機,本案使用ubuntu16.04; 2. 安裝好git,方便從github上面clone源碼 3. apt 安裝 aptitude**(sudo apt install aptitude)** 4. 更新 aptitude**(sudo aptitude upgrade)** 5. 安裝cmake**(sudo aptitude install cmake)** . ## 開始編譯 ### 1.安裝依賴 ~~~sh aptitude install libmicrohttpd-dev libjansson-dev \ libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config gengetopt libtool automake ~~~ ### 2.源碼編譯libnice ~~~sh git clone https://gitlab.freedesktop.org/libnice/libnice cd libnice sudo meson --prefix=/usr build && sudo ninja -C build && sudo ninja -C build install ~~~ 上面是編譯的總體步驟,首先獲取源代碼; #### 2.1 安裝meson * 1.安裝pip3工具 ~~~sh sudo apt install python3-pip ~~~ * 2.利用pip3安裝 meson 如果網絡環境不好,可以使用阿里的pip3源;如何設置請看這里[pip源設置](https://developer.aliyun.com/mirror/pypi?spm=a2c6h.13651102.0.0.3e221b11dDSfmG) ~~~sh pip3 install --user meson ~~~ #### 2.2 源碼安裝ninja * 1.安裝re2c 在安裝ninja之前,需要安裝其依賴re2c ~~~sh sudo apt install re2c re2c --version ~~~ * 2.編譯ninja ~~~sh git clone https://github.com/ninja-build/ninja.git cd ninja ./configure.py --bootstrap #編譯,如果成功會生成ninja可執行文件 sudo cp ./ninja /usr/bin ~~~ 獲取源代碼clone會有點慢;如果慢的話請+我QQ通過百度云盤直接下載 #### 2.3 編譯 ~~~sh meson --prefix=/usr build && sudo ninja -C build && sudo ninja -C build install ~~~ **注意** 1. 這一步如果報找不到 libffi 請安裝libffi-dev依賴 ~~~sh sudo aptitude install libffi-dev ~~~ 2. 如果找不到meson命令要配置path 把用戶目錄/home/xxxx/.local/bin添加到PATH環境變量中 #### 2.4 配置PK\_CONFIG ~~~sh export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig #查看上一步的日志可以看到目錄 ~~~ ### 3.源碼編譯libsrtp 我這里是2.x版本具體libsrtp-2.2.0,Janus要求至少1.5.4版本及以上;這個讓Janus webrtc server中的RTP支持SSL ~~~sh wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz tar xfv v2.2.0.tar.gz cd libsrtp-2.2.0 ./configure --prefix=/usr --enable-openssl sudo make shared_library && sudo make install ~~~ ### 4.讓Janus webrtc server支持Data Channels-源碼編譯usrsctp 這個庫是讓Janus webrtc server支持 Data Channels ~~~sh git clone https://github.com/sctplab/usrsctp #下載慢+QQ百度云分享 cd usrsctp ./bootstrap ./configure --prefix=/usr && make && sudo make install ~~~ ### 5.讓Janus webrtc server支持websocket信令-源碼編譯libwebsockets 如果你不使用websocket可以不用這個依賴,因為我要更好的支持web瀏覽器音視頻會議【當然Janus web rtc server也支持HTTP REST API】但是在我后續的方案中websocket還充當IM等雙向的通信功能;而不僅僅只是用來作為webrtc信令通道 ~~~sh git clone https://libwebsockets.org/repo/libwebsockets cd libwebsockets # If you want the stable version of libwebsockets, uncomment the next line # git checkout v3.2-stable mkdir build cd build # See https://github.com/meetecho/janus-gateway/issues/732 re: LWS_MAX_SMP cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" .. make && sudo make install ~~~ ### 6.編譯正主Janus ~~~sh git clone https://github.com/meetecho/janus-gateway.git cd janus-gateway sh autogen.sh ./configure --prefix=/opt/janus make sudo make install # unbutu下一定要root權限,否則無法創建目錄 ~~~ 成功后安裝目錄/opt/janus,進入這個目錄啟動 ## 運行Janus webrtc server ### 1 修改配置 ~~~sh sudo cp janus.jcfg.sample janus.jcfg sudo cp janus.plugin.videoroom.jcfg.sample janus.plugin.videoroom.jcfg sudo cp janus.plugin.sip.jcfg.sample janus.plugin.sip.jcfg sudo cp janus.plugin.audiobridge.jcfg.sample janus.plugin.audiobridge.jcfg sudo cp janus.plugin.streaming.jcfg.sample janus.plugin.streaming.cfg sudo cp janus.plugin.textroom.jcfg.sample janus.plugin.textroom.jcfg sudo cp janus.plugin.streaming.jcfg.sample janus.plugin.streaming.jcfg sudo cp janus.plugin.videocall.jcfg.sample janus.plugin.videocall.cfg sudo cp janus.transport.websockets.jcfg.sample janus.transport.websockets.jcfg sudo cp janus.transport.pfunix.jcfg.sample janus.transport.pfunix.jcfg sudo cp janus.plugin.echotest.jcfg.sample janus.plugin.echotest.jcfg sudo cp janus.plugin.voicemail.jcfg.sample janus.plugin.voicemail.jcfg sudo cp janus.plugin.nosip.jcfg.sample janus.plugin.nosip.jcfg sudo cp janus.plugin.recordplay.jcfg.sample janus.plugin.recordplay.jcfg ~~~ ### 2 運行 cd /opt/janus sudo ./bin/janus --config=/opt/janus/etc/janus/janus.jcfg 編譯完成搞個客戶端就能 看效果了 ## 前端運行 這里我拿Janus的html代碼修改修改然后通過nginx進行代理,一定要記的配置證書,瀏覽器進行音視頻是需要SSL的;這樣就可以通過瀏覽器進行視頻會議測試; **引用文章請標明出處,否則可以保留一切追究責任的權利** **技術交流:** **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>

                              哎呀哎呀视频在线观看