最近在測試ijk播放器的解碼性能等功能,所以搭建了nginx模擬直播推流,在這里扳埂,主要講解rtmp和hls推流方式的環(huán)境搭建蛤肌。筆者采用的是Mac系統(tǒng)壁却,不過Windows也大同小異,就不再單獨篇幅進行介紹了裸准。
一展东、安裝Homebrew
Homebrew是mac系統(tǒng)下的一個軟件包的管理器,通過使用該工具,能很方便的去安裝以及卸載軟件。在命令行中執(zhí)行如下命令即可安裝。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
二缰揪、安裝Nginx
Nginx是一個異步框架的 Web服務(wù)器砸王,也可以用作反向代理推盛,負載平衡器和 HTTP緩存。
按第一步驟安裝完成Homebrew后谦铃,可在命令行中使用brew安裝nginx耘成。文中使用tap命令添加了第三方的github項目。非Mac系統(tǒng)的童鞋可以從官網(wǎng)下載安裝包進行安裝驹闰。
brew tap denji/nginx
brew install nginx-full --with-rtmp-module
筆者在此處安裝時遇到一個安裝過程中出現(xiàn)一個小問題,報了這樣一個錯誤:
Error: Could not symlink share/man/man8/nginx.8 /usr/local/share/man/man8 is not writable.
上面告訴我們/usr/local/share/man/man8這個目錄對當前用戶無寫權(quán)限凿跳,因為我們安裝包時經(jīng)常會對兩個目錄做操作/usr/local/share、/usr/local/opt疮方,所以我們直接對這2個目錄授權(quán)控嗜,具體命令如下:
sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt
執(zhí)行了該命令后,再重新執(zhí)行一下brew link nginx
就可以了骡显。至此疆栏,已經(jīng)安裝完成nginx和rtmp模塊。
接下來我們來看看如何查看nginx的一些信息惫谤,在命令行中執(zhí)行brew info nginx-full
壁顶。
可以看到nginx的配置文件在/usr/local/etc/nginx/nginx.conf,安裝位置在/usr/local/opt/nginx-full/bin/nginx溜歪。
最后若专,在命令行中執(zhí)行nginx
啟動nginx服務(wù)。需要注意的是蝴猪,執(zhí)行了該命令后调衰,并沒有任何提示輸出,需要在瀏覽器下輸入http://localhost:8080/
進行訪問自阱,正常的話會顯示welcome歡迎頁面嚎莉。
三、配置nginx.conf
進入到配置文件所在地址/usr/local/etc/nginx/沛豌,然后執(zhí)行open nginx.conf -a atom
使用atom打開配置文件趋箩,沒有安裝atom的童鞋可以使用其他文本編輯軟件。
在http{...}server節(jié)點中加派,需要增加hls的配置叫确,詳見標注,此處是為了讓客戶端可以以http的形式來拉取hls的視頻流芍锦。
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#hls配置開始
location /hls{
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root html;
add_header Cache-Control no-cache;
}
#hls配置結(jié)束
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
在http{…}節(jié)點后竹勉,添加一個新的rtmp節(jié)點,具體代碼如下:
rtmp{
server{
listen 1935;
chunk_size 4000;
#RTMP 直播流配置
application rtmplive{
live on;
max_connections 1024;
}
#hls直播流配置
application hls{
live on;
hls on;
hls_path /usr/local/var/www/hls;
hls_fragment 5s;
}
}
}
listen是監(jiān)聽的端口號醉旦,chunk_size是流整合的最大的塊大小饶米,默認值為 4096桨啃,這個值設(shè)置的越大 CPU 負載就越小车胡,值不能低于128檬输。live on為開啟實時直播,max_connections為最大連接數(shù)匈棘。hls_path是ts文件的存放位置丧慈,hls_fragment為分片包含5秒的視頻內(nèi)容。
文件修改保存后主卫,執(zhí)行nginx -s reload
重新加載配置逃默。
四、通過FFmpeg推流
還未安裝ffmpeg的童鞋需要在命令行執(zhí)行安裝命令brew install ffmpeg
簇搅。
1.RTMP推流
推流方式比較簡單完域,只需要在命令行中輸入:
ffmpeg -re -i /Study/Movie/test.ts -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/rtmp
這個命令的大體意思是使用FFmpeg往后面的那個地址推送視頻流信息。需要注意的是 -i 后面是視頻的絕對路徑瘩将,有個比較簡單的輸入辦法就是直接拖拽視頻到命令行中就會顯示完整的視頻路徑吟税。
如果正常運行的話,就會出現(xiàn)如下圖1-1所示內(nèi)容:
此刻我們需要做的是姿现,打開一個能訪問網(wǎng)絡(luò)地址的視頻播放器肠仪。筆者使用的是vlc萬能播放軟件,在打開源中輸入我們的推流地址备典,如下圖1-2所示异旧。
配置正常的話,vlc會進入到網(wǎng)絡(luò)視頻流播放畫面提佣,如圖1-3所示吮蛹。
2.HLS推流
hls推流和rtmp相似,只是后面的推流地址改了一下拌屏。
ffmpeg -re -i /Study/Movie/test.ts -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/hls/movie
我們可以直接在safari瀏覽器中訪問http://localhost:8080/hls/movie.m3u8
匹涮,效果如圖1-4。
至此槐壳,F(xiàn)Fmpeg+Nginx推流功能介紹完畢然低。