標籤:
環境搭建
(一)下載原始碼
nginx,地址:http://nginx.org/可以選擇需要的版本下載
nginx_mod_h264_streaming-2.2.7.tar.gz ,支援MP4流,具體的說明在下面的這個網頁
http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2
m3u8-segmenter: HLS分區工具 ,,https://github.com/johnf/m3u8-segmenter
ffmpeg:媒體編解碼工具,這裡做為HLS 直播流的發布工具
(二)安裝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
如果沒有出現錯誤
make
如果出現錯誤類似:‘ngx_http_request_t’ 沒有名為 ‘zero_in_uri’ 的成員,則進入 nginx_mod_h264_streaming-2.2.7目錄,進入src,修改 ngx_http_streaming_module.c,注釋掉 TODO window32 模組下的:
if (r->zero_in_uri) {
return NGX_DECLINED;
}
然後make clean之後重新configure和make
如果出現錯誤類似:[objs/addon/src/mp4_reader.o]..進入nginx源碼中的obis目錄,修改Makefile,刪除 --wrror
然後重新編譯make
編譯通過後
sudo make install
(三)安裝 m3u8-segmenter,這個在中有安裝步驟。
(四)安裝ffmpeg,在本部落格其它日誌中有安裝方式。
配置
在server模組下加入以下內容:
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;
}
然後儲存退出,啟動nginx伺服器
點播flv,mp4視頻
在FLV和MP4的根目錄(usr/local/media/flv,/usr/local/media/mp4)分別放入測試視頻test.flv和test.mp4
使用ffmpeg中的播放器ffplay測試,
ffplay http://ip:port/test.flv
ffplay http://ip:port/test.mp4
HLS 點播
使用m3u8-segmenter把視頻切成一系列TS檔案同時產生尾碼為m3u8的播放清單,視頻編碼需為H264/AAC 或者H264/MP3。
進入 /usr/local/media/hls,放入測試檔案test.ts,然後使用以下命令分割,
m3u8-segmenter -i testvod.ts -d 10 -p test -m testvod.m3u8 -u http://ip:port/hls/
-i ,輸入檔案
-d ,每個分區的時間長度
-p ,每個分區的名稱的首碼
-m ,播放清單名稱
-u ,播放清單中url首碼
使用ffplay測試:
ffplay http://ip:port/hls/test.m3u8
HLS直播
使用ffmpeg發布直播流,這裡沒有用裝置抓取視頻,使用ffmpe 的-re選項來類比直播流,re表示依照輸入視頻的幀率
ffmpeg -re -i test.ts -codec copy -hls_time 10 testlive.m3u8
使用ffplay測試
ffplay http://ip:port/hls/testlive.m3u8
註:mp4轉ts ,ffmpeg -i test.mp4 -codec copy -vbsf h264_mp4toannexb test.ts
hls協議支援自適應碼率,可以使用播放清單的嵌套,nginx-rtmp-module對hls有類似的一些支援
搭建nginx流媒體伺服器(支援HLS)