searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

直播中的延播实现

2023-05-10 09:53:45
13
0

延播需求

直播一般要求实时性,但有些需要审核的场景,则需要延迟播放,留出充足的审核时间。

因而在直播功能中,需要人为引入延迟。

直播协议分析

直播常用的协议有三种,RTMP(专属推拉流协议),FLV(基于http长链接),M3U8(基于http短连接)。

其中RTMP和FLV都是流式协议,如果要增加延迟,则需要在推流或者拉流时引入一个buffer负责缓存数据。

当缓存数据足够延迟的时间时再将数据吐给用户。

对于M3U8协议来说,用户首先拉到的是ts列表,然后再选取列表中的ts文件进行下载播放,通过持续刷新列表来实现直播。

如果要增加延迟,只需要返回较旧的ts列表就可以实现。

ts片已经在服务器上实现了数据存储,因而无需对数据部分再做更多的处理。

实现方案

1 在直播基础上做m3u8的录制

直播列表通常只返回最近的几个ts片,在做延播时,需要把最大延播时间的片名都记录下来,直到超过时间再做删除。对服务器上的ts文件,也要适用同样的删除策略。

2 拉取延播流时,回放录制的数据

到达延播时间时,才允许响应延播数据,否则返回404。延播数据就从录制的ts列表中返回。对ts文件的响应,则与响应直播文件相同。

3 其它协议通过转推实现

如果有其它协议的延播流需求,则通过转码服务器,拉取m3u8的延播流,转推到直播服务器,就可以实现rtmp和flv协议的延播流。

方案特点

优点

  1. 改造的工作量最小。
  2. 对断流重推,尤其是推流到不同机器时的兼容性最好。

缺点

  1. 受限于切片时长的限制,延播的时间不能精确控制。

 

0条评论
0 / 1000
张****东
7文章数
0粉丝数
张****东
7 文章 | 0 粉丝
张****东
7文章数
0粉丝数
张****东
7 文章 | 0 粉丝
原创

直播中的延播实现

2023-05-10 09:53:45
13
0

延播需求

直播一般要求实时性,但有些需要审核的场景,则需要延迟播放,留出充足的审核时间。

因而在直播功能中,需要人为引入延迟。

直播协议分析

直播常用的协议有三种,RTMP(专属推拉流协议),FLV(基于http长链接),M3U8(基于http短连接)。

其中RTMP和FLV都是流式协议,如果要增加延迟,则需要在推流或者拉流时引入一个buffer负责缓存数据。

当缓存数据足够延迟的时间时再将数据吐给用户。

对于M3U8协议来说,用户首先拉到的是ts列表,然后再选取列表中的ts文件进行下载播放,通过持续刷新列表来实现直播。

如果要增加延迟,只需要返回较旧的ts列表就可以实现。

ts片已经在服务器上实现了数据存储,因而无需对数据部分再做更多的处理。

实现方案

1 在直播基础上做m3u8的录制

直播列表通常只返回最近的几个ts片,在做延播时,需要把最大延播时间的片名都记录下来,直到超过时间再做删除。对服务器上的ts文件,也要适用同样的删除策略。

2 拉取延播流时,回放录制的数据

到达延播时间时,才允许响应延播数据,否则返回404。延播数据就从录制的ts列表中返回。对ts文件的响应,则与响应直播文件相同。

3 其它协议通过转推实现

如果有其它协议的延播流需求,则通过转码服务器,拉取m3u8的延播流,转推到直播服务器,就可以实现rtmp和flv协议的延播流。

方案特点

优点

  1. 改造的工作量最小。
  2. 对断流重推,尤其是推流到不同机器时的兼容性最好。

缺点

  1. 受限于切片时长的限制,延播的时间不能精确控制。

 

文章来自个人专栏
直播
7 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0