Mac搭建WebRTC伺服器

音視頻開發老舅 發佈 2022-09-30T10:22:33.703769+00:00

webRTC:Web Real-Time Communications。用於交換sdp/ice信息的房間伺服器 roomServer。

webRTC的簡介

  • webRTC:Web Real-Time Communications
  • 用於點對點的實時語音/視頻通信的技術
  • google開源了google-webRTC的sdk用於提供相關技術

webRTC的三大技術難點

  • 音視頻的編碼與傳輸
  • 私有ip的連結
  • 語音降噪

MAC搭建webRTC伺服器

webRTC伺服器一般包含三部分

  • 用於交換sdp/ice信息的房間伺服器 roomServer(3000)
  • 用於連接私有ip的穿透伺服器 sturnServer(3478)
  • 用於做代理的nginx伺服器,一般服務的埠不會輕易暴露給客戶端用.

安裝node版本的房間服務webRTC

安裝node

brew install node
//檢測node是否安裝成功
node -v

【更多音視頻學習資料,點擊下方連結免費領取↓↓,先碼住不迷路~】

音視頻開發(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

安裝房間服務webRTC

git clone https://github.com/androidtencent/WebrtcNodeJS
cd WebrtcNodeJS
npm install

//啟動 Server running at http://0.0.0.0:3000/
node server.js

coturn穿透服務

brew install coturn
//啟動coturn服務
brew services restart coturn
//查看coturn命令
man coturn

//coturn伺服器訪問密碼
turnadmin -k -u hch -r north.gov -p 1qazxsw2

//得到安全訪問密鑰
//0xa4a6576444351ec2804f4cf2a2701a1a
//0: : SQLite connection was closed.
//0: : log file opened: /var/tmp/turn_58775_2022-04-27.log

配置coturn

安裝完coturn服務後,默認在/usr/local/etc下會存在turnserver.conf.default文件,我們自己新建turnserver.conf,加入如下信息,注意user和密碼是自己設定的內容:

verbose
fingerprint
lt-cred-mech
realm=test
user=hch:0xa4a6576444351ec2804f4cf2a2701a1a
user=hch:1qazxsw2
stale-nonce
no-loopback-peers
no-multicast-peers
mobility
no-cli

重啟coturn

brew services restart coturn

安裝nginx

brew install nginx
//配置地址/usr/local/etc/nginx/nginx.conf
//啟動nginx
brew services restart nginx

配置nginx

vim /usr/local/etc/nginx/nginx.conf

配置內容注意

  • ssl_certificate和ssl_certificate_key的位置要與後面生成的https證書的位置一致
  • mac下日誌的地址為/usr/local/var/log/
user root admin;
worker_processes auto;
pid /usr/local/etc/nginx/logs/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        multi_accept on;
        }

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 300;
        types_hash_max_size 2048;
        default_type application/octet-stream;


        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /usr/local/var/log/nginx/access.log;
        error_log /usr/local/var/log/nginx/error.log;

        gzip on;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        upstream web {
                server localhost:3000;      
        }
        
        upstream websocket {
                server localhost:3000;   
        }

        server { 
                listen       443; 
                server_name  localhost;
                ssl          on;

                ssl_certificate     /usr/local/etc/nginx/cert/server.crt;#配置證書
                ssl_certificate_key  /usr/local/etc/nginx/cert/server.pem;#配置密鑰
                        ssl_session_cache    shared:SSL:1m;
                ssl_session_timeout  50m;
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
                ssl_ciphers  HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers  on;
                
                location /wss {
                proxy_pass http://websocket/; # 代理到上面的地址去
                proxy_read_timeout 300s;
                proxy_set_header Host $host;
                proxy_set_header X-Real_IP $remote_addr;
                proxy_set_header X-Forwarded-for $remote_addr;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'Upgrade';  
                 }
                location / {
                proxy_pass         http://web/;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                         }
        }
}

【更多音視頻學習資料,點擊下方連結免費領取↓↓,先碼住不迷路~】

音視頻開發(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

生成https證書

將生成的證書放到nginx配置目錄下/usr/local/etc/nginx

openssl genrsa -des3 -out server.key 2048
//輸入密碼 1qazxsw2
// 移除密碼
openssl rsa -in server.key -out server.key
openssl req -new -x509 -key server.key -out ca.crt -days 3650
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
cat server.key server.crt > server.pem

啟動三個服務

房間服務

cd /Users/hucaihua/code/git/WebrtcNodeJS
node server.js

穿透服務coturn

brew services restart coturn

nginx代理服務

brew services restart nginx

//檢測nginx是否正常啟動
ps -ef|grep nginx

檢驗一切是否配置成功

在瀏覽器輸入https://localhost,點擊信任網站,如果出現自己的頭像,則表示配置成功.

如果你對音視頻開發感興趣,覺得文章對您有幫助,別忘了點讚、收藏哦!或者對本文的一些闡述有自己的看法,有任何問題,歡迎在下方評論區討論!

關鍵字: