CN111787404B - 直播流播放方法及装置 - Google Patents
直播流播放方法及装置 Download PDFInfo
- Publication number
- CN111787404B CN111787404B CN202010727131.5A CN202010727131A CN111787404B CN 111787404 B CN111787404 B CN 111787404B CN 202010727131 A CN202010727131 A CN 202010727131A CN 111787404 B CN111787404 B CN 111787404B
- Authority
- CN
- China
- Prior art keywords
- slice
- demand
- request
- live stream
- live
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
- H04N21/462—Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47202—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/654—Transmission by server directed to the client
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种直播流播放方法,包括的步骤:拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对所述直播流切片进行重命名,生成点播化切片序列;并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到的点播化切片返回给所述终端,以使所述终端进行播放。解决直播流点播化播放的问题。同时提供了相应的装置、设备和介质。
Description
技术领域
本发明属于直播处理技术领域,具体而言,涉及一种直播流播放方法、播放装置、计算机可读介质及电子设备。
背景技术
基于互联网直播技术的发展,为了适应不同的需求,出现了点播与直播混合的技术。现有技术中,常常存在有直播转点播的产品,直播转点播是将直播流同步录制成点播视频。可支持媒体再处理(转码、切片、内容审核等)、内容再制作(云剪辑、缩略图等)、CDN分发加速等操作。点播视频在终端播放过程中支持快进快退操作。在一些直播中,客户需要对未来观看时间段进行点播,但是现有技术中并未有这样的产品。
发明内容
本发明为了解决上述现有技术的缺点,提出了一种直播点播化的方案,直播点播化是将直播流以点播的形式呈现,即终端获取的是点播流,但用户可享受直播的体验。不支持再处理、再制作,如需对接传统CDN,则需CDN额外定制。点播化流在播放过程中不支持快进到未来时间节点的操作。具体地,第一方面,本发明实施例提出了一种直播流播放方法,包括如下步骤:
S110、定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;
S120、并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;
S130、接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到的点播化切片返回给所述终端,以使所述终端进行播放。
进一步地,所述预生成的点播化切片名称由如下步骤产生:
按照批量预生成切片总时长、切片固定时长,批量生成点播化切片名称序列,发布到redis;之后定时生成最新的点播化切片名称,发布到redis。
进一步地,所述步骤S110包括:
S111、拉取直播流,转换为直播流切片进行本地存储,并将直播切片信息发布到redis;
S112、订阅redis中最新的直播切片信息,根据直播切片信息获取直播流切片,将所述直播流切片复制到点播化目录;
S113、查询redis中点播化切片名称,获取还未使用且最先生成的点播化切片名称,对复制到点播化目录下的直播流切片进行重命名,生成点播化切片;
重复步骤S111、S112、S113。
进一步地,所述步骤S120包括:查询redis中预生成的点播化切片名称,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列。
进一步地,所述切片请求为所述终端根据所述索引文件中切片的时序生成的切片请求,所述步骤S110包括:
判断拉取直播流失败,出现断流情况,进行等待,直至在阈值时间内直播流恢复时,将恢复的直播流切片进行本地存储,将恢复的直播切片信息发布到redis;
订阅redis中恢复的直播切片信息,将断流期间的点播化切片设置为空片,并依照点播化切片名称序列的顺序进行命名;
将恢复的直播流切片复制到点播化目录,并依照点播化切片名称序列的顺序进行重命名,生成点播化切片;
所述步骤S130包括:
根据所述切片请求中的点播化切片名称,判断点播化切片是否存在,如果不存在则阻塞所述终端发送的切片请求;继续接收新的切片请求,直到点播化目录中出现与切片请求匹配的点播化切片,则将断流期间的空片和最新的点播化切片返回给所述终端。
进一步地,所述步骤S130中,在阻塞所述切片请求和出现与切片请求匹配的点播化切片之间,接收到终端发送的请求取消指令时,停止发送点播化切片给终端。
进一步地,还包括,定期清理过期的redis中发布的点播化切片名称和点播化目录中的点播化切片序列。
第二方面,本发明实施例提供了一种直播流播放装置,包括点播化切片生成模块、索引文件生成模块、切片索引模块;
点播化切片生成模块用于定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;
索引文件生成模块用于并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;
切片索引模块用于接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到点播化切片返回给所述终端,以使所述终端进行播放。
本发明第三方面,提供了一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的方法。
本发明第四方面,提供了一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现上述任一所述的方法。
本发明提供的一种用于直播流播放的方法,包括预生成切片信息、断流补空片、切片请求404阻塞机制、过期清理等部分,其优点如下:使用点播流的形式拥有直播体验,不会产生额外延时;适应断流场景,在可容忍的断流时间内不会出现因断流导致播放中断的体验,流在有效时间内恢复则播放继续;不会占用过多存储空间,一个频道一个节目的存储空间量,过期切片会定时清理;该算法提供的媒体流适用于支持hls协议的各播放器。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1为本发明一些实例中的直播点播化方法、提取装置运行的系统架构示意图;
图2为本发明一些实例中的直播点播化算法的流程示意图;
图3为本发明一些实施例中的直播点播化算法中录制点播化切片的流程示意图;
图4为本发明一些实施例中的直播点播化算法中生成点播化索引的流程示意图;
图5为本发明一些实施例中的直播点播化算法的更加详细的处理流程示意图;
图6为本发明另一些实施例中的直播流播化方法的整体流程示意图;
图7为本发明另一些实施例中的直播流播化方法的点播化切片生成流程示意图;
图8为本发明一些实施例中的基于上述附图中的直播流播放方法所实现的直播流播放装置的系统示意图;
图9为本发明一些实施例中直播流播放方法或者播放装置运行的计算机系统结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了可以应用本申请实施例的直播流播放方法或直播流播放装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送数据(例如视频)等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如视频播放软件、视频处理类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏并且支持数据传输的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的视频提供支持的后台服务器。后台服务器可以对接收到的切片请求等数据进行分析等处理,并将处理结果(例如索引到的切面或者切片序列)反馈给与其通信连接的电子设备(例如终端设备)。
需要说明的是,本申请实施例所提供的直播流播放方法可以由服务器105执行,相应地,直播流播放装置可以设置于服务器105中。此外,本申请实施例所提供的直播流播放方法也可以由终端设备101、102、103执行,相应地,直播流播放装置也可以设置于终端设备101、102、103中。
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。当直播流播放方法运行于其上的电子设备不需要与其他电子设备进行数据传输时,该系统架构可以仅包括用于分割视频方法运行于其上的电子设备(例如终端设备101、102、103或服务器105)。
本发明实施例提供了一种直播流点播化播放方法,包括如下步骤:
(1)拉取直播流到本地,并存储为hls格式。
(2)预生成未来时间节点的切片信息(包含切片名称、切片时长)。
(3)播放器请求未来切片时,web服务器发现响应为404时阻塞请求的机制,直到该切片文件生成或播放器取消请求。
(4)播放器请求断流切片时,web服务器发现响应为404则阻塞请求的机制,直到该切片文件生成或播放器取消请求。
(5)在可容忍断流时间内流恢复时补空片。
(6)定期清理过期切片,不占用过多存储空间。
图2展示了本发明实施例中直播点播化方案,该方案包含三个模块:直播拉流、直播点播化录制和直播点播化索引。
直播拉流模块负责将直播流拉取到本地服务器,存储为hls形式。hls协议的流一般包含一个.m3u8和多个.ts文件,其中.m3u8是索引文件,.ts为切片文件,一个切片文件时长一般在几秒至几十秒不等,并将切片信息发布到redis中(发布内容:key为直播流频道名称,value为切片相关信息,包含切片名称、切片时长及切片文件大小),同时清理过期切片(存储少量切片即可)。
直播点播化录制模块订阅redis中发布的最新切片信息,并将直播拉流模块中拉取到的直播切片录制成点播化切片(参考图3)。主要分成两个过程:
1、点播化切片名称的预生成工作
在点播化录制模块初始化阶段会按配置的预生成切片总时长批量预生成这个时间段内的切片名称并录入redis(key:频道名称,value:预生成的切片名称)。批量预生成结束后,起定时器(以固定切片时长为定时周期)周期性预生成最新切片名称并录入redis。
2、将直播拉流模块拉取的切片复制到点播化切片目录,并将其更名为预生成的点播化切片名称
具体地,录制成点播化切片的过程如下:
预生成切片名称
1)直播点播化录制模块初始化阶段,批量预生成切片名称,并录入redis(录入内容:key为频道名称,value为切片文件名称)。
2)初始化快结束时,则定时(以切片时长作为定时周期)预生成最新切片名称,并录入redis(录入内容同上)。
切片录制
1)订阅直播拉流模块中向redis发布的最新切片信息,将最新切片从直播拉流目录复制到点播化目录并重命名为预生成的点播化切片名称。
2)断流情况下,若断流在有效时间内则补空片,即生成空的切片文件(文件大小为0,切片名称同样为预生成切片名称),若超过有效时间则不补片。
其中,涉及到未来切片相关信息的预生成工作(包含切片名称、切片时长、切片起始时间等),录制时需要更名为预生成的切片名称。预生成工作中有一个需要关注的点就是切片时长,由于无法动态预估未来切片的具体时长,同时考虑到提前交付索引内容的情况,须要求直播切片是固定时长。另外,这里预生成的可以是切片信息,这些信息会录入到redis中(k:频道名称,v:预生成的切片名称),用于索引的生成,但一般不会预生成未来时间点的切片空文件在本地服务器,以防止播放器请求到未来切片时,在获取到空文件后不会再请求此切片的情况发生。
除此之外,直播点播化录制模块还负责断流补空片及过期切片的清理工作。断流补空片能力,前提是断流在有效时间内恢复,比如能容忍断流1分钟,当1分钟内流恢复,则在恢复时,将断流期间内的切片补空片,即空文件,以帮助播放器顺利从请求断流切片过渡到请求恢复的流切片中。而若超过1分钟的容忍时间则不会补空片,毕竟对于断流1小时这样的情况补空片也是无意义的。直播点播化的流本质上还是一种直播体验,所以不需要一直存储切片,在一些实施例中,一般存储一个节目内的切片即可,超过这个范围则清理掉。
录制模块当订阅到最新切片时检测是否有断流情况,如果没有断流,则只要复制切片并更名为预生成的切片名称。如果发生断流,检测到流在有效时间内恢复则期间的切片补空片,如果超过有效恢复时间,则不补空片,然后将订阅到的最新切片复制更名。
需要说明的是,上述的补空片是指将有效断流时间内缺失的切片生成为空文件(文件大小为0),该空文件名称以预生成的切片名称命名。这样做,可以让播放器跳过404的情况而继续播放后续有效切片。
直播点播化索引模块根据客户端发送的hls索引请求中的起始和结束时间,选取相关的切片信息,生成点播化索引,参考图4。索引内容中包含了未来时间的切片信息,即直播点播化录制模块中预生成的切片信息。同时使用nginx作代理,对外提供索引服务。同时,nginx提供静态访问切片文件的服务。考虑到播放器有可能会访问未来切片,为防止播放器切片请求在出现响应码为404时频繁发送该切片请求到服务器,给服务器造成不必要的压力,在nginx侧针对这类请求做了404阻塞,直到该切片生成或请求取消才解除阻塞并将内容返回给播放器。这里的请求取消指的是请求的终止,意在指由客户端导致请求终止。产生的原因多样,可能是正常的终止,也可能是异常的终止。比如用户退出播放界面导致播放器断开连接、客户端设置超时时间到达或客户端网络异常导致连接断开等。这种情况下,服务侧不会返回内容给播放器。
图5展示了直播点播化算法的一般流程。包含流正常时的流程和断流情况下的流程。关键配置项设置为:
-切片固定时长:10s
-批量预生成切片总时长:7200s
-切片保留总时长:7200s
-容忍的断流时长(用于补空片):300s
-直播点播化频道:["cctv-5"]
流正常时的流程如下:
1、直播拉流模块拉取最新切片S0’;
2、直播点播化录制模块(以下简称“点播化录制”)启动后,在redis中批量预生成基于最新切片S0’未来2h的切片信息,按每个切片时长10s计算,则共预生成720个切片信息;所述切片信息包括:预生成的切片名称、切片时长、切片起始时间等。
3、点播化录制模块以10s为间隔定时预生成最新的切片信息;
4、直播拉流模块10s后拉取到最新切片S1’(Si’);为了保证低延时实际直播拉流模块有2种获取直播流的方式:轮询和发布订阅。而轮询方式下为保障低延时,也有一定的轮询策略,正常情况下是以切片时长作为轮询周期。
5、点播化录制模块复制S1’(Si’)至点播化目录,并更名为当前预生成切片名称中尚未使用的最早的那个切片S1(Si);
重复3、4、5点;
6、终端请求点播化索引,nginx反向代理请求至点播化索引模块;
7、点播化索引模块根据请求的起始、结束时间计算出所需切片范围(包括预生成的切片),生成点播m3u8内容反馈给nginx;所述点播m3u8索引内容中包含了起始时间和结束时间内的所有切片。服务侧对起时时间和结束时间不会有严格要求,从服务角度建议起始时间为过去时间,结束时间为未来时间。这样m3u8内容中会包含一部分已有切片和一部分未来切片。当播放器获取到这样的m3u8时就可以获取已有切片信息直接播放,无须等待影响播放体验。而随着时间推移,未来切片会变成真实存在的切片,对播放器来说是无感知。唯一的约束就是播放器不能seek到未来时间的切片上。关于起始时间和结束时间的约束规则,由运营来调整。
8、播放器根据反馈的m3u8内容依次请求相应切片;播放器播放点播hls流时,先获取点播.m3u8,解析出.m3u8中所有切片信息后,按正常切片顺序向服务器获取切片内容进行播放。
上述过程中,播放器的索引请求(.m3u8)和切片请求(.ts)都会请求到nginx。对于索引请求nginx会代理到直播点播化索引模块,由其生成点播化索引内容返回给nginx,nginx返回给播放器。对于切片请求,nginx配置为静态访问,直接从本地服务器点播化目录获取切片内容返回给播放器,如果发现请求的切片文件不存在(为未来切片或断流造成缺失的切片)则404阻塞住,直到切片生成或请求终止。
9、点播化录制模块清理时间到,则保留2h的切片,2h之前的过期切片(本地目录及Redis)清理掉;
断流情况下的流程:
1、接上面流程中“重复3、4、5点”;
2、直播拉流模块在最新切片为Sn’时出现断流情况,并在300s内恢复;
3、断流期间播放器请求断流切片Sn+1,nginx发现404则阻塞该请求;
4、断流恢复时,点播化录制模块订阅到最新切片Sn+k+1’,认为流恢复并检测到断流时间在300s内,则断流期间的切片(Sn+1,...,Sn+k)(k<30)补空片,并复制Sn+k+1’至点播化目录并更名Sn+k+1;
5、nginx读取到Sn+1空片后,将内容反馈给播放器;
6、播放器继续请求下一个切片Sn+1,以此类推;
在一些实施例中播放器中全部都会来依次获取这k个空片,它们不会跳过空片直接获取恢复的切片。而对于画面的播放呈现的效果有二种:
1.如果播放器播放到断流点的切片时已获取到恢复的切片数据,则呈现的效果就是跳帧现象。
2.如果播放器播放到断流点的切片时还未获取到恢复的切片数据,则出现播放等待(即缓冲中),直到恢复的切片数据获取到后,播放器播放这个切片出现跳帧的情况。
上述实施例中,nginx不是唯一选择,可选择其它支持反向代理、静态文件访问及做到404阻塞的其它web服务器。直播拉流模块拉取的直播流不限于hls直播流,其它形式的直播流可转码成hls流。
本发明实施例提供了一种直播点播化算法,包括预生成切片信息、断流补空片、切片请求404阻塞机制、过期清理等部分,其优点如下:
1、使用点播流的形式拥有直播体验,不会产生额外延时;
2、适应断流场景,在可容忍的断流时间内不会出现因断流导致播放中断的体验,流在有效时间内恢复则播放继续;
3、不会占用过多存储空间,一个频道一个节目的存储空间量,过期切片会定时清理;
4、该算法提供的媒体流适用于支持hls协议的各播放器。
如图6所示,本发明另一个实施例中,提供了一种直播流播放方法,包括如下步骤:
S110、定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;S120、并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;
S130、接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到的点播化切片返回给所述终端,以使所述终端进行播放。
本发明实施例中,定时拉流转存为点播化切片的步骤和接收终端点播化索引请求的步骤可以并行执行,相互影响较小,终端请求的索引从预生成的点播化切片名称序列中获取,然后返回给终端,虽然此时,索引对应的切片文件可能还未生成,但是随着时间的推移,当有终端发起对应的切片文件请求时,服务器侧拉取的直播流将会转为对应的点播化切片存在点播化目录中,虽然是点播化播放,但播放的延时更小,近乎等同于直播。通过预先生成的点播化名称进行反馈,避免了产生切片之后再转存之后再反馈索引造成的延时问题。
进一步地,所述预生成的点播化切片名称由如下步骤产生:
按照批量预生成切片总时长、切片固定时长,批量生成点播化切片名称序列,发布到redis;
之后定时生成最新的点播化切片名称,发布到redis。本发明实施例中,先批量生成点播化切片名称,能够给直播拉流转存留下较大地可索引空间,然后定时产生,保证了切片名称能够保持长期足量。
进一步地,如图7所示,所述步骤S110包括:
S111、拉取直播流,转换为直播流切片进行本地存储,并将直播切片信息发布到redis;
S112、订阅redis中最新的直播切片信息,根据直播切片信息获取直播流切片,将所述直播流切片复制到点播化目录;
S113、查询redis中点播化切片名称,获取还未使用且最先生成的点播化切片名称,对复制到点播化目录下的直播流切片进行重命名,生成点播化切片;
重复步骤S111、S112、S113。本发明实施例的拉流转存的步骤是一个持续性循环的步骤,使得直播流源源不断地转成点播化切片,为响应终端请求做准备。
进一步地,所述步骤S120包括:查询redis中预生成的点播化切片名称,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列。本发明实施例中,通过点播化索引请求中的起始时间、结束时间从redis中查询获取对应的点播化切片信息,例如,点播化切片名称信息。
进一步地,所述切片请求为所述终端根据所述索引文件中切片的时序生成的切片请求,为了应对直播流断流的情形,所述步骤S110包括:
判断拉取直播流失败,出现断流情况,进行等待,直至在阈值时间内直播流恢复时,将恢复的直播流切片进行本地存储,将恢复的直播切片信息发布到redis;
订阅redis中恢复的直播切片信息,将断流期间的点播化切片设置为空片,并依照点播化切片名称序列的顺序进行命名;即按照点播化切片名称序列,将没有使用过的且最新的点播化切片名称依次命名到空片上;
将恢复的直播流切片复制到点播化目录,并依照点播化切片名称序列的顺序进行重命名,生成点播化切片;即按照点播化切片名称序列,将没有使用过的且最新的点播化切片名称命名到恢复的直播流切片上;
对应地,所述步骤S130包括:
根据所述切片请求中的点播化切片名称,判断点播化切片是否存在,如果不存在则阻塞所述终端发送的切片请求;继续接收新的切片请求,直到点播化目录中出现与切片请求匹配的点播化切片,则将断流期间的空片和最新的点播化切片返回给所述终端。这时,终端一次性接收到断流期间的空片和恢复的最新的点播化切片,由于空片无内容,终端跳帧播放。
在一些实施例中,在断流期间,终端可能会发送取消播放的指令,这时需要停止向终端反馈切片文件,具体地,所述步骤S130中,在阻塞所述切片请求和出现与切片请求匹配的点播化切片之间,接收到终端发送的请求取消指令时,停止发送点播化切片给终端。
本发明实施例中,为了减小空间占用,还包括,定期清理过期的redis中发布的点播化切片名称和点播化目录中的点播化切片序列。
本发明的实施例通过同步实施直播流转点播切片,响应点播索引请求,响应点播切片请求,实现将直播流点播化播放的效果;在直播流断流时,通过阻塞切片请求,直至恢复时,进行对应补空片,避免过度访问服务器,造成网络拥塞的问题。
如图8所示,依据上述的方法实施例,本发明实施例还提供了一种直播流播放装置100,包括点播化切片生成模块110、索引文件生成模块120、切片索引模块130;
点播化切片生成模块110用于定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;
索引文件生成模块120用于并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;
切片索引模块130用于接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到点播化切片返回给所述终端,以使所述终端进行播放。
上述各个模块的具体执行步骤在直播流播放方法中对应的步骤中已进行详细叙述,在此不做过多赘述。
下面参考图9,其示出了适于用来实现本申请实施例的控制设备的计算机系统800的结构示意图。图9示出的控制设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向目标的程序设计语言—诸如Python、Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、分割单元、确定单元和选择单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取待处理绘本图像的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到的点播化切片返回给所述终端,以使所述终端进行播放。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (8)
1.一种直播流播放方法,其特征在于,包括如下步骤:
S110、定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;所述预生成的点播化切片名称由如下步骤产生:
按照批量预生成切片总时长、切片固定时长,批量生成点播化切片名称序列,发布到redis;
之后定时生成最新的点播化切片名称,发布到redis;
步骤S110包括:
S111、拉取直播流,转换为直播流切片进行本地存储,并将直播切片信息发布到redis;
S112、订阅redis中最新的直播切片信息,根据直播切片信息获取直播流切片,将所述直播流切片复制到点播化目录;
S113、查询redis中点播化切片名称,获取还未使用且最先生成的点播化切片名称,对复制到点播化目录下的直播流切片进行重命名,生成点播化切片;
重复步骤S111、S112、S113;
S120、并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;
S130、接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到的点播化切片返回给所述终端,以使所述终端进行播放。
2.根据权利要求1所述的直播流播放方法,其特征在于,所述步骤S120包括:查询redis中预生成的点播化切片名称,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列。
3.根据权利要求1所述的直播流播放方法,其特征在于,所述切片请求为所述终端根据所述索引文件中切片的时序生成的切片请求,所述步骤S110包括:
判断拉取直播流失败,出现断流情况,进行等待,直至在阈值时间内直播流恢复时,将恢复的直播流切片进行本地存储,将恢复的直播切片信息发布到redis;
订阅redis中恢复的直播切片信息,将断流期间的点播化切片设置为空片,并依照点播化切片名称序列的顺序进行命名;
将恢复的直播流切片复制到点播化目录,并依照点播化切片名称序列的顺序进行重命名,生成点播化切片;
所述步骤S130包括:
根据所述切片请求中的点播化切片名称,判断点播化切片是否存在,如果不存在则阻塞所述终端发送的切片请求;继续接收新的切片请求,直到点播化目录中出现与切片请求匹配的点播化切片,则将断流期间的空片和最新的点播化切片返回给所述终端。
4.根据权利要求3所述的直播流播放方法,其特征在于,所述步骤S130中,在阻塞所述切片请求和出现与切片请求匹配的点播化切片之间,接收到终端发送的请求取消指令时,停止发送点播化切片给终端。
5.根据权利要求1所述的直播流播放方法,其特征在于,还包括,定期清理过期的redis中发布的点播化切片名称和点播化目录中的点播化切片序列。
6.一种直播流播放装置,其特征在于,包括点播化切片生成模块、索引文件生成模块、切片索引模块;
点播化切片生成模块用于定时拉取直播流切片,复制所述直播流切片到点播化目录,根据预生成的点播化切片名称序列,对存储到点播化目录下的所述直播流切片进行重命名,生成点播化切片序列;所述预生成的点播化切片名称的产生过程如下:
按照批量预生成切片总时长、切片固定时长,批量生成点播化切片名称序列,发布到redis;
之后定时生成最新的点播化切片名称,发布到redis;
索引文件生成模块用于并行接收终端发送的点播化索引请求,根据点播化索引请求中的起始时间、结束时间,从所述点播化切片名称序列中确定出目标点播化切片名称序列,依据所述目标点播化切片名称序列生成索引文件,发送所述索引文件给所述终端;
切片索引模块用于接收终端根据所述索引文件生成的切片请求,根据所述切片请求中的点播化切片名称,索引到对应的点播化切片,并将索引到点播化切片返回给所述终端,以使所述终端进行播放;
所述点播化切片生成模块具体用于执行以下步骤:
S111、拉取直播流,转换为直播流切片进行本地存储,并将直播切片信息发布到redis;
S112、订阅redis中最新的直播切片信息,根据直播切片信息获取直播流切片,将所述直播流切片复制到点播化目录;
S113、查询redis中点播化切片名称,获取还未使用且最先生成的点播化切片名称,对复制到点播化目录下的直播流切片进行重命名,生成点播化切片;
重复步骤S111、S112、S113。
7.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010727131.5A CN111787404B (zh) | 2020-07-26 | 2020-07-26 | 直播流播放方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010727131.5A CN111787404B (zh) | 2020-07-26 | 2020-07-26 | 直播流播放方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111787404A CN111787404A (zh) | 2020-10-16 |
CN111787404B true CN111787404B (zh) | 2022-05-06 |
Family
ID=72764946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010727131.5A Active CN111787404B (zh) | 2020-07-26 | 2020-07-26 | 直播流播放方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111787404B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113747183A (zh) * | 2021-07-30 | 2021-12-03 | 深圳市九洲电器有限公司 | 一种直播视频分享方法、系统及可读存储介质 |
CN114125487A (zh) * | 2021-12-02 | 2022-03-01 | 北京思特奇信息技术股份有限公司 | 一种基于hls接口的视频直播录制方法及系统 |
CN114501044B (zh) * | 2021-12-23 | 2023-12-08 | 百果园技术(新加坡)有限公司 | 直播数据处理方法、装置、设备和存储介质 |
CN115623237B (zh) * | 2022-10-20 | 2024-03-29 | 杭州雅顾科技有限公司 | 一种列表直播方法、装置、设备及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9357239B2 (en) * | 2012-11-16 | 2016-05-31 | Adobe Systems Incorporated | Converting live streaming content to video-on-demand streaming content |
CN106658150B (zh) * | 2015-11-03 | 2020-01-17 | 中兴通讯股份有限公司 | 一种实现回看处理的方法及装置 |
CN109587514B (zh) * | 2017-09-28 | 2021-08-06 | 中国移动通信有限公司研究院 | 一种视频播放方法、介质和相关装置 |
CN107864382B (zh) * | 2017-10-24 | 2018-10-09 | 广东省南方数字电视无线传播有限公司 | 视频播放方法、装置和系统 |
CN109729371B (zh) * | 2018-12-21 | 2021-06-01 | 中电福富信息科技有限公司 | 一种基于hls协议多级管理的直播时移系统及方法 |
CN110392277A (zh) * | 2019-07-30 | 2019-10-29 | 杭州雅顾科技有限公司 | 一种直播视频的内容收录方法、装置、设备及存储介质 |
-
2020
- 2020-07-26 CN CN202010727131.5A patent/CN111787404B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111787404A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111787404B (zh) | 直播流播放方法及装置 | |
CN114666308B (zh) | 对于流式内容部分的基于请求的编码系统和方法 | |
US10848816B2 (en) | Updating content libraries by transmitting release data | |
CN103379362B (zh) | 视频点播方法和系统 | |
JP4934650B2 (ja) | 瞬時のメディア・オン・デマンド | |
US11356748B2 (en) | Method, apparatus and system for slicing live streaming | |
US5583994A (en) | System for efficient delivery of multimedia information using hierarchical network of servers selectively caching program for a selected time period | |
CN102238419B (zh) | 播放实况内容的方法和装置 | |
US10164860B2 (en) | Modified content delivery based on network conditions | |
US7627888B2 (en) | Method and system for keeping a library of titles updated | |
US20110179449A1 (en) | Fragmentation of a file for instant access | |
CA3041699A1 (en) | Base linear stream creater for personalized channels | |
US20060218220A1 (en) | Method and system for updating contents in newly-installed devices | |
US20060206609A1 (en) | Method and system for managing objects distributed in a network | |
US11545185B1 (en) | Method and apparatus for frame accurate high resolution video editing in cloud using live video streams | |
CN118474481A (zh) | 接收媒体数据的方法、装置和非易失性计算机可读介质 | |
JP2011172021A (ja) | キャッシュサーバ制御装置、コンテンツ配信システム、コンテンツ配信方法、及びプログラム | |
CN112243136B (zh) | 内容播放方法、视频存储方法和设备 | |
US11863823B2 (en) | Systems and methods for providing recording of a blacked-out media content item | |
CN102143393A (zh) | 一种广告投放系统及方法 | |
US8671427B1 (en) | Method and apparatus to enable sending personal data via a network | |
US20080172447A1 (en) | Hierarchical Broadcast of Ui Assets | |
CN113301100A (zh) | 基于内容分发网络的数据容灾方法、装置、设备及介质 | |
CN110784737A (zh) | 基于hls协议的播放时移电视的方法、终端及服务器 | |
US20190036838A1 (en) | Delivery of Multimedia Components According to User Activity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |