1. 程式人生 > >【Nginx】如何使用Nginx搭建流媒體伺服器實現直播?看完這篇我會了!!

【Nginx】如何使用Nginx搭建流媒體伺服器實現直播?看完這篇我會了!!

## 寫在前面 > 最近幾年,直播行業比較火,無論是傳統行業的直播,還是購物、遊戲、教育,都在涉及直播。作為在網際網路行業奮鬥了多年的小夥伴,你有沒有想過如果使用Nginx搭建一套直播環境,那我們該如何搭建呢?別急,接下來,我們就一起使用Nginx來搭建一套直播環境。 ## 安裝Nginx **注意:這裡以CentOS 6.8伺服器為例,以root使用者身份來安裝Nginx。** ### 1.安裝依賴環境 ```bash yum -y install wget gcc-c++ ncurses ncurses-devel cmake make perl bison openssl openssl-devel gcc* libxml2 libxml2-devel curl-devel libjpeg* libpng* freetype* autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel* libaio libaio-devel bzr libtool ``` ### 2.安裝openssl ```bash wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz tar -zxvf openssl-1.0.2s.tar.gz cd /usr/local/src/openssl-1.0.2s ./config --prefix=/usr/local/openssl-1.0.2s make make install ``` ### 3.安裝pcre ```bash wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz tar -zxvf pcre-8.43.tar.gz cd /usr/local/src/pcre-8.43 ./configure --prefix=/usr/local/pcre-8.43 make make install ``` ### 4.安裝zlib ```bash wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz cd /usr/local/src/zlib-1.2.11 ./configure --prefix=/usr/local/zlib-1.2.11 make make ``` ### 5.下載nginx-rtmp-module nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module 使用命令: ```bash git clone https://github.com/arut/nginx-rtmp-module.git ``` ### 6.安裝Nginx ```bash wget http://nginx.org/download/nginx-1.19.1.tar.gz tar -zxvf nginx-1.19.1.tar.gz cd /usr/local/src/nginx-1.19.1 ./configure --prefix=/usr/local/nginx-1.19.1 --with-openssl=/usr/local/src/openssl-1.0.2s --with-pcre=/usr/local/src/pcre-8.43 --with-zlib=/usr/local/src/zlib-1.2.11 --add-module=/usr/local/src/nginx-rtmp-module --with-http_ssl_module make make install ``` **這裡需要注意的是:安裝Nginx時,指定的是openssl、pcre和zlib的原始碼解壓目錄,安裝完成後Nginx配置檔案的完整路徑為:/usr/local/nginx-1.19.1/conf/nginx.conf。** ## 配置Nginx 配置Nginx主要是對Nginx的nginx.conf檔案進行配置,我們可以在命令列輸入如下命令編輯nginx.conf檔案。 ```bash vim /usr/local/nginx-1.19.1/conf/nginx.conf ``` 在檔案中新增如下內容。 ```bash rtmp { server { listen 1935; #監聽的埠 chunk_size 4096; application hls { #rtmp推流請求路徑 live on; hls on; hls_path /usr/share/nginx/html/hls; hls_fragment 5s; } } } ``` 其中,hls_path需要可讀可寫的許可權。接下來,我們建立/usr/share/nginx/html/hls 目錄。 ```bash mkdir -p /usr/share/nginx/html/hls chmod -R 777 /usr/share/nginx/html/hls ``` 接下來,修改http中的server模組: ```bash server { listen 81; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` 然後啟動Nginx: ```bash /usr/local/nginx-1.19.1/sbin/nginx -c /usr/local/nginx-1.19.1/conf/nginx.conf ``` ## 使OBS推流 OBS(Open Broadcaster Software) 是以網際網路流媒體直播內容為目的免費和開放原始碼軟體。需要下載這個軟體,藉助這個軟體進行推流(電腦沒有攝像頭的貌似安裝不了。。。) OBS的下載連結為:https://obsproject.com/zh-cn/download。 安裝後,桌面上會有一個如下所示的圖表。 ![](https://img-blog.csdn.net/20170527162301459#pic_center) 開啟後我們需要有一個場景,並且在這個場景下有一個流的來源(可以是視窗,如果選的是視訊則會自動識別攝像頭),接下來就是設定了。 ![](https://img-blog.csdn.net/20180420183555866#pic_center) 在配置中最需要關注的就是流的配置,由於是自建的流媒體伺服器所以我們按照如下所示的方式進行配置。 ```bash rtmp://你的伺服器ip:埠(1935)/live #URL填寫流的地址 ``` ![](https://img-blog.csdn.net/20180420183700496#pic_center) 設定完成我們就可以 開始推流了。 ## 拉流測試地址 推薦一個拉流的測試地址,裡面針對各種協議都能測試拉流測試,需要注意圖中幾個地方,由於我們使用的rtmp協議,我們選擇這一欄,底下填寫我們推流的地址和我們在上面obs的設定裡面配置的流的名稱,start, ok搞定!!! ![](https://img-blog.csdn.net/20180420183749950#pic_center) ## 福利 關注「 **冰河技術** 」微信公眾號,後臺回覆 “設計模式” 關鍵字領取《深入淺出Java 23種設計模式》PDF文件。回覆“Java8”關鍵字領取《Java8新特性教程》PDF文件。 **好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉發,讓更多的人看到,一起學習,一起進步!!** ## 寫在最後 > 如果你覺得冰河寫的還不錯,請微信搜尋並關注「 **冰河技術** 」微信公眾號,跟冰河學習高併發、分散式、微服務、大資料、網際網路和雲原生技術,「 **冰河技術** 」微信公眾號更新了大量技術專題,每一篇技術文章乾貨滿滿!不少讀者已經通過閱讀「 **冰河技術** 」微信公眾號文章,吊打面試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成為公司的技術骨幹!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 **冰河技術** 」微信公眾號吧,每天更新超硬核技術乾貨,讓你對如何提升技術能力不再迷茫! ![](https://img-blog.csdnimg.cn/20200716220443