手把手配置HLS流媒体服务器

阅读本文前 , 务必先阅读前面这篇文章 , 手把手搭建流媒体服务器详细步骤 。 因为本篇文章是在这篇文章的基础上搭建 。
1.HLS简述
HLS是Apple 提出的?种基于 HTTP 的协议 , HLS(HTTP Live Streaming)?于解决实时?视频流的传输 。 尤其是在ios移动端 , 由于 iOS /H5 不?持 flash , 使得 HLS 成了ios移动端实时视频流传输的?选 。 HLS经常?在直播领域 , ?些国内的直播云通常? HLS 拉流(将视频流从服务器拉到客户端) 。 HLS最大的缺点就是延迟严重 , 延迟通常在10-30s 之间 。
英文本协议地址如下 , 可以详细阅读 。
HLS英文版协议:
协议有如下部分:
手把手配置HLS流媒体服务器文章插图
苹果开发者官网:
手把手配置HLS流媒体服务器文章插图
2.HLS数据流整体框架
HLS数据流向的整体框架如下图所示 。 其主要分为以下几步:
(1)推流端把采集 , 编码 , 封装的数据数据发送到服务端 。
(2)Stream segmenter是指把码流分片 。 对直播或点播流进行分片 , 分片的数量是固定 , 每个分片的时长也是固定 , 如5个分片 , 每个分片为5s , 分片时间没有办法精确到毫秒 , 因为分片一般默认都是从I帧开始 , 保证一个完整的GOP 。 如果分配数量为5 , 那么就是最多缓存5个分片 , 只会保存最新分片 , 过时的分片就会删除 。 如有当前有1\2\3\4\5个分片 。 当第6个分片加进来 , 则第一个分片就会被删除 。
手把手配置HLS流媒体服务器文章插图
(3)index file就是存储目前的分片信息 , 如把分片1 , 分片2写入index file 。 如下图:
手把手配置HLS流媒体服务器文章插图
(4)推送给web server , 然后存储ts文件 。
(5)通过HTTP协议读取服务器文件 , 先读取index file , 然后解析index file , 最后读取相应的ts文件 。 服务器就把ts文件送出去 , 然后 播放 。
(6)因为index file是保存分片信息 , 分片是实时更新 , 所以index file也是持续更新 。 只要有新的ts文件生成那就会更新 。 每次index file的ts文件读取完毕 , 就会再次读取index file文件 , 获取新的index file , 继续读取最新的ts文件 , 如此往复 。
3.搭建HLS流媒体服务器
【手把手配置HLS流媒体服务器】先参考前面这篇文章:手把手搭建流媒体服务器详细步骤
下面前面2步 , 在这篇文章手把手搭建流媒体服务器详细步骤有详细说明 。
(1)srs官?:
码云的源速度快:
github的源速度慢:.git
选择当前最新的release版本3.0
第?步 , 获取SRS 。 详细参考GIT获取代码:/wiki/v1_CN_Git
git clone cd srs.oschinacd trunk第?步 , 编译SRS 。 详细参考Build:/wiki/v3_CN_Build
./configure max_connections1000;srs_log_tankfile;srs_log_file./objs/srs.log;http_api {enabledon;listen1985;}http_server {enabledon;listen8080;#改为8081应该也可以dir./objs/nginx/html;}stats {network0;disksda sdb xvda xvdb;}vhost __defaultVhost__ {#hls antoniohls{enabled on;hls_path ./objs/nginx/html;#生成ts文件路经hls_fragment 5; # 分?时? 秒hls_window 25; # 最?缓存的时?秒 , 也决定了最大延迟时间}#http-flv for antoniohttp_remux{enabled on;mount [vhost]/[app]/[stream].flv;hstrs on;}}(4)启动SRS 。
-c表示是读取配置文件 。
在这个路经执行: