流媒體協議之nginx-rtmp服務部署
1.簡介
nginx-rtmp服務是指使用nginx服務器和nignx-rtmp-moudle開源組件,實作rtmp協議服務端,本文介紹的如何將nginx-rtmp服務部署在linux服務器上
2.原始碼下載
2.1.nginx
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -xzf nginx-1.12.2.tar.gz
2.2.nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module
2.3.pcre
wget https://sourceforge.net/projects/pcre/files/pcre/8.41/pcre-8.41.tar.bz2
tar -xjf pcre-8.41.tar.bz2
說明:nginx依賴該庫
2.4.openssl
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar -xzf openssl-1.1.1d.tar.gz
說明:nginx依賴該庫
2.5.zlib
wget https://github.com/madler/zlib/archive/v1.2.11.tar.gz
mv v1.2.11.tar.gz zlib_v1.2.11.tar.gz
tar -xzf zlib_v1.2.11.tar.gz
說明:nginx依賴該庫
3.代碼編譯
由于編譯nginx時會直接去編譯其所依賴的庫,所以只需要編譯好nginx開源庫就行(依賴的庫會自動編譯好)
首先配置nginx,生成makefile:
./configure --prefix=/work/workspace/rtmp_nginx/nginx-1.12.2/install \
--with-debug \
--with-compat \
--with-threads \
--with-pcre=../pcre-8.41 \
--with-openssl=../openssl-1.1.1d \
--with-zlib=../zlib-1.2.11 \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-stream \
--add-module=../nginx-rtmp-module
生成的makefile在nginx-1.12.2中的obj目錄中,其中已經包含了對依賴庫的編譯:

然后找到生成objs/nginx的地方,將-ldl –lpthread放到libcrypto.a后面,否則在鏈接的時候就會報錯:

最后執行make;make install
注意,install目錄不要事先創建好,否則會導致make install不會被執行:

正常的make install:

4.運行測驗
首先進入install目錄中,然后進入conf目錄,修改nginx.conf檔案,加入rtmp相關欄位:
rtmp {
server {
listen 1935;
chunk_size 4096;
application ins { #播放的是/work/workspace/rtmp_nginx/install/ins/目錄下的視頻檔案
play /work/workspace/rtmp_nginx/install/ins;
}
application live{ #第一處添加的直播欄位
live on;
}
}
}

接下來運行nginx程式:
sudo ./sbin/nginx -c /work/workspace/rtmp_nginx/nginx-1.12.2/install/conf/nginx.conf
注意-c后面要用絕對路徑,否則就會用默認的,該路徑下的組態檔就不會被使用,
運行后可以在瀏覽器輸入服務器的ip地址出現下面這個地址說明運行成功:

在linux服務器/work/workspace/rtmp_nginx/install/ins/目錄(nginx.conf中配置的)下放入ins.mp4檔案,然后本地使用vlc播放器,在網路串流中輸入rtmp播放地址:rtmp://192.168.110.130:1935/ins/ins.mp4或者rtmp://192.168.110.130/ins/ins.mp4即可成功出圖:

5.注意事項
nginx.conf檔案中加入rtmp欄位在拷貝或者輸入程序中一定要注意{}成對,否則nginx會報錯:nginx: [emerg] "rtmp" directive is not allowed here


Nginx重啟命令:
killall nginx;
sudo ./sbin/nginx -c /work/workspace/rtmp_nginx/nginx-1.12.2/install/conf/nginx.conf
或者
sudo ./sbin/nginx -s reload -c /work/workspace/rtmp_nginx/nginx-1.12.2/install/conf/nginx.conf
出現nginx: [error] open() "/work/workspace/rtmp_nginx/nginx-1.12.2/install/logs/nginx.pid說明nginx已經退出了就不能使用reload了,直接使用開啟命令即不要-s:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552115.html
標籤:其他
上一篇:2分鐘快速上手流水線的創建與運行
下一篇:返回列表
