利用華為云ECS服務(wù)器搭建安防視頻監(jiān)控平臺(tái)
【摘要】 這篇文章介紹華為云ECS服務(wù)器的購買、部署、登錄、使用的整體流程,在服務(wù)器部署NGINX服務(wù),搭建一個(gè)安防視頻監(jiān)控平臺(tái),本地開發(fā)了配套的RTMP流媒體推流客戶端、RTMP播放器,完成整體效果演示。 RTMP流媒體推流客戶端就是用來模擬攝像頭硬件設(shè)備,RTMP流媒體推流客戶端在筆記本電腦上運(yùn)行,將筆記本電腦上的攝像頭音視頻流實(shí)時(shí)推流到華為云服務(wù)器轉(zhuǎn)存。
1. 前言
華為云的彈性云服務(wù)器(Elastic Cloud Server)是一種可隨時(shí)自助獲取、可彈性伸縮的云服務(wù)器,幫助用戶打造可靠、安全、靈活、高效的應(yīng)用環(huán)境,確保服務(wù)持久穩(wěn)定運(yùn)行,提升運(yùn)維效率。彈性云服務(wù)器從創(chuàng)立到發(fā)動(dòng)只需幾分鐘,客戶將具有云服務(wù)器的超級管理員權(quán)限,輕松布置各種運(yùn)用。
這篇文章介紹華為云ECS服務(wù)器的購買、部署、登錄、使用的整體流程,在服務(wù)器部署NGINX服務(wù),搭建一個(gè)安防視頻監(jiān)控平臺(tái),本地開發(fā)了配套的RTMP流媒體推流客戶端、RTMP播放器,完成整體效果演示。 RTMP流媒體推流客戶端就是用來模擬攝像頭硬件設(shè)備,RTMP流媒體推流客戶端在筆記本電腦上運(yùn)行,將筆記本電腦上的攝像頭音視頻流實(shí)時(shí)推流到華為云服務(wù)器轉(zhuǎn)存。
2. 購買云服務(wù)器
如果之前沒有使用過華為云的ECS服務(wù)器,可以先申請?jiān)囉?個(gè)月,了解服務(wù)器的基本使用然后再購買,不得不說提供這個(gè)試用服務(wù)還是非常不錯(cuò)。

每天9:30開搶,每天限量100份,這個(gè)頁面不僅有云服務(wù)器可以領(lǐng)取試用,還有云數(shù)據(jù)庫、沙盒等其他產(chǎn)品。

我這里領(lǐng)取了 2核4G S6云服務(wù)器,這個(gè)服務(wù)器是配套華為自研25GE智能高速網(wǎng)卡,適用于網(wǎng)站和Web應(yīng)用等中輕載企業(yè)應(yīng)用。

選擇配置的時(shí)候發(fā)現(xiàn)S6規(guī)格的已經(jīng)沒有了,來晚了。

S6規(guī)格沒有了,就選擇了S3,2核,4GB的配置結(jié)算。

頁面向下翻,下面選擇系統(tǒng)預(yù)裝的系統(tǒng),我這里選擇ubuntu 20.04,安裝NGINX,來搭建流媒體服務(wù)器。

頁面繼續(xù)下翻,設(shè)置云服務(wù)器名稱,設(shè)置系統(tǒng)的root密碼。

接著就可以繼續(xù)去支付了。

購買后等待一段時(shí)間,系統(tǒng)資源就即可分配完成。
3. 登錄云服務(wù)器
云服務(wù)器的管理控制臺(tái)從這里進(jìn)入: https://www.huaweicloud.com/product/ecs.html
在官網(wǎng)主頁,點(diǎn)擊產(chǎn)品,找到計(jì)算選項(xiàng),就可以看到彈性云服務(wù)器ECS,點(diǎn)擊進(jìn)去就可以看到管理控制臺(tái)的選項(xiàng)。
在彈性云服務(wù)器的選項(xiàng)頁面可以看到剛才購買的云服務(wù)器,如果點(diǎn)擊進(jìn)去提示該區(qū)域沒有可用的服務(wù)器,說明區(qū)域選擇的不對,在下面截圖紅色框框的位置可以看到可用的區(qū)域切換按鈕,切換之后就行了。
點(diǎn)擊服務(wù)器右邊的更多,可以對服務(wù)器重裝系統(tǒng)、切換操作系統(tǒng)、關(guān)機(jī)、開機(jī)、重啟、重置密碼等操作。
接下來先點(diǎn)擊登錄,了解一下登錄的流程,看看系統(tǒng)進(jìn)去的效果。
云服務(wù)器支持SSH協(xié)議遠(yuǎn)程登錄,可以在瀏覽器上直接使用CloudShell方式或者VNC方式登錄,如果本身你自己也是使用Linux系統(tǒng),可以在Linux系統(tǒng)里通過ssh命令直接登錄,如果是在windows下可以使用SecureCRT登錄。
其他登錄方式。
最方便的登錄方式,直接在控制臺(tái)使用VNC在瀏覽器里登錄,點(diǎn)擊立即登錄。
根據(jù)提示輸入用戶名,密碼后,按下回車鍵即可登錄。
用戶名直接輸入root,密碼就是剛才配置云服務(wù)器時(shí),填入的root密碼。
注意: Linux下輸入密碼默認(rèn)都是隱藏的,也就是在鍵盤上輸入密碼界面上是不會(huì)有反應(yīng)的,自己按照正確的密碼輸入即可。
用戶名、密碼輸入正確后,登錄成功。
可以點(diǎn)擊全屏模式,更好的操作。
4. 使用CloudShell登錄云服務(wù)器
在頁面上直接點(diǎn)擊CloudShell登錄按鈕。CloudShell方式比VNC方式方便、流暢多了,也支持命令的復(fù)制粘貼。
輸入密碼點(diǎn)擊連接。
登錄成功進(jìn)入終端。
5. 使用SecureCRT登錄云服務(wù)器
上面演示了兩種登錄方式,都是直接在瀏覽器里登錄,這種兩種方式比較來看,VNC方式效率最低,CloudShell相對來說要方便很多。一般我自己正常開發(fā)時(shí),都是使用第三方工具來登錄的,如果本身自己開發(fā)環(huán)境的電腦就是Linux,MAC等,可以直接使用ssh命令登錄,這種方式操作流暢方便。如果在windows下,可以使用第三方軟件登錄。
我現(xiàn)在使用的系統(tǒng)是win10,在windows系統(tǒng)下有很多遠(yuǎn)程終端軟件支持SSH登錄到Linux云服務(wù)器,我當(dāng)前采用的使用SecureCRT 6.5來作為登錄終端,登錄云服務(wù)器。
注意: SecureCRT 6.5 登錄高版本Linux系統(tǒng)會(huì)出現(xiàn)Key exchange failed問題,導(dǎo)致登錄失敗,比如: 登錄ubuntu 20.04 系統(tǒng)。 出現(xiàn)這種問題需要對系統(tǒng)ssh配置文件進(jìn)行添加配置。
如果不想這么麻煩的去修改配置文件,那么最簡單的辦法就是: 切換操作系統(tǒng),換一個(gè)低版本的,比如:ubuntu18.04 即可。
在云服務(wù)器的控制臺(tái),找到自己的服務(wù)器,然后選擇切換操作系統(tǒng)。
根據(jù)界面上的引導(dǎo)流程,切換即可。更換新的系統(tǒng)需要1~4分鐘時(shí)間,稍微等待一下即可。
如果要使用遠(yuǎn)程SSH協(xié)議方式登錄云服務(wù)器,需要具備以下幾個(gè)前提條件。
[1]彈性云服務(wù)器狀態(tài)為“運(yùn)行中”。[2]彈性云服務(wù)器已經(jīng)綁定彈性公網(wǎng)IP,綁定方式請參見綁定彈性公網(wǎng)IP。[3]所在安全組入方向已開放22端口,配置方式請參見配置安全組規(guī)則。[4]使用的登錄工具(如PuTTY,SecureCRT`)與待登錄的彈性云服務(wù)器之間網(wǎng)絡(luò)連通。例如,默認(rèn)的22端口沒有被防火墻屏蔽。
但是這些配置不用擔(dān)心,在購買服務(wù)器后,根據(jù)引導(dǎo)一套走完,上面的這些配置都已經(jīng)默認(rèn)配置好了,不用自己再去單獨(dú)配置。
系統(tǒng)切換成功后,打開SecureCRT 6.5軟件,進(jìn)行登錄。SecureCRT 6.5整體而言還是挺好用的。
如果自己沒有``SecureCRT,自己下載一個(gè)即可。當(dāng)然,不一定非要使用SecureCRT`,其他還有很多SSH遠(yuǎn)程登錄工具,喜歡哪個(gè)使用哪個(gè)。
下面介紹``SecureCRT `登錄的流程。
選擇新建會(huì)話。
選擇SSH2協(xié)議。
主機(jī)名就填服務(wù)器的公網(wǎng)IP地址,端口號(hào)默認(rèn)是22,用戶名填root。
自己云服務(wù)器的公網(wǎng)IP地址,在控制臺(tái)可以看到。
軟件點(diǎn)擊下一步之后,可以填充描述信息,備注這個(gè)鏈接是干什么的。
選擇剛才新建的協(xié)議端口點(diǎn)擊連接。
云服務(wù)器連接上之后,軟件界面會(huì)彈出對話框填充用戶名、密碼。
登錄成功的效果如下。
軟件可以配置一些選項(xiàng),讓界面符合Linux終端配色,可以修改字體大小、字體編碼等等。
配置后的效果。
6. 安裝NFS服務(wù)器
為了方便向服務(wù)器上拷貝文件,可以采用NFS服務(wù)器、或者FTP服務(wù)器 這些方式。 我本地有一臺(tái)ubuntu 18.04 系統(tǒng)筆記本,我這里采用NFS方式拷貝文件上去。
(1)安裝NFS服務(wù)器
root@ecs-348470:~# sudo apt-get install nfs-kernel-server
(2)創(chuàng)建一個(gè)work目錄方便當(dāng)做共享目錄使用
root@ecs-348470:~# mkdir work
(3)編寫NFS配置文件
NFS 服務(wù)的配置文件為/etc/exports,如果系統(tǒng)沒有默認(rèn)值,這個(gè)文件就不一定會(huì)存在,可以使用 vim 手動(dòng)建立,然后在文件里面寫入配置內(nèi)容。
/home/work *(rw,no_root_squash,sync,no_subtree_check,insecure)
配置文件里參數(shù)的含義:
(4)NFS服務(wù)器相關(guān)指令
/etc/init.d/nfs-kernel-server start #啟動(dòng) NFS 服務(wù)
ufw disable #關(guān)閉防火墻/etc/init.d/nfs-kernel-server restart #重啟NFS服務(wù)
exportfs -arv #共享路徑生效
(5)本地客戶機(jī)掛載服務(wù)器的目錄
wbyq@wbyq:~$ sudo mount -t nfs -o nolock 122.112.212.171:/home/work /home/wbyq/mnt/
(6)設(shè)置華為云服務(wù)器的安全策略
需要把華為云服務(wù)器的端口號(hào)開放出來,不然其他客戶端是無法訪問服務(wù)器的。
我這里比較粗暴直接,直接將所有端口號(hào),所有IP地址都開放出來了。
**(7)本地客戶機(jī)掛載服務(wù)器測試 **
掛載指令:
sudo mount -t nfs -o nolock 122.112.212.171:/home/work /home/wbyq/mnt/
7. 安裝NGINX(配置RTMP服務(wù))
(1)下載編譯時(shí)需要依賴的一些工具
root@ecs-348470:~# sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
(2)下載NGINX編譯需要的軟件包
root@ecs-348470:~# mkdir nginx
root@ecs-348470:~# cd nginx/root@ecs-348470:~# wget http://nginx.org/download/nginx-1.10.3.tar.gz
root@ecs-348470:~# wget http://zlib.net/zlib-1.2.11.tar.gz
root@ecs-348470:~# wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
root@ecs-348470:~# wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
root@ecs-348470:~# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
(3)下載后的文件全部解壓
root@ecs-348470:~# tar xvf openssl-1.0.2k.tar.gz
root@ecs-348470:~# tar xvf nginx-rtmp-module-master.tar.gz
root@ecs-348470:~# tar xvf nginx-1.8.1.tar.gz
root@ecs-348470:~# tar xvf pcre-8.40.tar.gz
root@ecs-348470:~# tar xvf zlib-1.2.11.tar.gz
(4)配置NGINX源碼,生成Makefile文件
root@ecs-348470:~# cd nginx-1.8.1/root@ecs-348470:~# ./configure --prefix=/usr/local/nginx --with-debug --with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2k --add-module=../nginx-rtmp-module-master
執(zhí)行完上一步之后,打開objs/Makefile文件,找到-Werror選項(xiàng)并刪除。
(5)編譯并安裝NGINX
root@ecs-348470:~/nginx/nginx-1.8.1# make && make install
安裝之后NGINX的配置文件存放路徑:
/usr/local/nginx/nginx:主程序
(6)查看NGINX的版本號(hào)
root@ecs-348470:/usr/local/nginx/sbin# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1
(5)在配置文件里加入RTMP服務(wù)器的配置
root@ecs-348470:~# vim /usr/local/nginx/conf/nginx.conf
打開文件后,在文件最后加入以下配置:
rtmp {
server {
listen 8888;
application live {
live on;
record all;
record_unique on;
record_path "./video"; #視頻緩存的路徑
record_suffix -%Y-%m-%d-%H_%M_%S.flv;
}
} }
這樣配置之后,服務(wù)器收到RTMP流會(huì)在NGINX的當(dāng)前目錄下,創(chuàng)建一個(gè)video目錄用來緩存視頻。
客戶端向服務(wù)器推流之后,服務(wù)器就會(huì)緩存視頻到設(shè)置的目錄。
(5)檢查配置文件是否正確
root@ecs-348470:/usr/local/nginx/sbin# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
(6)NGINX常用的3個(gè)命令
sudo service nginx start
sudo service nginx stop
sudo service nginx restart
(7)啟動(dòng)NGINX服務(wù)器
sudo service nginx start
8. 攝像頭推流音視頻到服務(wù)器
為了模擬攝像頭實(shí)時(shí)監(jiān)控推流,我這使用QT+FFMPEG編寫了一個(gè)小軟件,在windows下運(yùn)行,推流本地筆記本電腦的數(shù)據(jù)到服務(wù)器。軟件運(yùn)行之后,將本地音頻、視頻編碼之后通過RTMP協(xié)議推流到NGINX服務(wù)器。
軟件運(yùn)行效果:
推流工具運(yùn)行過程中效果。
9. 編寫本地RTMP流播放器
在上面第8小節(jié),通過推流客戶端模擬攝像頭,已經(jīng)將本地的攝像頭數(shù)據(jù)實(shí)時(shí)推流到服務(wù)器了,那么還差一個(gè)播放器,為了方便能夠在任何有網(wǎng)的地方實(shí)時(shí)查看攝像頭的音頻和圖像,還需要編寫一個(gè)RTMP流媒體播放器。
我這里的播放器內(nèi)核是采用libvlc開發(fā)的,使用QT作為GUI框架,開發(fā)了一個(gè)流媒體播放器,可以實(shí)時(shí)拉取服務(wù)器上的流數(shù)據(jù),并且還支持回放。因?yàn)榉?wù)器上的NGINX配置了自動(dòng)保存的參數(shù),可以將推上去的流按時(shí)間段保存下來。
輸入服務(wù)器地址之后就可以拉取流進(jìn)行播放。
點(diǎn)擊獲取回放列表,可以查看服務(wù)器上保存的歷史視頻回放播放。
10. 總結(jié)
相較于傳統(tǒng)服務(wù)器,云服務(wù)器具有多方面的優(yōu)勢,利用彈性計(jì)算優(yōu)勢,幫助企業(yè)完成云上業(yè)務(wù)的部署與應(yīng)用,,可以根據(jù)自身需要自定義服務(wù)器配置,靈活地選擇設(shè)定所需的內(nèi)存、CPU、帶寬等配置,整體上減小了企業(yè)自己搭建服務(wù)器開發(fā)的成本,還省了服務(wù)器的一大堆維護(hù)費(fèi)用。
轉(zhuǎn)載請?jiān)谖恼麻_頭和結(jié)尾顯眼處標(biāo)注:作者、出處和鏈接。不按規(guī)范轉(zhuǎn)載侵權(quán)必究。
未經(jīng)授權(quán)嚴(yán)禁轉(zhuǎn)載,授權(quán)事宜請聯(lián)系作者本人,侵權(quán)必究。
本文禁止轉(zhuǎn)載,侵權(quán)必究。
授權(quán)事宜請至數(shù)英微信公眾號(hào)(ID: digitaling) 后臺(tái)授權(quán),侵權(quán)必究。



評論
評論
推薦評論
暫無評論哦,快來評論一下吧!
全部評論(0條)