概要:本文Richy為大家分享的內(nèi)容,即首先通過強大的Nginx闯第,且結(jié)合nginx-rtmp-module模塊來在Mac上搭建流媒體服務(wù)器翎苫。然后姿鸿,通過ffmpeg對本地視頻文件以rtmp流形式“推流”至Nginx服務(wù)器上。最終站削,通過播放器播放視頻(rtmp流/hls流)坊萝。
了解Nginx
簡言之,Nginx本身是一個非常出色的HTTP服務(wù)器许起,具有占用內(nèi)存少十偶,高并發(fā)的特點。
了解rtmp
簡言之园细,RTMP是基于TCP的實時消息傳送協(xié)議惦积,默認(rèn)端口號為1935。
正文來襲...
1猛频、安裝nginx狮崩,并帶有rtmp-module直播流模塊
首先,clone Nginx至本地
brew tap homebrew/nginx
然后執(zhí)行安裝:
首先確保Homebrew已安裝鹿寻,未安裝的童鞋可參見博文《Homebrew使Mac更加完美》睦柴。
?上圖重要內(nèi)容說明:
a. 包內(nèi)容總大小不足3M,故大家無需擔(dān)心下載安裝問題毡熏,耐心等待坦敌。
b. 牢記配置文件(nginx.conf)的路徑,之后要對其進行編輯修改痢法。
c. 了解nginx服務(wù)常用命令狱窘,牢記重啟nginx服務(wù)命令(nginx -s reload)。
d. 如何啟用nginx服務(wù)财搁?(如上圖蘸炸,提供了兩種方式,解釋很清楚妇拯,區(qū)別不再贅述)
接下來幻馁,Richy補充說下第二種啟用nginx服務(wù)的方式:
$cd /usr/local/Cellar/nginx-full/1.10.1/bin/
大家可以在該路徑下找到“nginx”,直接執(zhí)行 $nginx越锈,即可開啟仗嗦。
驗證nginx開啟狀態(tài)
在瀏覽器中輸入:http://localhost:8080,如下圖甘凭,則開啟成功稀拐。
nginx開啟補充
假定nginx已開啟,如果再次啟用nginx丹弱,則會出現(xiàn)下圖:
2德撬、配置nginx.conf
Nginx服務(wù)器安裝好后铲咨,服務(wù)器修改配置文件nginx.conf(默認(rèn)端口號8080),以支持RTMP和HLS協(xié)議蜓洪,那么首要任務(wù)依然是找到該文件(nginx.conf)了纤勒,如果各位老板忘記了該路徑,亦可以通過下圖再次查看:
如何配置nginx.conf
老板們可參考安裝好的 rtmp-nginx-module目錄下的README.md來配置隆檀,Richy本機的路徑:/usr/local/Cellar/rtmp-nginx-module/1.1.7.10/share/rtmp-nginx-module/README.md
編輯nginx.conf
老板們可通過Vim或者常用編輯器(Sublime)摇天,進行查看、修改恐仑。
Richy對nginx.conf的配置泉坐,供大家參考:
2.1 在整個http之后添加 rtmp的配置內(nèi)容,如下:
2.2 在http中添加 hls的配置裳仆,如下:
注意:修改nginx.conf之后腕让,需重啟nginx服務(wù),才會生效:$nginx -s reload歧斟。
再次在瀏覽器中測試:http://localhost:8080纯丸,以確認(rèn)nginx開啟的狀態(tài)。
3构捡、ffmpeg推流至nginx:
FFmpeg再次登場液南,通過其對本地視頻文件“推流”到已搭建好的Nginx流媒體服務(wù)器上。由于在上一步驟中勾徽,已經(jīng)對nginx增加了RTMP和HLS協(xié)議的支持滑凉,故而借助ffmpeg推流成功后,在nginx服務(wù)器上可得到兩種視頻流:RTMP流喘帚、HLS流畅姊。需要注意的是,不管是哪種流吹由,在推流過程中是RTMP流形式體現(xiàn)的若未,如下圖:
RTMP流,推流至rtmplive:
ffmpeg -re -i /Users/richyleo/Downloads/warcraft.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/rtmplive/test
HLS流倾鲫,推流至hls:
ffmpeg -re -i /Users/richyleo/Downloads/warcraft.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/hls/test
補充:
其中粗合,HLS流表現(xiàn)較明顯,在nginx的臨時目錄下乌昔,直觀的可看到m3u8索引文件和N多個.ts文件隙疚。m3u8列表會實時更新,且會動態(tài)更改當(dāng)前播放索引切片(.ts)磕道。這種實時更新的機制供屉,不會使得.ts文件長時間存在于Nginx服務(wù)器上,且當(dāng)推流結(jié)束之后,該目錄下的內(nèi)容會被全部清除伶丐,這樣無形中減緩了nginx服務(wù)器的壓力悼做。另外,也闡釋了HLS這種流媒體播放相較RTMP延時較高的原因哗魂。
4肛走、播放rtmp流或hls流
最簡單的測試,可通過VLC播放器录别,建立網(wǎng)絡(luò)任務(wù)實現(xiàn)播放羹与。所謂的播放,就是從Nginx服務(wù)器取到視頻流并播放庶灿,也稱之為“拉流”。需注意的是吃衅,HLS是基于HTTP的流媒體傳輸協(xié)議往踢,端口為8080;而RTMP本身即為實時消息傳輸協(xié)議徘层,端口為1935峻呕。由此決定了客戶端訪問直播流的方式,見下圖:
拉流地址:
RTMP流:rtmp://localhost:1935/rtmplive/test
HLS流:http://localhost:8080/hls/test.m3u8
實現(xiàn)效果:
最后
歡迎大家關(guān)注我們團隊微信公眾號趣效,以及博客地址瘦癌,在這里我們會實時與大家分享優(yōu)質(zhì)的技術(shù)文章。大家也可以加入我們的技術(shù)交流群(QQ群:343640780)跷敬,共同探討讯私,共同進步。
團隊博客地址:http://www.52learn.wang
團隊GitHub:https://github.com/wu2LearnTeam
參考鏈接:
a. http://blog.csdn.net/redstarofsleep/article/details/45092147