目錄
1 Centos上Nginx+Rtmp module流媒體服務器搭建
2 Mac OS上Nginx+Rtmp module流媒體服務器搭建
1 Centos上Nginx+Rtmp module流媒體服務器搭建
1.1 安裝
每個人的安裝環境是不太一樣的,有的某些依賴包已經安裝,有的沒有,這兒儘量將所有依賴包都介紹完整。本人的實驗環境是在騰訊雲上申請的一臺雲服務器,配置以系統環境如下:
配置:
系統環境:
注意1:後續的軟件安裝都需要權限,要麼是root用戶,要麼請使用sudo su來獲取相應權限
注意2:centos上查看某個軟件是否安裝,比如gcc,可以使用rpm -qa gcc來查詢,若已經安裝,命令行將輸出版本信息,否則將什麼也不輸出
1.1.1 安裝gcc
yum -y install gcc gcc-c++
由於後續需要下載nginx源碼進行編譯安裝,編譯工具就是gcc,因此需要安裝gcc。
1.1.2 安裝pcre
yum install -y pcre pcre-devel
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。
1.1.3 安裝zlib
yum install -y zlib
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。
1.1.4 安裝openssl
yum install -y openssl
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。nginx 不僅支持 http 協議,還支持 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。
1.1.5 安裝Nginx+Rtmp Module
[root@VM_0_17_centos ~]# cd /usr/local/src
[root@VM_0_17_centos src]# mkdir nginx #在/usr/local/src創建nginx目錄
[root@VM_0_17_centos src]# cd nginx #進入此目錄,nginx源碼以及rtmp模塊的源碼將下載在此目錄下
[root@VM_0_17_centos nginx]# git clone https://github.com/arut/nginx-rtmp-module.git #下載nginx-rtmp-module
[root@VM_0_17_centos nginx]# wget http://nginx.org/download/nginx-1.10.3.tar.gz #下載nginx安裝包
[root@VM_0_17_centos nginx]# tar -zxvf nginx-1.10.3.tar.gz #解壓nginx安裝包
[root@VM_0_17_centos nginx]# cd nginx-1.10.3 #進入解壓目錄
[root@VM_0_17_centos nginx-1.10.3]# ./configure --add-module=../nginx-rtmp-module --with-http_ssl_module #進入常規源碼安裝3連彈之configure配置
[root@VM_0_17_centos nginx-1.10.3]# make && make install #編譯和安裝
到此,軟件安裝完畢
1.2 修改Nginx配置文件 && 啓動Nginx
1.2.1 修改Nginx配置文件
按照上述步驟安裝完畢之後,nginx的配置文件爲/usr/local/nginx/conf/nginx.conf。使用Vim打開之
[root@VM_0_17_centos nginx]# vim /usr/local/nginx/conf/nginx.conf
打開後按i鍵進入編輯狀態,在此文件末尾加上如下配置:
rtmp {
server {
listen 1935; #端口號,rtmp默認爲1935,可以修改爲其他
application live { #推流的app號,可以修改live爲其他
live on;
record off;
}
}
}
編輯完畢,按esc鍵退出編輯狀態,輸入:wq保存並退出vim
1.2.2 啓動nginx
1. nginx安裝後執行文件在 /usr/local/nginx/sbin/nginx,可以執行如下命令運行nginx
[root@VM_0_17_centos sbin]# /usr/local/nginx/sbin/nginx
2. 如果想在任意目錄下直接輸入nginx就啓動nginx,可以給nginx創建一個軟連接到PATH環境變量中的任意目錄,比如:當前環境中PATH環境變量包含的目錄如下:
[root@VM_0_17_centos sbin]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
那麼可以給nginx創建一個軟鏈接(類似於windows的快捷方式)到PATH環境變量的上述目錄中的一個,一般選擇/usr/local/bin:
[root@VM_0_17_centos sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
任意目錄執行
[root@VM_0_17_centos sbin]# nginx
3. 查看nginx是否啓動成功,可以使用netstat -ntlp命令查看
我們發現nginx啓動成功了,並且佔用了1935和80端口,1935即是rtmp的推拉流端口,80爲nginx的http服務端口
1.3 推流和拉流嘗試
推流:如果搭建nginx的機器有公網地址,比如本人申請的騰訊雲服務器(有效期15天,配置低,到2019-04-27,公網ip爲45.40.197.4 ),那麼可以在任意電腦上使用推流軟件往此服務器上推送rtmp流數據。推流的軟件可以選擇ffmpeg,OBS等,此處以ffmpeg爲例來展示:
ffmpeg -re -stream_loop -1 -i http://59.80.44.91/vjs.zencdn.net/v/oceans.mp4 -codec copy -f flv rtmp://45.40.197.4:1935/live/video
對此命令稍微解釋下:
-re : 按照時間戳讀取數據,不加此選項將直接把所有文件讀取後直接推出去
-stream_loop -1:推流次數,-1表示無限循環,0表示不循環
-i:輸入文件,此處爲網絡上的文件,也可以改爲本地文件
-codec copy:執行流拷貝,不進行轉碼
-f flv:轉封裝爲flv格式
rtmp://45.40.197.4:1935/live/video : rtmp推流地址,其中live爲配置的appname(必須與nginx配置一樣),video爲streamname
拉流:可以使用ffplay或者vlc播放器進行拉流測試,以ffplay爲例,直接執行如下命令:
ffplay rtmp://45.40.197.4:1935/live/video
2 Mac OS上Nginx+Rtmp module流媒體服務器搭建
2.1 安裝
2.1.1 安裝homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew簡稱brew,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件,可以說Homebrew就是mac下的apt-get、yum神器
2.1.2 增加對 nginx
的擴展
brew tap homebrew/nginx
增加對 nginx
的擴展;也就是從github上下載,home-brew對ngixnx的擴展
2.1.3 安裝nginx+rtmp模塊
brew install nginx-full --with-rtmp-module
到此安裝完畢
2.1.4 查看nginx安裝位置
首先來看看我們的nginx安裝在哪裏
brew info nginx-full
執行上面的命令後我們可以看到信息
- nginx安裝所在位置 /usr/local/Cellar/nginx-full/1.10.1/bin/nginx
- nginx配置文件所在位置 /usr/local/etc/nginx/nginx.conf
- nginx服務器根目錄所在位置 /usr/local/var/www
2.2 修改配置文件以及啓動nginx
參見centos,此處略
2.3 推拉流嘗試
參見centos,此處略