隨著低延時(shí)流媒體技術(shù)的不斷進(jìn)步,在線教育行業(yè)持續(xù)升溫。闡述了基于WebRTC架構(gòu)的低延時(shí)直播技術(shù)突破以及其在教育行業(yè)中的實(shí)踐與思考
GitHub:
先放github鏈接
(更多完整項(xiàng)目下載。未完待續(xù)。源碼。圖文知識(shí)后續(xù)上傳github。)
可以點(diǎn)擊關(guān)于我?聯(lián)系我獲取
(VX:×××)為九江等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及九江網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、九江網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
Webrtc服務(wù)器搭建后臺(tái)項(xiàng)目地址
java項(xiàng)目:https://github.com/xiangjiana/WebRtcJavaWeb
NodeJs項(xiàng)目 :?https://github.com/ddssingsong/webrtc_server
本搭建是基于centos 7.6 64位系統(tǒng),系統(tǒng)恢復(fù)原始狀態(tài),重新裝系統(tǒng),確保人人都能搭建成功
如果系統(tǒng)安裝了基礎(chǔ)軟件 如git gcc++ 可以跳該步驟
yum update
yum install git
yum install make
yum install gcc-c++
下載官網(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
# 進(jìn)入目錄
cd nodejs/
# 確認(rèn)一下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/
# 看清楚,這個(gè)路徑是你自己創(chuàng)建的路徑,我的路徑是/home/dds/webrtc/nodejs
#查看是否安裝
node -v
npm -v
# 注意,ubuntu 有的是需要sudo,如果不想sudo,可以
sudo ln -s /root/webrtc/nodejs/bin/node /usr/bin/
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
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.
安全訪問(wèn)秘鑰 0xfb76c57e823de97df580e573437ef54a
接下來(lái)配置turnserver 的配置文件,配置文件存放在/usr/local/etc/turnserver.config文件下
這個(gè)文件本身是不存在的,需要我們自己創(chuàng)建
創(chuàng)建內(nèi)容
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="是你本機(jī)生成的隨機(jī)ID 不要全部直接復(fù)制了"
安裝webrtc服務(wù)器和瀏覽器端
git clone https://github.com/androidtencent/WebrtcNodeJS
cd WebrtcNodeJS
npm install
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
刪除配置文件內(nèi)容,更改為以下內(nèi)容
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.key的生成
openssl genrsa -des3 -out server.key 2048
這樣是生成rsa私鑰,des3算法,openssl格式,2048位強(qiáng)度。server.key是密鑰文件名。為了生成這樣的密鑰,需要一個(gè)至少四位的密碼??梢酝ㄟ^(guò)以下方法生成沒(méi)有密碼的key:
openssl rsa -in server.key -out server.key
server.key就是沒(méi)有密碼的版本了。
2.生成CA的crt
openssl req -new -x509 -key server.key -out ca.crt -days 3650
生成的ca.crt文件是用來(lái)簽署下面的server.csr文件。
openssl req -new -key server.key -out server.csr
需要依次輸入國(guó)家,地區(qū),組織,email。最重要的是有一個(gè)common name,可以寫你的名字或者域名。如果為了https申請(qǐng),這個(gè)必須和域名吻合,否則會(huì)引發(fā)瀏覽器警報(bào)。生成的csr文件交給CA簽名后形成服務(wù)端自己的證書。
CSR文件必須有CA的簽名才可形成證書,可將此文件發(fā)送到verisign等地方由它驗(yàn)證,要交一大筆錢,何不自己做CA呢。
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
輸入key的密鑰后,完成證書生成。-CA選項(xiàng)指明用于被簽名的csr證書,-CAkey選項(xiàng)指明用于簽名的密鑰,-CAserial指明序列號(hào)文件,而-CAcreateserial指明文件不存在時(shí)自動(dòng)生成。
最后生成了私用密鑰:server.key和自己認(rèn)證的SSL證書:server.crt
證書合并:
cat server.key server.crt > server.pem
啟動(dòng)turnserver服務(wù)
/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
啟動(dòng)nginx服務(wù)
./usr/local/nginx/sbin/nginx
啟動(dòng)webrtc 服務(wù)
cd /root/webrtc/WebrtcNodeJS
node server
當(dāng)前文章:淺談Webrtc,這些你了解嘛
文章位置:http://sd-ha.com/article14/popcge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)、網(wǎng)站制作、軟件開(kāi)發(fā)、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)