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

2020-12-12 51CTO

作者個人研發的在高並發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時調度方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:https://github.com/sunshinelyz/mykit-delay

寫在前面

最近幾年,直播行業比較火,無論是傳統行業的直播,還是購物、遊戲、教育,都在涉及直播。作為在網際網路行業奮鬥了多年的小夥伴,你有沒有想過如果使用Nginx搭建一套直播環境,那我們該如何搭建呢?別急,接下來,我們就一起使用Nginx來搭建一套直播環境。

安裝Nginx

注意:這裡以CentOS 6.8伺服器為例,以root用戶身份來安裝Nginx。

1.安裝依賴環境

  1. 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

  1. wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz 
  2. tar -zxvf openssl-1.0.2s.tar.gz 
  3. cd /usr/local/src/openssl-1.0.2s 
  4. ./config  
  5. make 
  6. make install 

3.安裝pcre

  1. wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz 
  2. tar -zxvf pcre-8.43.tar.gz 
  3. cd /usr/local/src/pcre-8.43 
  4. ./configure  
  5. make 
  6. make install 

4.安裝zlib

  1. wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz 
  2. tar -zxvf zlib-1.2.11.tar.gz 
  3. cd /usr/local/src/zlib-1.2.11 
  4. ./configure  
  5. make 
  6. make 

5.下載nginx-rtmp-module

nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module

使用命令:

  1. git clone https://github.com/arut/nginx-rtmp-module.git   

6.安裝Nginx

  1. wget http://nginx.org/download/nginx-1.19.1.tar.gz 
  2. tar -zxvf nginx-1.19.1.tar.gz 
  3. cd /usr/local/src/nginx-1.19.1 
  4. ./configure  
  5. make 
  6. make install 

這裡需要注意的是:安裝Nginx時,指定的是openssl、pcre和zlib的源碼解壓目錄,安裝完成後Nginx配置文件的完整路徑為:/usr/local/nginx-1.19.1/conf/nginx.conf。

配置Nginx

配置Nginx主要是對Nginx的nginx.conf文件進行配置,我們可以在命令行輸入如下命令編輯nginx.conf文件。

  1. vim /usr/local/nginx-1.19.1/conf/nginx.conf 

在文件中添加如下內容。

  1. rtmp { 
  2.     server { 
  3.         listen 1935;  #監聽的埠 
  4.         chunk_size 4096;    
  5.         application hls {  #rtmp推流請求路徑   
  6.             live on;     
  7.             hls on;     
  8.             hls_path /usr/share/nginx/html/hls;     
  9.             hls_fragment 5s;     
  10.         }     
  11.     }     
  12. }  

其中,hls_path需要可讀可寫的權限。接下來,我們創建/usr/share/nginx/html/hls 目錄。

  1. mkdir -p /usr/share/nginx/html/hls 
  2. chmod -R 777 /usr/share/nginx/html/hls 

接下來,修改http中的server模塊:

  1. server {   
  2.     listen       81;   
  3.     server_name  localhost;   
  4.  
  5.     #charset koi8-r;   
  6.  
  7.     #access_log  logs/host.access.log  main;   
  8.  
  9.     location / {   
  10.         root   /usr/share/nginx/html;   
  11.         index  index.html index.htm;   
  12.     }   
  13.  
  14.     #error_page  404              /404.html;   
  15.  
  16.     # redirect server error pages to the static page /50x.html   
  17.     #   
  18.     error_page   500 502 503 504  /50x.html;   
  19.     location = /50x.html {   
  20.         root   html;   
  21.     } 

然後啟動Nginx:

  1. /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。

安裝後,桌面上會有一個如下所示的圖標。

打開後我們需要有一個場景,並且在這個場景下有一個流的來源(可以是窗口,如果選的是視頻則會自動識別攝像頭),接下來就是設置了。

在配置中最需要關注的就是流的配置,由於是自建的流媒體伺服器所以我們按照如下所示的方式進行配置。

  1. rtmp://你的伺服器ip:埠(1935)/live #URL填寫流的地址 

設置完成我們就可以 開始推流了。

拉流測試地址

推薦一個拉流的測試地址,裡面針對各種協議都能測試拉流測試,需要注意圖中幾個地方,由於我們使用的rtmp協議,我們選擇這一欄,底下填寫我們推流的地址和我們在上面obs的設置裡面配置的流的名稱,start, ok搞定!!!

本文轉載自微信公眾號「 冰河技術」,可以通過以下二維碼關注。轉載本文請聯繫 冰河技術公眾號。

【編輯推薦】

【責任編輯:

武曉燕

TEL:(010)68476606】

點讚 0

相關焦點

  • nginx-quic:NGINX官方QUIC和HTTP/3技術預覽版
    HTTP/2標準於2015年出版,並且目前已經有45%的網站已經採納使用了HTTP/2。但這只是一方面,一個端點, "最後一英裡"的一頭。在另一頭現代公共Internet上HTTP的使用則有很大不同。現代Internet基礎結構的現實情況是HTTP/2很少實現端到端兩頭都部署。
  • 「技術專刊」WebApi部署多伺服器配置Nginx負載均衡
    01PARTCoreWebApi教程本地演示環境Visual Studio2019 --- Vsersion:16.4.4 + NetCore3.1.202PARTNginx快速搭建配置負載均衡>Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。
  • 通過OpenResty實現Nginx動態拉黑IP
    用於方便地搭建能夠處理超高並發、擴展性極高的動態 Web 應用、Web 服務和動態網關。官方地址:http://openresty.org/cn/環境搭建本文使用centos 7進行操作,安裝nginx,本處安裝nginx並非是openresty前提,只是為了演示openresty安裝後,訪問地址會將nginx變成openrestywget下載
  • Nginx在高並發下的性能優化點!有這篇就夠了!
    當你的伺服器連接數不多時,開啟這個參數會讓負載有一定的降低,但是當伺服器的吞吐量很大時,為了效率,可以關閉這個參數。fastcgi_intercept_errors on :這個指令指定是否傳遞4xx和5xx錯誤信息到客戶端,或者允許nginx使用error_page處理錯誤信息。註:靜態文件不存在會返回404頁面,但是php頁面則返回空白頁!
  • Nginx 1.11.10 發布,高性能 Web 伺服器
    Nginx 1.11.10 發布了,Nginx 是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。
  • Nginx專題之-父子進程的架構(打虎親兄弟worker,上陣父子兵)
    一個請求只能在一個worker進程中處理,worker進程個數一般設置為伺服器CPU核數(worker會和cpu就行綁定)。更好地使用每核cpu上的緩存來減少緩存失效的命中率。Nginx為什麼是多進程結構呢,最核心的原因是nginx要保證它的高可用性,高可靠性。
  • 壞人還是有的(Nginx 拒絕指定IP訪問)
    閒來無事,登陸伺服器,發現有個IP不斷的猜測路徑、試圖往伺服器上傳文件(木馬)。
  • ...目前全殺毒軟體免殺|cookie|curl|nginx|殺毒軟體|免殺|shell
    情報來源:安恆威脅情報中心概述近日,我們捕獲一個新型nginx後門,該後門免殺效果非常好,截至目前VT上所有殺毒軟體都不能對其進行查殺。經過安恆威脅情報中心的研究員分析,發現黑客修改了原版nginx中處理http頭的函數ngx_http_header_filter黑客針對cookies欄位進行了特殊處理,判斷請求中是否包含「lkfakjf」,如果包含,則會主動回連黑客給定的伺服器地址。
  • 直播軟體搭建,流媒體伺服器的應用有多重要
    直播軟體搭建,使用流媒體伺服器是必要的事,在直播軟體搭建完成後的運營中,流媒體伺服器擔負著音視頻的播放、傳遞等工作,很多運營商不能理解流媒體伺服器的重要性體現在哪,今天就給大家介紹一下。直播軟體搭建一、認識流媒體伺服器直播軟體搭建使用流媒體伺服器的核心在於,它可以向用戶提供視頻服務,主要功能是對流媒體內容進行採集、緩存、調度和傳輸播放
  • nginx status狀態頁配置方法和中文說明
    西崑雲這篇文章主要介紹了nginx status狀態頁配置方法和中文說明,重點在配置例子和status的中文說明,需要的朋友可以參考下  nginx和php-fpm一樣內建了一個狀態頁,對於想了解nginx
  • 網際網路研發運維都必用的Nginx到底是什麼呢?
    在web服務應用中,它可以實現靜態資源、PHP等網站的搭建;在後端代理服務中,它支持tcp/udp、http、grpc、fastcgi(PHP語言使用的協議)等協議的轉發處理;在緩存場景中,它自身可以緩存歷史數據;在API網關應用中,它提供了身份認證、鑑權等操作。
  • 除了負載均衡,Nginx 能做的真是太強大了!
    她是一款誕生於俄羅斯的高性能web伺服器,尤其在高並發情況下,相較Apache,有優異的表現。那除了負載均衡,她還有什麼其他的用途呢,下面我們來看下。一、靜態代理Nginx擅長處理靜態文件,是非常好的圖片、文件伺服器。把所有的靜態資源的放到nginx上,可以使應用動靜分離,性能更好。
  • 性能超群的HTTP伺服器,搜狗C++伺服器引擎發布
    這款引擎不僅實現了高性能、輕量級的落地,還創新性的引入任務流概念,實現了計算任務與通信任務的統一和協同調度。基於Workflow引擎,開發者可以方便的實現複雜的業務邏輯,並進一步滿足對高並發、高性能C++伺服器程序的開發需求。 GitHub搜索 Sogou C ++ Workflow即可找到該項目。
  • Mastodon從搭建到入門!
    輸入您選擇的域名如果域名已經傳播(這是儘早進行此操作的重要原因),則LetsEncrypt將找到您的伺服器並一次性頒發證書。# service nginx start打開瀏覽器標籤,然後導航到您的域。您應該會收到502網關錯誤,並使用LetsEncrypt證書進行保護。如果不是,請返回並確保正確執行了前面的每個步驟。
  • 一鍵安裝Fastdfs+Nginx分布式圖片伺服器
    使用Docker搭建圖片伺服器並連接使用一. 安裝Docker此處略,後面出安裝Docker詳細教程。現在可自行百度安裝二.
  • 快速了解在直播平臺開發中什麼是流媒體伺服器?
    時間一晃來到了2020年底,直播的熱潮仍未褪去,直播系統演變到今天融入到了人們生活中的點點滴滴,包括一對一直播系統、直播帶貨系統、直播教育系統等,都離不開流媒體伺服器,那麼在直播平臺開發中什麼是流媒體伺服器,都包含哪些知識乾貨呢?
  • 新手小白如何部署伺服器,讓你的個人電腦成為網站伺服器
    近期有粉絲問到從伺服器部署到網站上線的細節操作流程要怎麼辦,本文進行相關的說明,由於方法很多,文本著重以小白比較容易入手的方式來進行介紹,同時文末會對如何將自己的電腦變成伺服器進行簡單的說明,便於小白零成本學習。一、環境部署的小知識關於如何選擇及購買伺服器由於我有另外的文章進行了說明,本文不重複介紹。