當前位置:
首頁 > 最新 > nginx優秀新開源項目:nginx-http-flv-module

nginx優秀新開源項目:nginx-http-flv-module

author:未央千城

github: https://github.com/winshining/nginx-http-flv-module

簡介:目前已有數百star,數家企業已經在線上使用,其中有一家是華為,歡迎star。

近幾年直播行業火爆,開源的直播軟體解決方案有SRS(Simple-RTMP-Server)和nginx-rtmp-module,前者是國人發起的一個優秀的開源項目,目前國內很多公司都使用它作為直播解決方案,由C++編寫;後者依賴Nginx,以第三方模塊的方式提供直播功能,由C編寫。SRS採用多線程方式,性能優秀,經受住了眾多場景的考驗,但是SRS3已經閉源(更正:是有一段時間閉源了,現在又開源了);nginx-rtmp-module是採用多進程方式,Nginx的性能優秀,但是據網友測試,nginx-rtmp-module的性能不如SRS,並且nginx-rtmp-module的作者已經很久沒有更新版本了,支持的功能也有限,例如不支持HTTP方式的FLV直播,而這是國內直播行業普遍採用的方式;再如推流不支持upstream,無法分散式部署功能;還有飽受詬病的播放響應延遲時間很長的問題(即俗稱的不能秒播)等。

我在nginx-rtmp-module的基礎上實現了基於HTTP方式的FLV直播功能,支持GOP緩存,減少播放響應延遲時間;支持流式和Transfer-Encoding: chunked兩種HTTP響應格式;修復nginx-rtmp-module沒有listen配置項時,推流失敗的問題;解決nginx-rtmp-module已知的bug,見nginx-http-flv-module,歡迎下載測試和修復bug。有問題或者建議,可以加Q群:711969608詳聊。目前已經有廠商準備將本模塊商用,目前已知有6家,其中一家是華為,目前都還在測試中,有廠商陸續反饋過不少bug,修復後功能已經越來越穩定,在此表示感謝。目前還存在的問題是高並發情況下,群斷連接會造成Nginx崩潰和無規律的CPU使用率暴增,最近加班比較多,來不及修復這些問題,後續會不定時更新github。

如果不想推流,可以用一個現成的直播地址rtmp://live.hkstv.hk.lxdns.com/live/hks。

典型的nginx.conf如下:

啟動Nginx,在vlc播放器中以「網路」方式打開媒體,填入http://localhost/live?stream=hks即可。

通用URL:http://example.com[:port]/dir?[srv=index&app=xxx&]stream=xxx。

如果http配置塊里的監聽埠不是80(默認),那麼必須加上:port,如:8080。

如果rtmp配置塊里有多個server配置塊,如果想要播放的流的配置是在第二個server配置塊中,那麼必須加上srv=1(從0開始計數)。

如果rtmp配置塊中的某個server塊下有多個application配置塊,如果想要播放的流的APP(RTMP中的一個概念)的名稱是test,那麼必須指明app=test,stream對應的是推流的名稱。

推流的通用命令:ffmpeg -i -re xxx.mp4(或者與RTMP兼容的媒體文件)-vcodec copy -acodec copy -f flv rtmp://example.com[:port]/app/stream,後面也可以像HTTP的URL那樣加參數,目前沒仔細研究過,如果想推流到myapp,那麼app換成myapp,stream隨便取名,播放的時候跟它保持一致就可以。

其他的見nginx-rtmp-module的wiki(https://github.com/arut/nginx-rtmp-module/wiki/Directives)說明。

測試效果圖如下:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 nginx 的精彩文章:

nginx如何實現高性能和可擴展性

TAG:nginx |