一、背景
我是ApeCode,一名在校研究生,這是我的第一篇簡書文章。不好的地方歡迎大家指正。
最近學(xué)校有一個項目,簡單來說就是需要通過一個安卓的設(shè)備與PC進行語音視頻通訊,并且電腦端可以實時的看到安卓端攝像頭傳輸?shù)挠跋?。對于這種即時通訊的App開發(fā),可以說是第一次接觸,沒有任何頭緒,但是經(jīng)過自己三個月時間的學(xué)習(xí),這個項目我還是開發(fā)出來了。接下來一段時間,我將通過簡書這個平臺,將我自己的項目過程,與大家進行分享。這種開發(fā),第三方的服務(wù)器是前提,所以,我們先介紹服務(wù)器的搭建與配置。
二、服務(wù)器選擇
現(xiàn)在一些大型的云服務(wù)器商都會直接提供即時通訊云,很好用,很方便。但是對于我們這些學(xué)生來說,它的價格是我們無法接受的,所以我們就用最便宜的學(xué)生優(yōu)惠服務(wù)器,自己進行搭建。以阿里云的學(xué)生云翼計劃—云服務(wù)器ECS為例(每個月才9.5元),進行nginx服務(wù)器的搭建與配置。購買時選擇服務(wù)器操作系統(tǒng)為Ubuntu 16.04 64位。

三、開始搭建nginx服務(wù)器
nginx服務(wù)器的功能有很多,其中包括負載均衡、rtmp協(xié)議流轉(zhuǎn)發(fā)等功能。這里,我們利用nginx服務(wù)器的rtmp協(xié)議流轉(zhuǎn)發(fā)功能進行視音頻的傳輸。
輸入你的遠程連接密碼之后進入ubuntu系統(tǒng)
mkdir ~/rtmp? //新建一個名字為rtmp的文件夾
cd rtmp? //切換到rtmp文件夾目錄下
wget http://nginx.org/download/nginx-1.8.1.tar.gz? ?//wget指令從nginx.org下載nginx-1.8.1.tar.gz
tar -zxf nginx-1.8.1.tar.gz -C ~/rtmp/? //解壓到當(dāng)前文件夾
git clone https://github.com/arut/nginx-rtmp-module.git? //用git指令從GitHub上下載RTMP的組件
到此處,如果你的Ubuntu提示你沒有g(shù)it操作,那么請按照如下步驟進行安裝
sudo apt-get update? //先更新一下
sudo apt-get install git? //安裝git
接下來git指令就可以使用了,下一步安裝一些nginx的依賴庫
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
將剛剛下載的rtmp的模塊添加到nginx之后進行安裝
cd nginx-1.8.1 //切換到nginx的解壓目錄下
./configure --add-module=../nginx-rtmp-module //添加rtmp模塊
sudo make install? //可以進行安裝了
最后就可以運行nginx服務(wù)器了
cd? //返回初始目錄
cd /usr/local/nginx? //切換到nginx目錄下,這是安裝好的nginx的目錄
sudo ./sbin/nginx? //請牢記這是啟動nginx指令
開啟之后還沒有可以開始進行流媒體的轉(zhuǎn)發(fā),我們需要進行nginx.conf的配置
cd /usr/local/nginx/conf? //切換到conf配置文件夾
vim nginx.conf? //有的服務(wù)器需要權(quán)限,用sudo vim nginx.conf進入文本的編輯界面,實在編輯不了可以使用putty(一個軟件)進行ssh的遠程連接
vim指令可以編輯nginx.conf文件,點擊Insert按鍵可以對文本進行編輯,對文本的修改如下紅色框內(nèi)的內(nèi)容,listen為服務(wù)器端口,chunk_size為設(shè)置塊大小,兩個application,vod為播放本地視頻application,live是實時的流媒體轉(zhuǎn)發(fā)直播application。編輯結(jié)束后按鍵盤上的Esc之后輸入:wq(注意“:”也是需要輸入的)即可保存并退出編輯。

同時,需要在http下添加兩個用于直播轉(zhuǎn)流用的location。

配置結(jié)束一定要重啟nginx
cd /usr/local/nginx
./sbin/nginx -s reload? //重啟命令,請牢記
到這里,我們的nginx服務(wù)器的配置就全部結(jié)束啦。那么我們來測試一下。
四、測試服務(wù)器是否成功搭建
首先新建存放視頻的文件夾Videos
cd /usr/local? //轉(zhuǎn)到local目錄下
mkdir Videos? //新建文件夾Videos
這里我們還是需要使用前面提到的putty軟件。putty下載地址
轉(zhuǎn)到putty的安裝目錄,打開psftp.exe
open 你的服務(wù)器地址? //連接到服務(wù)器
輸入你的用戶名和密碼
cd /usr/local/Videos? //轉(zhuǎn)到Videos目錄下
這里我已經(jīng)下載好了一個名為text的MP4文件,并將其放在了E盤下
put E:/text.mp4? //將文件傳送到服務(wù)器
最后我們可以使用VLC(一款播放器,可下載)來進行測試,打開網(wǎng)絡(luò)串流rtmp://服務(wù)器地址/vod/text.mp4,下圖為我的測試結(jié)果。

到此處,如果你的視頻并不能播放,可能是因為阿里云的安全組保護問題,最簡單的解決辦法就是用你的手機下載阿里云App添加1935端口的安全組。實在不會就在阿里云提交工單,他們會很快的回復(fù)你。也可以參照此處。
RTMP-nginx的轉(zhuǎn)發(fā)服務(wù)器已經(jīng)搭建好,之后我將持續(xù)更新,帶大家開啟android和windows的開發(fā)之旅。