基于Nginx,搭建HLS(HTTP Live Streaming)server,点播&直播
2016-08-25 10:24
489 查看
Ubuntu中Nginx的安装与配置
放入index_SIM1.m3u8,以及m3u8文件夹
访问ip/index_SIM1.m3u8 即可
tips:自适应码率
这个功能需要server和local player配合,server放入多套码率的切片,本地访问点播地址会下载一级m3u8目录,包含了二级多个码率的m3u8目录,这样在本地player侦测下载速度有变化时,自动选择合适的码率地址去取切片。
一级目录样本:
二级目录样本:
HLS系统快速部署指南
备注:nginx配合ffmpeg做流媒体服务器的原理是: nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流. HLS也是差不多的原理,只是最终客户端是通过HTTP协议来访问的,但是ffmpeg推送流仍然是rtmp的.
linux限速大法
// push hls 流
HLS(HTTP Live Streaming)协议之m3u8文件生成方式
保存HLS直播中的TS流分片 <–抓取ts
HLS科普1 HLS和M3U8简介
apple测试地址:
http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
点播(VOD)
/usr/local/nginx/html放入index_SIM1.m3u8,以及m3u8文件夹
访问ip/index_SIM1.m3u8 即可
tips:自适应码率
这个功能需要server和local player配合,server放入多套码率的切片,本地访问点播地址会下载一级m3u8目录,包含了二级多个码率的m3u8目录,这样在本地player侦测下载速度有变化时,自动选择合适的码率地址去取切片。
一级目录样本:
#EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=120320,RESOLUTION=176x144,CODECS="avc1.42e00a,mp4a.40.5" m3u8/01.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=294784,RESOLUTION=320x180,CODECS="avc1.42e00d,mp4a.40.5" m3u8/02.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=511360,RESOLUTION=400x224,CODECS="avc1.4d4015,mp4a.40.5" m3u8/03.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=809152,RESOLUTION=480x270,CODECS="avc1.4d4015,mp4a.40.5" m3u8/04.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1343072,RESOLUTION=640x360,CODECS="avc1.4d401e,mp4a.40.5" m3u8/05.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=55648,CODECS="mp4a.40.5" m3u8/00.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2266528,RESOLUTION=1024x576,CODECS="avc1.4d401f,mp4a.40.5" m3u8/06.m3u8
二级目录样本:
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:9 #EXT-X-MEDIA-SEQUENCE:408942 #EXT-X-KEY:METHOD=AES-128,URI="13054902120.key" #EXTINF:8, 01/20140804T125708-01-408942.ts #EXT-X-KEY:METHOD=AES-128,URI="13054902180.key" #EXTINF:8, 01/20140804T125708-01-408943.ts #EXTINF:8, 01/20140804T125708-01-408944.ts #EXTINF:8, 01/20140804T125708-01-408945.ts #EXTINF:8, 01/20140804T125708-01-408946.ts #EXTINF:8, 01/20140804T125708-01-408947.ts #EXTINF:8, 01/20140804T125708-01-408948.ts #EXTINF:8, 01/20140804T125708-01-408949.ts #EXT-X-KEY:METHOD=AES-128,URI="13054902240.key" #EXTINF:8, 01/20140804T125708-01-408950.ts ... #EXTINF:8, 01/20140804T125708-01-409033.ts #EXT-X-ENDLIST
直播(LIVE)
网上很多,例如下面这个,还有一键安装脚本:HLS系统快速部署指南
备注:nginx配合ffmpeg做流媒体服务器的原理是: nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流. HLS也是差不多的原理,只是最终客户端是通过HTTP协议来访问的,但是ffmpeg推送流仍然是rtmp的.
linux限速大法
// 安装wondershaper sudo apt-get install wondershaper // 限速 sudo wondershaper eth0 250 250 // 取消限速 sudo wondershaper clear eth0 // iptables也可在android使用 iptables -L INPUT --line-numbers // 列出規則 iptables -D INPUT 1 // 刪除指定行的規則 iptables -I INPUT 1 -m state --state ESTABLISHED -p 6 -m length --length 30:10000 -m hashlimit --hashlimit-name BRADYBOUND --hashlimit-above 60/s -j DROP >/dev/null && echo BRADYBOUND
// push hls 流
#!/bin/bash videoname="TheTestVideo.mp4" #176x144 echo "/opt/ffmpeg/bin/ffmpeg -re -i TheBestOfNanking.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 176x144 -q 10 rtmp://192.168.1.100:1935/hls/01" /opt/ffmpeg/bin/ffmpeg -re -i $videoname -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 176x144 -q 10 rtmp://192.168.1.100:1935/hls/01 & #320x180 echo "/opt/ffmpeg/bin/ffmpeg -re -i TheBestOfNanking.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 320x180 -q 10 rtmp://192.168.1.100:1935/hls/02" /opt/ffmpeg/bin/ffmpeg -re -i $videoname -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 320x180 -q 10 rtmp://192.168.1.100:1935/hls/02 & #400x224 echo "/opt/ffmpeg/bin/ffmpeg -re -i TheBestOfNanking.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 400x224 -q 10 rtmp://192.168.1.100:1935/hls/03" /opt/ffmpeg/bin/ffmpeg -re -i $videoname -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 400x224 -q 10 rtmp://192.168.1.100:1935/hls/03 & #480x270 echo "/opt/ffmpeg/bin/ffmpeg -re -i TheBestOfNanking.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 480x270 -q 10 rtmp://192.168.1.100:1935/hls/04" /opt/ffmpeg/bin/ffmpeg -re -i $videoname -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 480x270 -q 10 rtmp://192.168.1.100:1935/hls/04 & #640x360 echo "/opt/ffmpeg/bin/ffmpeg -re -i TheBestOfNanking.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 640x360 -q 10 rtmp://192.168.1.100:1935/hls/05" /opt/ffmpeg/bin/ffmpeg -re -i $videoname -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 640x360 -q 10 rtmp://192.168.1.100:1935/hls/05 & #1024x576 echo "/opt/ffmpeg/bin/ffmpeg -re -i TheBestOfNanking.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1024x576 -q 10 rtmp://192.168.1.100:1935/hls/06" /opt/ffmpeg/bin/ffmpeg -re -i $videoname -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1024x576 -q 10 rtmp://192.168.1.100:1935/hls/06 &
参考
基于nginx的HLS简单服务器搭建HLS(HTTP Live Streaming)协议之m3u8文件生成方式
保存HLS直播中的TS流分片 <–抓取ts
HLS科普1 HLS和M3U8简介
apple测试地址:
http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8
相关文章推荐
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 如何使用iOS实现视频的直播、点播、缓存?-HTTP Live Streaming (HLS)
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- HTTP Live Streaming (HLS) 视频直播技术
- HTTP Live Streaming (HLS) 视频直播技术
- 【流媒体】【学习笔记】HTTP Live Streaming (HLS) 视频直播技术