溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談Webrtc,這些你了解嘛

發(fā)布時間:2020-07-05 15:58:40 來源:網(wǎng)絡 閱讀:540 作者:Android丶VG 欄目:移動開發(fā)

隨著低延時流媒體技術的不斷進步,在線教育行業(yè)持續(xù)升溫。闡述了基于WebRTC架構的低延時直播技術突破以及其在教育行業(yè)中的實踐與思考
GitHub:
先放github鏈接
(更多完整項目下載。未完待續(xù)。源碼。圖文知識后續(xù)上傳github。)
可以點擊關于我?聯(lián)系我獲取
(VX:×××)

Webrtc服務器搭建后臺項目地址

java項目:https://github.com/xiangjiana/WebRtcJavaWeb

NodeJs項目 :?https://github.com/ddssingsong/webrtc_server

本搭建是基于centos 7.6 64位系統(tǒng),系統(tǒng)恢復原始狀態(tài),重新裝系統(tǒng),確保人人都能搭建成功

如果系統(tǒng)安裝了基礎軟件 如git gcc++ 可以跳該步驟

yum update
yum install git
yum install  make
yum install gcc-c++
1.1 搭建Node環(huán)境

下載官網(wǎng)最新nodejs:https://nodejs.org/en/download

mkdir webrtc
cd webrtc
wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz
# 解壓
tar -xvf node-v10.16.0-linux-x64.tar.xz
# 改名
mv node-v10.16.0-linux-x64 nodejs
# 進入目錄
cd nodejs/

# 確認一下nodejs下bin目錄是否有node 和npm文件,如果有就可以執(zhí)行軟連接
sudo ln -s /root/webrtc/nodejs/bin/npm /usr/local/bin/
sudo ln -s /root/webrtc/nodejs/bin/node /usr/local/bin/

# 看清楚,這個路徑是你自己創(chuàng)建的路徑,我的路徑是/home/dds/webrtc/nodejs

#查看是否安裝
node -v 
npm -v 

# 注意,ubuntu 有的是需要sudo,如果不想sudo,可以
sudo ln -s /root/webrtc/nodejs/bin/node /usr/bin/
1.2 安裝turn服務器的環(huán)境準備
cd ..
yum install openssl openssl-libs libevent2 libevent-devel
yum install openssl-devel
yum install sqlite
yum install sqlite-devel
yum install postgresql-devel
yum install postgresql-server
yum install mysql-devel
yum install mysql-server
yum install hiredis
yum install hiredis-devel
1.3開始安裝turn服務器
git clone https://github.com/coturn/coturn 
cd coturn 
./configure 
make 
sudo make install

查看是否安裝成功

which turnserver

生成用戶名和密碼

turnadmin -k -u ddssingsong -r north.gov -p 123456
0xfb76c57e823de97df580e573437ef54a
0: log file opened: /var/log/turn_1791_2019-07-31.log
0: SQLite connection was closed.

安全訪問秘鑰 0xfb76c57e823de97df580e573437ef54a

接下來配置turnserver 的配置文件,配置文件存放在/usr/local/etc/turnserver.config文件下

這個文件本身是不存在的,需要我們自己創(chuàng)建

創(chuàng)建內容

verbose
fingerprint
lt-cred-mech
realm=test
user=ddssingsong:0xfb76c57e823de97df580e573437ef54a
user=ddssingsong:123456
stale-nonce
no-loopback-peers
no-multicast-peers
mobility
no-cli

該配置文件是不存在的、

user="是你本機生成的隨機ID 不要全部直接復制了"

淺談Webrtc,這些你了解嘛

1.4安裝Webrtc服務端
安裝webrtc服務器和瀏覽器端

git clone https://github.com/androidtencent/WebrtcNodeJS
cd WebrtcNodeJS
npm install
1.5 安裝nginx服務器(推薦用編譯倆安裝)
wget -C http://nginx.org/download/nginx-1.12.0.tar.gz
tar xvf nginx-1.12.0.tar.gz
cd nginx-1.12.0

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

make 

sudo make install 
1.6 更改nginx 配置文件 (額外強調 其中包含https證書,下面會告訴生成方式)

刪除配置文件內容,更改為以下內容
淺談Webrtc,這些你了解嘛

user root;
worker_processes auto;
pid /run/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 /var/log/nginx/access.log;
    error_log /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     /cert/cert.crt;#配置證書
        ssl_certificate_key  /cert/cert.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;
         }
    }
}
1.7 生成nginx中的https證書

1.key的生成

openssl genrsa -des3 -out server.key 2048

這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。server.key是密鑰文件名。為了生成這樣的密鑰,需要一個至少四位的密碼??梢酝ㄟ^以下方法生成沒有密碼的key:

openssl rsa -in server.key -out server.key

server.key就是沒有密碼的版本了。

2.生成CA的crt

openssl req -new -x509 -key server.key -out ca.crt -days 3650

生成的ca.crt文件是用來簽署下面的server.csr文件。

  1. csr的生成方法

openssl req -new -key server.key -out server.csr

需要依次輸入國家,地區(qū),組織,email。最重要的是有一個common name,可以寫你的名字或者域名。如果為了https申請,這個必須和域名吻合,否則會引發(fā)瀏覽器警報。生成的csr文件交給CA簽名后形成服務端自己的證書。

  1. crt生成方法

CSR文件必須有CA的簽名才可形成證書,可將此文件發(fā)送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢。

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

輸入key的密鑰后,完成證書生成。-CA選項指明用于被簽名的csr證書,-CAkey選項指明用于簽名的密鑰,-CAserial指明序列號文件,而-CAcreateserial指明文件不存在時自動生成。

最后生成了私用密鑰:server.key和自己認證的SSL證書:server.crt

證書合并:

cat server.key server.crt > server.pem

1.8分別啟動服務

啟動turnserver服務

/usr/local/bin/turnserver --syslog -a -f --min-port=32355 --max-port=65535 --user=dds:123456 -r dds --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v

啟動nginx服務

./usr/local/nginx/sbin/nginx

啟動webrtc 服務

cd /root/webrtc/WebrtcNodeJS

node server

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI