使用nginx搭建HTTP FLV流媒体服务器
使用nginx搭建HTTP FLV流媒體服務器
文章目錄
- 使用nginx搭建HTTP FLV流媒體服務器
- 1 HTTP FLV簡介
- 2 HTTP FLV流媒體服務搭建
- 3 結果驗證
1 HTTP FLV簡介
前文已經介紹了RTSP、RTMP、HLS的流媒體協議,還有一種比較常見的流媒體協議HTTP FLV,其兼具RTMP的實時性及HLS的網絡適應性的優點,在很多點直播領域廣泛應用。網上有人總結了HTTP FLV、RTMP、HLS的對比,如下表所示:
| 傳輸方式 | HTTP | TCP | HTTP |
| 視頻封裝格式 | flv | chunk(rtmp header+body(tag body)) | TS |
| 視頻時延 | 低 | 低 | 高 |
| 數據格式 | 連續音視頻流 | 連續音視頻流 | TS切片文件 |
| web無插件播放 | 支持,通過flv.js | 不支持,需要flash插件 | 支持,直接HTML5的video標簽即可播放 |
| 防火墻或代理穿透 | 支持 | 不支持 | 支持 |
其中當前直播流域用的最廣泛的是RTMP和HTTP-FLV,因為其非常低的視頻時延,可做到1s左右,本文介紹HTTP FLV的流媒體服務搭建方式,有關FLV格式文章,參照:https://blog.csdn.net/water1209/article/details/128562747
HTTP-FLV是將流媒體數據先封裝成FLV格式,然后通過HTTP協議傳輸給客戶端,通過HTTP FLV的直播,這里使用了一個HTTP的協議約定,http 的content-length頭字段如果不存在,則客戶端就會一直接收數據,直到HTTP連接斷開為止,其流程很簡單,視頻客戶端發送HTTP請求,不帶content-length頭字段,服務器響應HTTP,并一直發送FLV的數據;客戶端接收響應并一直接收數據直到連接斷開。
有關HLS、RTMP、FLV通過nginx搭建相關協議的流媒體服務器的文章,公眾號壹零倉,發送nginx,查看相關文章
2 HTTP FLV流媒體服務搭建
nginx-http-flv-module是基于nginx-rtmp-module開發的,包含nginx-rtmp-module所有功能,因此不能nginx-rtmp-module同時安裝,其編譯安裝步驟與nginx-rtmp-module類似,如下:
安裝依賴庫:
nginx編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:
yum -y install gcc gcc-c++
nginx的http模塊使用pcre來解析正則表達式,pcre-devel 是使用 pcre 開發的一個二次開發庫,nginx需要依賴這兩個庫,執行如下命令:
yum install -y pcre pcre-devel
nginx使用zlib對http包的內容進行gzip,需要安裝此庫:
yum install -y zlib zlib-devel
nginx可能需要支持HTTPS,最好在系統中安裝好openssl,一般系統自帶,可通過如下命令確認:
openssl version
如果安裝了會顯示版本號,如果提示未安裝,執行如下命令安裝:
yum install -y openssl openssl-devel
nginx編譯和安裝
-
下載nginx:
wget http://nginx.org/download/nginx-1.21.6.tar.gz -
下載nginx模塊HTTP FLV模塊:
wget https://github.com/winshining/nginx-http-flv-module/archive/v1.2.10.tar.gz -
解壓nginx和HTTP FLV模塊:
tar -zxvf nginx-1.21.6.tar.gz
tar -zxvf v1.2.10.tar.gz -
nginx編譯和安裝:
./configure --prefix=/home/wangdenuan/nginx --add-module=../nginx-http-flv-module-1.2.10
這里配置了–prefix,配置安裝路徑,不安裝到默認路徑,以便安裝文件移植和卸載,可直接拷貝次目錄下的文件到其他電腦運行如果目錄不同,啟動時通過-p指定目錄即可。
make&makeinstall -
啟動nginx,驗證是否正確,執行命令(注意安裝目錄下的sbin/nginx):
/home/wangdenuan/nginx/sbin/nginx
打開瀏覽器輸入:http://10.45.12.29/,注意ip為本機ip,顯示如下內容,即表示安裝成功
在/home/wangdenuan/nginx/conf/nginx.conf文件中增加:
其配置與RTMP配置增加了HTTP FLV的URI的配置。
配置完成后,執行:/home/wangdenuan/nginx/sbin/nginx -s reload,使得配置生效。
3 結果驗證
-
在PC機上安裝ffmpeg,具體安裝方式可百度
-
找一個可播放的RTSP地址,通過vlc播放器驗證rtsp地址播放是否正常,這里以rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream為例:
-
打開命令提示行,輸入如下ffmpeg命令,推送rtmp視頻流到rtmp服務器,這里假設rtmp服務器IP為:10.45.12.29
ffmpeg -i rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream -vcodec copy -acodec copy -f flv rtmp://10.45.12.29:1935/live/test
ffmpeg推流命令成功后,出現如下圖所示界面:
-
用vlc播放如下串流:rtmp://10.45.12.29:1935/live/test,驗證是否rtmp拉流成功:
-
用VLC播放如下串流:http://10.45.12.29/hls/test.m3u8,驗證HLS是否能夠播放成功:
-
用VLC播放如下串流:http://10.45.12.29/flv?port=1935&app=live&stream=test,驗證HTTP FLV是否能播放成功
總結
以上是生活随笔為你收集整理的使用nginx搭建HTTP FLV流媒体服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android版】免费JFrench离
- 下一篇: ffplay flv mp4 转_ffm