搭建nginx流媒体服务器(支持HLS)
環(huán)境搭建
(一)下載源代碼
nginx,地址:http://nginx.org/可以選擇需要的版本下載
nginx_mod_h264_streaming-2.2.7.tar.gz ,支持MP4流,具體的說(shuō)明在下面的這個(gè)網(wǎng)頁(yè)
http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2
m3u8-segmenter: HLS分片工具 ,下載地址,https://github.com/johnf/m3u8-segmenter
ffmpeg:媒體編解碼工具,這里做為HLS 直播流的發(fā)布工具
(二)安裝nginx
tar -zxvf?nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf nginx-1.4.4.tar.gz
cd nginx-1.4.4
./configure ?--prefix=/usr/local/nginx-stream --with-debug ?--with-http_dav_module??--with-http_gzip_static_module ?--with-http_ssl_module ? --with-ipv6?--with-sha1=/usr/include/openssl??--with-md5=/usr/include/openssl ?--add-module=../nginx_mod_h264_streaming-2.2.7??--with-http_flv_module ?--with-http_mp4_module
如果沒(méi)有出現(xiàn)錯(cuò)誤
make
如果出現(xiàn)錯(cuò)誤類似:‘ngx_http_request_t’?沒(méi)有名為?‘zero_in_uri’?的成員,則進(jìn)入?nginx_mod_h264_streaming-2.2.7目錄,進(jìn)入src,修改?ngx_http_streaming_module.c,注釋掉 TODO window32 模塊下的:
if (r->zero_in_uri)?{
return NGX_DECLINED;
}
然后make clean之后重新configure和make
如果出現(xiàn)錯(cuò)誤類似:[objs/addon/src/mp4_reader.o]..進(jìn)入nginx源碼中的obis目錄,修改Makefile,刪除 --wrror
然后重新編譯make
編譯通過(guò)后
sudo make install
(三)安裝?m3u8-segmenter,這個(gè)在下載地址中有安裝步驟。
(四)安裝ffmpeg,在本博客其它日志中有安裝方式。
?
配置
?在server模塊下加入以下內(nèi)容:
?location /hls {
alias /usr/local/media/hls;
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
add_header Cache-Control no-cache;
expires -1;
}
location ~* \.flv$ {
flv;
root /usr/local/media/flv;
}
location ~* \.mp4$ {
mp4;
root /usr/local/media/mp4;
}
然后保存退出,啟動(dòng)nginx服務(wù)器
?
點(diǎn)播flv,mp4視頻
在FLV和MP4的根目錄(usr/local/media/flv,/usr/local/media/mp4)分別放入測(cè)試視頻test.flv和test.mp4
使用ffmpeg中的播放器ffplay測(cè)試,
ffplay http://ip:port/test.flv
ffplay http://ip:port/test.mp4
?
HLS 點(diǎn)播?
使用m3u8-segmenter把視頻切成一系列TS文件同時(shí)生成后綴為m3u8的播放列表,視頻編碼需為H264/AAC 或者H264/MP3。
進(jìn)入??/usr/local/media/hls,放入測(cè)試文件test.ts,然后使用以下命令分割,
m3u8-segmenter -i testvod.ts -d 10 -p test -m testvod.m3u8 -u http://ip:port/hls/
?-i ,輸入文件
-d ,每個(gè)分片的時(shí)長(zhǎng)
-p ,每個(gè)分片的名稱的前綴
-m ,播放列表名稱
-u ,播放列表中url前綴
使用ffplay測(cè)試:
ffplay http://ip:port/hls/test.m3u8
?
HLS直播
使用ffmpeg發(fā)布直播流,這里沒(méi)有用設(shè)備抓取視頻,使用ffmpe 的-re選項(xiàng)來(lái)模擬直播流,re表示依照輸入視頻的幀率
ffmpeg -re -i test.ts -codec copy -hls_time 10 testlive.m3u8
使用ffplay測(cè)試
ffplay http://ip:port/hls/testlive.m3u8
?
注:mp4轉(zhuǎn)ts ,ffmpeg -i test.mp4 -codec copy -vbsf h264_mp4toannexb test.ts
? ? ? ? hls協(xié)議支持自適應(yīng)碼率,可以使用播放列表的嵌套,nginx-rtmp-module對(duì)hls有類似的一些支持
總結(jié)
以上是生活随笔為你收集整理的搭建nginx流媒体服务器(支持HLS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python3 object_detec
- 下一篇: openvino量化自己训练的yolov