利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器
開(kāi)發(fā)環(huán)境
nginx的服務(wù)器的搭建
安裝nginx的依賴(lài)庫(kù)
sudo apt-get update sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install openssl libssl-dev
配置并編譯nginx
使用nginx的默認(rèn)配置,添加nginx的rtmp模塊。
./configure --add-module=../nginx-rtmp-module-master make sudo make install
運(yùn)行測(cè)試nginx
進(jìn)入安裝目錄/usr/local/nginx,運(yùn)行命令./sbin/nginx
注意:以后所有的命令都在/usr/local/nginx目錄運(yùn)行,也nginx配置文件的相對(duì)目錄。
打開(kāi)瀏覽器在地址欄輸入:localhost。如果,如下圖顯示那樣就證明您的nginx服務(wù)器搭建成功了。
點(diǎn)播視頻服務(wù)器的配置
通過(guò)上一步nginx服務(wù)器已經(jīng)搭建完成,然后我們就可以開(kāi)啟一個(gè)視頻點(diǎn)播的服務(wù)了。打開(kāi)配置文件nginx.conf,添加RTMP的配置。
worker_processes 1; events { worker_connections 1024; } rtmp { #RTMP服務(wù) server { listen 1935; #//服務(wù)端口 chunk_size 4096; #//數(shù)據(jù)傳輸塊的大小 application vod { play /opt/video/vod; #//視頻文件存放位置。 } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
配置目錄*/opt/video/vod*為存放視頻文件的位置了,那我們就往里面放一個(gè)文件吧。我放了一個(gè)qq.mp4文件。
文件放好之后,那就讓我們重新啟動(dòng)一下nginx
sudo ./sbin/nginx -s reload
打開(kāi)視頻播放軟件選用的是VLC media-> open network stream…
如圖填寫(xiě)我們要點(diǎn)播的節(jié)目地址rtmp://localhost/vod/qq.mp4 如圖:
點(diǎn)擊play就可以播放了。
當(dāng)然點(diǎn)播不使用RTMP插件nginx自身也是可以實(shí)現(xiàn)點(diǎn)播服務(wù)的。那就是配置location部分,由于下面我們要配置直播和回看功能所以選用了RTMP服務(wù)。
直播視頻服務(wù)器的配置
接著我們就在點(diǎn)播服務(wù)器配置文件的基礎(chǔ)之上添加直播服務(wù)器的配置。一共2個(gè)位置,第一處就是給RTMP服務(wù)添加一個(gè)application這個(gè)名字可以任意起,也可以起多個(gè)名字,由于是直播我就叫做它live吧,如果打算弄多個(gè)頻道的直播就可以live_cctv1、live_cctv2名字任意。第二處就是添加兩個(gè)location字段,字段的內(nèi)容請(qǐng)直接看文件吧。
worker_processes 1; events { worker_connections 1024; } rtmp { server { listen 1935; chunk_size 4096; application vod { play /opt/video/vod; } application live{ #第一處添加的直播字段 live on; } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location /stat { #第二處添加的location字段。 rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { #第二處添加的location字段。 root /usr/local/nginx/nginx-rtmp-module/; } location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
添加完這兩處之后,重新啟動(dòng)nginx打開(kāi)瀏覽器看看,是否有如下圖顯示:
有沒(méi)有看到紅框框的live字樣呢?如果可以顯示出來(lái),證明你的配置生效了。
還等什么讓我們推送一個(gè)節(jié)目看看(其實(shí)專(zhuān)業(yè)詞叫錄制,后面將會(huì)使用錄制這個(gè)詞。)吧。
這次推送我使用的是OBS(Open Broadcaster Software)會(huì)給大家介紹如何使用手機(jī)采集視頻并且推送到服務(wù)器上。
首先安裝FFmpeg
添加源:
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
更新源:
sudo apt-get update
安裝:
sudo apt-get install ffmpeg
如果是Ubuntu 15.04可以直接使用
sudo apt-get install ffmpeg
安裝obs-studio
添加源:
sudo add-apt-repository ppa:obsproject/obs-studio
更新源:
sudo apt-get update
安裝:
sudo apt-get install obs-studio
配置OBS如圖:
點(diǎn)擊紅圈添加“Media Source”,會(huì)彈出一個(gè)框框,里面的內(nèi)容就按照?qǐng)D片顯示配置就可以了。點(diǎn)擊“OK”就能在你的屏幕上播放了。
配置節(jié)目的輸出流如圖所示:
首先點(diǎn)擊紅圈“setting”進(jìn)入設(shè)置界面。記得要正確填寫(xiě)要錄制的服務(wù)器路徑啊。配置好就可以點(diǎn)擊OK了。退出后點(diǎn)擊藍(lán)圈,就開(kāi)始錄制節(jié)目了。
查看我們的了錄制的節(jié)目,服務(wù)器有沒(méi)有接收到呢?打開(kāi)我的服務(wù)器地址“http://localhost/stat”查看一下 ,你的顯示是否和我的相同呢?如果相同證明服務(wù)器已經(jīng)接收到了錄制的節(jié)目,客戶(hù)端可以進(jìn)行播放了。
播放的地址就是“rtmp://localhost/live/test”,如果您本地有支持rtmp協(xié)議的播放器就可以試試了。最后奉上一張觀看直播的屏幕截圖。
實(shí)時(shí)回看視頻服務(wù)器的配置
我們想一想如果直播服務(wù)能夠把節(jié)目錄制在本地,我們不就可以直接進(jìn)行回看先前的節(jié)目了嗎?回看一分鐘、一小時(shí)甚至一天的。想想就興奮不用寫(xiě)代碼有現(xiàn)成的可以使用。怎么用呢?繼續(xù)看nginx的配置吧。
worker_processes 1; events { worker_connections 1024; } rtmp { server { listen 1935; chunk_size 4096; application vod { play /opt/video/vod; } application live { live on; hls on; #這個(gè)參數(shù)把直播服務(wù)器改造成實(shí)時(shí)回放服務(wù)器。 wait_key on; #對(duì)視頻切片進(jìn)行保護(hù),這樣就不會(huì)產(chǎn)生馬賽克了。 hls_path /opt/video/hls; #切片視頻文件存放位置。 hls_fragment 10s; #每個(gè)視頻切片的時(shí)長(zhǎng)。 hls_playlist_length 60s; #總共可以回看的事件,這里設(shè)置的是1分鐘。 hls_continuous on; #連續(xù)模式。 hls_cleanup on; #對(duì)多余的切片進(jìn)行刪除。 hls_nested on; #嵌套模式。 } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /usr/local/nginx/nginx-rtmp-module/; } location /live { #這里也是需要添加的字段。 types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /opt/video/hls; expires -1; add_header Cache-Control no-cache; } location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
1.添加完成后需要重新啟動(dòng)nginx,由于這次nginx需要向服務(wù)器寫(xiě)切片視頻文件,但nginx我又沒(méi)有給nginx指定用戶(hù)名只能走默認(rèn)的nobody用戶(hù)和nogroup用戶(hù)組,其實(shí)就是沒(méi)有組。所以我對(duì)需要寫(xiě)入的目錄做了增大權(quán)限的修改。
如下圖,這樣做就是為了避免由于權(quán)限問(wèn)題而無(wú)法寫(xiě)文件。
2.如何給服務(wù)器錄制視頻,在上一節(jié)已經(jīng)說(shuō)過(guò),這里就不再說(shuō)了。
3.查看視頻文件是否真的錄制上沒(méi)有,繼續(xù)看圖:
已經(jīng)產(chǎn)生切片視頻文件了。其中還有一個(gè)index.m3u8。
4.播放視頻,這次可是http開(kāi)頭的了,“http://localhost/live/test/index.m3u8”。
5.已經(jīng)可以播放了,如何回看呢?其實(shí)這個(gè)index.m3u8文件僅僅是目錄。想回看那個(gè)就播放那個(gè).ts文件就可以了。
到此這篇關(guān)于利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器的文章就介紹到這了,更多相關(guān)nginx搭建RTMP視頻點(diǎn)播內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
簡(jiǎn)單了解Nginx七層負(fù)載均衡的幾種調(diào)度算法
這篇文章主要介紹了簡(jiǎn)單了解Nginx七層負(fù)載均衡的幾種調(diào)度算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn)
本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10使Nginx服務(wù)器支持中文URL的相關(guān)配置詳解
這篇文章主要介紹了使Nginx服務(wù)器支持中文URL的相關(guān)配置方法,搜索引擎方面Google目前對(duì)中文URL的支持度也很好,需要的朋友可以參考下2016-01-01訪問(wèn)nginx顯示未找到站點(diǎn)的問(wèn)題分析及解決方案
當(dāng)我們?cè)诎惭b好nginx準(zhǔn)備訪問(wèn)80端口時(shí),突然出現(xiàn)您的請(qǐng)求在Web服務(wù)器中沒(méi)有找到對(duì)應(yīng)的站點(diǎn),所以本文給大家介紹了訪問(wèn)nginx顯示未找到站點(diǎn)的問(wèn)題分析及解決方案,需要的朋友可以參考下2024-03-03nginx proxy_buffer_size解決后端服務(wù)傳輸數(shù)據(jù)過(guò)多,header過(guò)大問(wèn)題
這篇文章主要介紹了nginx proxy_buffer_size解決后端服務(wù)傳輸數(shù)據(jù)過(guò)多,header過(guò)大問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Nginx服務(wù)器中配置GeoIP模塊來(lái)攔截指定國(guó)家IP
Nginx中自帶GeoIP模塊可以屏蔽指定IP的請(qǐng)求,只不過(guò)默認(rèn)沒(méi)有被編譯,打開(kāi)以后我們只要再下載一個(gè)IP規(guī)則就行,Nginx服務(wù)器中配置GeoIP模塊來(lái)攔截指定國(guó)家IP2016-06-06