摘要:的功能兼容所有功能支持方式的直播支持緩存,以減少首屏時間支持虛擬主機功能可以省略配置項而不影響基本功能修復已知的功能簡介兼容的所有功能,詳細說明參考的。
nginx-http-flv-module是在nginx-rtmp-module基礎上開發(fā)的一個直播模塊。
感謝Arut創(chuàng)造了nginx-rtmp-module,它是Nginx的一個優(yōu)秀的第三方模塊,可以用來直播,支持RTMP,HLS和DASH方式直播,還支持調用第三方軟件進行轉碼,錄制視頻等功能,由于依托Nginx,性能也比較高。但是美中不足的地方也不少,例如首屏時間長,不支持HTTP-FLV方式直播,不支持虛擬主機(vhost)功能,省略listen配置無法接受連接,有很多很明顯的bug等問題。
nginx-http-flv-module解決了上述的問題。當然,還有些bug還有待修復。具體使用方法請參考說明文件:
英語README
中文README.CN
為什么選擇Nginx作為支持HTTP-FLV方式直播的服務器呢?因為Nginx的Web服務器功能對HTTP協(xié)議的支持非常完善,Nginx的性能優(yōu)秀,經過了很多場景的檢驗。另外,Nginx本身對第三方軟件的依賴較少,非常易于部署。這些都使得它成為HTTP-FLV方式直播服務器不可多得的選擇。
nginx-http-flv-module的功能兼容nginx-rtmp-module所有功能
支持HTTP-FLV方式的直播
支持GOP緩存,以減少首屏時間
支持虛擬主機功能
可以省略listen配置項而不影響基本功能
修復nginx-rtmp-module已知的bug
功能簡介兼容nginx-rtmp-module的所有功能,詳細說明參考nginx-rtmp-module的Wiki。
支持HTTP-FLV方式的直播
支持的播放器有VLC,OBS和flv.js等,只需要輸入如下地址即可:
http://yourdomain[:httpport]/dir?[rtmpport=xxx&]app=yyy&stream=zzz
其中httpport是Nginx的配置文件中http塊中監(jiān)聽的端口,如果這個端口是80,那么可以省略不寫;rtmpport是Nginx的配置文件中rtmp塊中監(jiān)聽的端口,如果這個端口是1935,那么可以省略不寫。dir是Nginx的配置文件中http塊中location后的路徑。參數app和stream見下文的推流一節(jié)說明。
nginx-http-flv-module也支持HTTPS-FLV方式的直播。
支持GOP緩存,以減少首屏時間
只需要在rtmp塊中的application塊中添加如下配置項即可:
gop_cache on;
現在的代碼中只緩存兩個GOP,如果需要修改GOP緩存?zhèn)€數,可以自行修改代碼,但是不建議將GOP緩存的個數設置太大,因為發(fā)送GOP緩存可能需要很多次I/O操作,可能耗費比較多的時間,從而影響整個服務器的性能。
支持虛擬主機功能
nginx-rtmp-module不支持虛擬主機功能。那什么是虛擬主機功能呢?假設有一臺服務器,其IP地址是192.168.1.110,我配置了一個DNS服務器,將兩個域名www.testa.com和www.testb.com都指向192.168.1.110,那么對于Web服務,我可以針對這兩個域名配置不同的Web頁面,通過不同的域名訪問不同的Web頁面,但其實這兩個不同的服務都指向同一臺服務器。這兩個域名對應同一個IP地址就是虛擬主機功能。與http配置一樣,nginx-http-flv-module通過server_name來指定域名,也支持前向通配,后向通配和完全匹配:
server { server_name *.test.com; #前向通配,匹配blog.test.com/login.test.com等 ... } server { server_name www.test.*; #后向通配,匹配www.test.org/www.test.com等 ... } server { server_name www.test.com; #完全匹配 }
注意:虛擬主機功能在多進程模式下還有問題。
可以省略listen配置項而不影響基本功能
這個略,大家可以試試使用nginx-rtmp-module時,在rtmp塊中不指定listen,然后推流和播放會不會出現問題。
修復nginx-rtmp-module已知的bug
大多是一些比較明顯的錯誤,如指令對應的宏寫錯了,消息個數計算錯誤等。
為了簡便起見,假設不使用比較復雜的選項,這里以ffmpeg為例:
ffmpeg -re -i media_file -vcodec copy -acodec copy -f flv rtmp://yourdomain/app/stream
上文中HTTP-FLV的URL中的app和stream與這里的app和stream對應,它們都是RTMP協(xié)議中的概念。
也可以使用OBS推流,這里不再詳述。
在我的筆記本上(ThinkPad T410,Intel Core i5 M480,4G內存,Debian 7.11)壓力測試,單進程(多進程還有些問題沒解決)200推流和1000播放沒有問題。
有人用nginx-http-flv-module嗎?答案是有的。我知道商用的有不下10家,規(guī)模比較大的一家是CDN廠商,另一家是網絡電視廠商。另外,據網友反饋,國外也有網站在用這個模塊。還有華為也打算使用本模塊,這是我已知的最大的一個對本模塊感興趣的廠商了。
歡迎大家試用nginx-http-flv-module,也歡迎反饋bug和提交pr。
最后貼兩張調試nginx-http-flv-module時的測試截圖:
RTMP和HTTP-FLV測試截圖
flv.js測試截圖
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40069.html
摘要:本文作為直播介紹系列文的第篇,主要和大家談談直播協(xié)議視頻推流等技術內容直播協(xié)議流媒體分為直播和點播。使用語言編寫,支持多種協(xié)議相關網絡協(xié)議和移動設備的流媒體服務器。 近年來直播已成為互聯(lián)網行業(yè)的大熱話題,直播答題、游戲直播、競賽直播等層出不窮,直播早已成為人們耳熟能詳的技術。事實上直播的興起不僅與新時代人們要求為自己代言的心理有關,同時也得益于帶寬的提速和CDN技術的發(fā)展。伴隨著CDN...
閱讀 3409·2023-04-25 22:04
閱讀 2203·2021-11-22 15:29
閱讀 2170·2021-10-11 10:57
閱讀 1409·2021-09-24 09:48
閱讀 3153·2021-09-09 09:34
閱讀 2550·2021-09-02 15:21
閱讀 2398·2019-08-30 15:53
閱讀 1142·2019-08-30 14:07