背景故事是一位希望具有满足以下要求的24/7播放实时视频流的客户:
因此,基本上,他们希望确保只要有人连接到流,某事总是在播放。
我所做的是:
[实时直播]
[实时直播]
[随机直播]
然后我有一个中央live.m3u8,它按顺序执行以下操作:
我的数据库表是基于以下事实:创建列表时,必须为第一视频 选择固定的开始时间。列表将始终是连续的,并围绕该列表创建一个连续的24小时循环。例如,如果他们从1500小时开始选择10个40分钟的视频,那么,那么我将在1500-1900小时窗口(0300-0700-1100-1500-1900-2300)周围创建400分钟的区块。
这是通过在数据库中记录每个段的开始时间来完成的,所以我的表如下所示:
id order extinf start file
112 100 10.000000 15:00:00 112.ts
113 101 10.000000 15:00:10 113.ts
114 102 10.000000 15:00:20 114.ts
300 103 12.000000 15:00:30 300.ts
301 104 12.000000 15:00:42 301.ts
302 105 12.000000 15:00:54 302.ts
303 106 12.000000 15:01:06 303.ts
这样,当用户要求“实时”流时,我的查询如下:
SELECT
m3u8.order, m3u8.extinf, m3u8.file, m3u8.start
FROM
video_hls
WHERE
m3u8.start >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MINUTE),'%H:%i:%s') AND m3u8.start <= DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 3 MINUTE),'%H:%i:%s')
ORDER BY
m3u8.order ASC
选择前一分钟和后三分钟的技巧,再加上#EXT-X-DISCONTINUITY标签的使用,将使玩家认为自己已经加入了正在进行的直播并对其进行了对待。 / p>
现在的问题是,每当有人在23:59:59-00:00:00边界上观看时,他们都会流失并必须重新连接,然后一切都很好。
“开始”列是普通时间,我的SELECT语句仅处理H:i:s,因此,没有什么-我可以看到-可以实现此目标,所提供的m3u8文件看起来非常好(它可以正常工作对于一天中其他所有86398秒),它也不包含任何日期信息,只是一个接一个的普通文件。
对于这种行为,我似乎根本找不到任何原因...(可悲的是,由于它是订阅服务,因此受到严格的监视和保护,我无法共享URL。)