nginx-rtmp hls录制改造

一 nginx hls现状
1 nginx hls目前仅支持直播业务,流发布的时候创建相关的目录,流结束的时候清除相关的临时目录。
2 nginx hls不会生成hls录制的m3u8文件(带有END标记的)
3 nginx hls没有按流名,时间等信息分子目录。
二 nginx hls录制要求
1 生成录制m3u8
2 按流名,时间等信息管理录制目录
3 提供http json查询接口
三 nginx hls录制实现方案
(1)publish初始化直播和录制目录
(2)更换新的ts切片的时候判断是否跨天,跨天则创建新的录制目录,
ngx_rtmp_hls_open_fragment()->
if(s->last_date != ngx_rtmp_hls_get_date())
{
change_record_dir();
}
直播目录结构为:configroot/streamid/streamid_live.m3u8
录制目录结构为:configroot/streamid/date/time/streamid_record.m3u8
(3) ngx_rtmp_hls_cleanup_dir() 流退出的时候,避免清除录制目录
(4) 录制m3u8列表更新,由于nginx只保存最近的几个切片文件信息,因此录制m3u8要实现成追加的方式,
因此每次更新的时候记录#EXT_END前的偏移位置,从此处开始追加切片信息,并统计total_duration值,更新到
录制m3u8文件中
示例:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:00004
#EXTINF:3.840,
fantasy-20170805173029-0.ts
#EXTINF:3.840,
fantasy-20170805173033-1.ts
#EXTINF:3.840,
fantasy-20170805173037-2.ts
#EXTINF:3.840,
fantasy-20170805173041-3.ts
#EXTINF:3.840,
fantasy-20170805173044-4.ts
#EXTINF:3.393,
fantasy-20170805173048-5.ts
#ZEN-TOTAL-DURATION:22.593
#EXT-X-ENDLIST

四 录制查询接口实现
(1) http://localhost/query_video
返回录制的流列表
(2) http://localhost/query_video?id=xxx
返回录制的流时间表,以天为单位
(3) http://localhost/query_video?id=xxx&day=20170810
返回某一天的录制时刻表
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值