從零開始使用nginx-rtmp-module搭建RTMP普通推流或拉流和權限驗證推流或拉流的簡單方法

整體步驟如下:
1. 安裝nginx-rtmp-module鞍历。
2. 修改nginx配置肄渗,普通推拉流設置和權限驗證推拉流設置
3. 使用ffmpeg測試推流擎颖,使用vlc測試拉流


整個過程中,我會把遇到的坑都重點說一下偎肃。因為我自己是從零搭建起科吭,遇到了不少坑昏滴。


第一步,安裝nginx-rtmp-module
這里我主要講macos環(huán)境配置对人,其他Linux和Windows環(huán)境大家各自百度谣殊。在macos遇到的坑,可以借鑒下牺弄。
建議全程開啟VPN安裝姻几。否則安裝會非常慢
1.先安裝brew,如果本機已安裝,則跳過本步驟.安裝教程詳見官網https://brew.sh/蛇捌。
2.使用brew安裝nginx-rtmp-module抚恒,過程如下:
開始我百度的是舊版安裝nginx教程,是使用brew在命令行敲入 brew install nginx, 但是這樣是不對的络拌。又找了較新的安裝教程俭驮,安裝完發(fā)現不兼容。需要把剛才錯誤的方式安裝的nginx給卸載春贸。當然最好還是第一遍直接安裝對了混萝。如果本機之前使用老的安裝方式,請先卸載祥诽。
打開終端譬圣,挨個輸入如下命令:
命令1:brew tap denji/nginx
命令2:brew install nginx-full --with-rtmp-module


第二步,修改nginx配置雄坪。實現簡單推流或拉流的驗證
macos系統(tǒng)nginx配置路徑為:/usr/local/etc/nginx/nginx.conf
建議定位到這個路徑,直接使用vscode打開編輯屯蹦,或者其他文本編輯軟件维哈,當然也可以使用vi直接在命令行里面編輯。
1.普通推拉流配置如下:
在配置文件最后面登澜,注意不要放在在http的括號里阔挠,黏貼如下配置:

rtmp {
    server {
        listen 1935;
        
        application live {
            live on;
        }
    }
}

2.權限驗證推拉流配置如下:
nginx-rtmp-module默認不限制推流權限、播放權限脑蠕。如果想加入權限驗證购撼,有很多種方法。
下面先說一個最簡單的配置方法谴仙。
主要是利用on_play或on_publish跳轉到當前配置的一個“l(fā)ocation”迂求,在這里進行驗證。關鍵點在于rtmp application節(jié)點下面要配置“notify_method get;”為什么呢晃跺?因為跳轉的時候揩局,默認以POST方式傳輸參數,修改成GET方式掀虎,nginx配置里就可以輕松處理了凌盯。(當然nginx通過配置文件也可以處理post,只是復雜一些)烹玉。
在配置文件最后面驰怎,注意不要放在在http的括號里,復制粘貼如下配置:

rtmp {
    server {
        listen 1935;
        notify_method get;

        application live {
            live on;
            on_play http://127.0.0.1:8082/auth; #拉流驗證
            on_publish http://127.0.0.1:8082/auth; #推流驗證
        }
    }
}

注意此處我是遇到了坑6颉县忌!
就是127.0.0.1不能寫成localhost, 否則使用ffmpeg推流會失敗!我各種百度都沒找到為啥芹枷,最后就隨便試了試改成ip了就好用了P聘怼!鸳慈!

另外還要在http的括號范圍內的最后下面饱溢,添加配置如下:

    server {
        listen 8082;
        location /auth {
            if ($arg_pwd = "123456") {
                return 200;
            }
            return 404;
        }
    }

對于nginx也不了解的人,比如我自己走芋,一開始我都不知道其中arg_pwd的用法是啥绩郎,百度了才知道。
$arg_參數名翁逞,下劃線后面的參數名是表示url問號后面的參數名字肋杖。這么寫就能直接解析拿到參數,從而進行判斷挖函。
此處原理就是使用nginx相應處理on_play和on_publish配置的方法状植,只要處理成功返回2xx系列的狀態(tài)即可。一般返回200即可怨喘。如果驗證錯誤則直接返回404錯誤碼即可津畸。另外這是直接完全通過nginx處理,也可以指向別的服務器接口地址必怜,只要能夠正確驗證處理即可肉拓。


另外還有其他的兩種方法如下:
方法一:修改源碼如:
如何給 nginx rtmp 服務加入鑒權機制
http://blog.csdn.net/cui918/article/details/53540397

方法二:修改nginx配置如:
nginx-rtmp-module 權限控制
http://blog.csdn.net/iam_shuaidaile/article/details/50599943


配置好之后,可以啟動nginx看一下梳庆,啟動nginx也可能會遇到錯誤暖途,一般錯誤如下:
invalid number of arguments
nginx出現以下的錯誤,基本上錯誤的原因就是當前行少了后面的分號導致膏执,一定要寫分號驻售。
啟動nginx命令很簡單,直接在終端輸入:nginx 然后回車就好了胧后。
另外如果修改了配置表芋浮,重啟nginx命令如下:nginx -s reload
可以用瀏覽器輸入地址:http://localhost:8080/ 測試一下nginx是否啟動。
查看rtmp端口是否啟動壳快,終端輸入命令:netstat -an |grep 1935


第三步纸巷,配置FFmpeg實現推流。然后使用VLC播放器拉流連接眶痰。
1.安裝ffmpeg
直接在終端輸入命令:brew install ffmpeg
注意ffmpeg安裝依賴包不少瘤旨,如果設置了brew國內鏡像,不用開vpn也能比較快竖伯,沒有設置存哲,還是建議開啟vpn安裝因宇,能節(jié)約不少時間。

首先是ffmpeg普通推流命令祟偷,需要配置nginx為普通推拉流配置, 更改配置后請重啟nginx
推流一次命令:
ffmpeg -re -i /Users/wz/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/test
其中-i后面跟著的是要推流的視頻資源路徑察滑,flv后面跟著是nginx搭建的rtmp推流地址。地址最后的test名字隨便寫就好修肠。live就是剛才配置nginx的application后面的名字贺辰,注意這個命令是只把指定視頻資源推流一次。

循環(huán)推流命令:
ffmpeg -re -stream_loop -1 -i /Users/wz/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/test
相比推流一次嵌施,其實就是多了一個參數-stream_loop -1饲化,-1表示循環(huán)無限次,當然你可以指定循環(huán)自幾次吗伤,比如設置2吃靠,就是循環(huán)兩次。


其次是ffmpeg權限驗證推流命令足淆,需要nginx為權限驗證配置巢块,更改配置后請重啟nginx。
推流一次命令:
ffmpeg -re -i /Users/wz/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/test?pwd=123456
循環(huán)推流命令:
ffmpeg -re -stream_loop -1 -i /Users/wz/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/test?pwd=123456
可以看到rtmp連接相比普通推流只增加問號后的一些參數缸浦,和普通http連接參數一樣夕冲。多個參數用&隔開就好。
不過這里注意有個坑是:加上了問號裂逐,發(fā)現執(zhí)行命令報錯了!泣栈!出現了:"zsh: no matches found"的報錯卜高,遇到該錯誤我也是各種百度,最后找到解決方案如下:
1.找到~/.zshrc文件南片,在其中中加入:setopt no_nomatch
2.執(zhí)行 source ~/.zshrc

完全關閉終端掺涛,再打開重新輸入帶權限驗證的推流命令就可以成功了!
在輸入ffmpeg命令遇到上面提到的一個坑是nginx配置里疼进,on_play或on_publish配置地址的時候不能寫localhost薪缆,要寫成127.0.0.1的ip。否則會報錯如下:
RTMP_ReadPacket, failed to read RTMP packet header rtmp://localhost:1935/live/test?pwd=123456: Unknown error occurred
另外沒有嘗試過伞广,域名會不會有問題拣帽。如果有問題,建議直接換成對應域名的ip地址嚼锄。

到此為止搭建nginx-rtmp服務和使用ffmpeg推流已經完成减拭。
接下來可以使用VLC播放器播放一下rtmp的流地址了。如果電腦有其他播放器也可以使用別的播放器区丑。
VLC的官網地址是:https://www.videolan.org/
加了權限驗證的鏈接可以嘗試下不加密碼參數拧粪,應該會提示播放失敗修陡。
普通拉流地址:rtmp://127.0.0.1:1935/live/test
權限驗證拉流地址: rtmp://127.0.0.1:1935/live/test?pwd=123456

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市可霎,隨后出現的幾起案子魄鸦,更是在濱河造成了極大的恐慌,老刑警劉巖癣朗,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拾因,死亡現場離奇詭異,居然都是意外死亡斯棒,警方通過查閱死者的電腦和手機盾致,發(fā)現死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荣暮,“玉大人庭惜,你說我怎么就攤上這事∷胨郑” “怎么了护赊?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長砾跃。 經常有香客問我骏啰,道長,這世上最難降的妖魔是什么抽高? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任判耕,我火速辦了婚禮,結果婚禮上翘骂,老公的妹妹穿的比我還像新娘壁熄。我一直安慰自己,他們只是感情好碳竟,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布草丧。 她就那樣靜靜地躺著,像睡著了一般莹桅。 火紅的嫁衣襯著肌膚如雪昌执。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天诈泼,我揣著相機與錄音懂拾,去河邊找鬼。 笑死厂汗,一個胖子當著我的面吹牛委粉,可吹牛的內容都是我干的。 我是一名探鬼主播娶桦,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼栏渺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棋电?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤知牌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斤程,有當地人在樹林里發(fā)現了一具尸體角寸,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年忿墅,在試婚紗的時候發(fā)現自己被綠了扁藕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡疚脐,死狀恐怖亿柑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情棍弄,我是刑警寧澤望薄,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站呼畸,受9級特大地震影響痕支,放射性物質發(fā)生泄漏。R本人自食惡果不足惜蛮原,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一卧须、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧儒陨,春花似錦故慈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽干签。三九已至津辩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間容劳,已是汗流浹背喘沿。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竭贩,地道東北人蚜印。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像留量,于是被迫代替她去往敵國和親窄赋。 傳聞我的和親對象是個殘疾皇子哟冬,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容