CN110677736B - 一种hls点播快速起播方法及系统 - Google Patents
一种hls点播快速起播方法及系统 Download PDFInfo
- Publication number
- CN110677736B CN110677736B CN201910950309.XA CN201910950309A CN110677736B CN 110677736 B CN110677736 B CN 110677736B CN 201910950309 A CN201910950309 A CN 201910950309A CN 110677736 B CN110677736 B CN 110677736B
- Authority
- CN
- China
- Prior art keywords
- media
- gop
- player
- playing
- media fragment
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- 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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2387—Stream processing in response to a playback request from an end-user, e.g. for trick-play
-
- 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/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8455—Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
Abstract
本发明公开了一种HLS点播快速起播方法及系统,涉及互联网多媒体技术领域。本发明通过预先获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;CDN系统收到第一个媒体分片的获取请求,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送该媒体分片的其余数据;CDN系统收到从媒体分片的偏移时间位置起获取内容的请求后,根据偏移时间位置计算媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;当播放器缓至媒体分片中一个GOP末字节时,即可开始播放视频,达到更高的起播速度和起播位置精度,以及提高CDN发流效率,避免资源浪费。
Description
技术领域
本发明涉及互联网多媒体技术领域,具体涉及一种HLS点播快速起播方法及系统。
背景技术
当前业界HLS(HTTP Live Streaming,苹果公司提出的基于HTTP的流媒体网络传输协议)点播起播一般形式为:当用户选择一个HLS点播内容播放时,终端选择索引文件中的第一个媒体分片,向CDN(Content Delivery Network,内容分发网络)系统请求。为了使终端用户获得较好起播体验,CDN一般将此整个媒体分片以N倍视频码率的速度发送(一般N>=4)。当用户拖拽进度条进行拖放时,CDN对被请求媒体分片的发送方式是相同的。
此种方法主要存在三个问题:
一、被请求的媒体分片发送最高速率只能到N倍;
二、在实际中,播放器只要缓存完包含第一个GOP(Group Of Picture,画面组)包含的媒体内容即可起播,而现有技术一般将整个媒体分片都以N倍速发送,造成CDN资源和网络资源浪费,也增加了网络拥塞的可能性;
三、拖放的粒度为媒体分片长度,如分片时长为10秒,每次只能拖放到视频10秒整数倍的位置播放,或采用另外一种方式,播放器下载整个媒体分片,再搜索到对应位置开始播放。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种HLS点播快速起播方法及系统,达到更高的起播速度和起播位置精度,提高CDN发流效率,避免资源浪费。
为达到以上目的,本发明采取的技术方案是:一种HLS点播快速起播方法,包括以下步骤:
获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;
用户请求点播时,播放器向CDN系统请求播放HLS点播内容,CDN系统向播放器反馈索引文件;播放器解析索引文件,向CDN系统请求获取第一个媒体分片;
CDN系统收到媒体内容索引文中第一个媒体分片的获取请求,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送该媒体分片的其余数据;
播放器接收媒体分片数据并缓存,当缓至媒体分片中第一个GOP末字节时,开始播放视频,并下载该媒体分片的剩余数据进行播放。
在上述方案的基础上,所述索引文件包括两个自定义的媒体分片的标签,其中一个为GOP起始位置标签,用于以数组方式记录该媒体分片中的每一个GOP的起始位置值;另一个为GOP首帧的展示时间标签,用于以数组方式记录该媒体分片中的每一个GOP中首帧的展示时间值。
在上述方案的基础上,所述方法还包括以下步骤:
用户操作播放器进度条进行拖拽播放时,播放器根据索引文件中各媒体分片的时长,计算出拖拽后的起播位置所在的媒体分片以及在该媒体分片的起播偏移位置,向CDN系统请求从计算出的该媒体分片的起播偏移位置开始播放;
CDN系统收到媒体分片的获取请求后,计算起播偏移位置在媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;以限速方式发送该媒体分片的其余数据;
播放器缓存完该GOP包含的全部媒体数据时,开始播放视频,并不间断下载该媒体分片的剩余数据进行播放。
在上述方案的基础上,计算起播偏移位置在媒体分片中对应的GOP的位置,具体包括以下步骤:
CDN系统从URL获得媒体分片名称和起播偏移位置后,通过遍历该媒体分片的GOP首帧展示时间标签的数组元素,从中寻找与起播偏移位置最接近的首帧展示时间,找到后记录数组元素的下标,用此下标从媒体分片的GOP起始位置标签的数组得到对应GOP的起始位置。
在上述方案的基础上,所述方法还包括以下步骤:
CDN系统向播放器反馈索引文件时,删除索引文件中包含的所有自定义的媒体分片的标签。
本发明还提供一种HLS点播快速起播系统,包括预处理模块、播放器和CDN系统:
所述预处理模块用于:获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;
所述播放器用于:用户请求点播时,向CDN系统请求播放HLS点播内容,获取CDN系统反馈的索引文件;解析索引文件,向CDN系统请求获取第一个媒体分片;
所述CDN系统用于:收到播放HLS点播内容的请求时,向播放器反馈索引文件;收到媒体内容索引文中第一个媒体分片的获取请求时,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送媒体分片的其余数据;
所述播放器还用于:接收媒体分片数据并缓存,当缓至媒体分片中第一个GOP末字节时,开始播放视频,并下载该媒体分片的剩余数据进行播放。
在上述方案的基础上,所述索引文件包括两个自定义的媒体分片的标签,其中一个为GOP起始位置标签,用于以数组方式记录该媒体分片中的每一个GOP的起始位置值;另一个为GOP首帧的展示时间标签,用于以数组方式记录该媒体分片中的每一个GOP中首帧的展示时间值。
在上述方案的基础上,所述播放器还用于:用户操作播放器进度条进行拖拽播放时,播放器根据索引文件中各媒体分片的时长,计算出拖拽后的起播位置所在的媒体分片以及在该媒体分片的起播偏移位置,向CDN系统请求从计算出的该媒体分片的起播偏移位置开始播放;
所述CDN系统还用于:收到向播放器反馈索引文件;收到媒体分片的获取请求后,计算起播偏移位置在媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;以限速方式发送该媒体分片的其余数据;
播放器缓存完该GOP包含的全部媒体数据时,开始播放视频,并不间断下载该媒体分片的剩余数据进行播放。
在上述方案的基础上,所述CDN系统计算起播偏移位置在媒体分片中对应的GOP的位置,具体包括以下步骤:
CDN系统从URL获得媒体分片名称和起播偏移位置后,通过遍历该媒体分片的GOP首帧展示时间标签的数组元素,从中寻找与起播偏移位置最接近的首帧展示时间,找到后记录数组元素的下标,用此下标从媒体分片的GOP起始位置标签的数组得到对应GOP的起始位置。
在上述方案的基础上,所述CDN系统还用于:向播放器反馈索引文件时,删除索引文件中包含的所有自定义的媒体分片的标签。
与现有技术相比,本发明的优点在于:
本发明通过预先获取点播片库中内容文件,生成包含媒体内容中所有GOP的起始位置和所有GOP的首帧展示时间的索引文件和媒体分片,注入CDN系统;CDN系统收到媒体分片的获取请求,如果请求的是索引文件中的第一个媒体分片,则以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送该媒体分片的其余数据;CDN系统收到从媒体分片的起播偏移位置起获取内容的请求后,根据起播偏移位置计算媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器,以限速方式发送该媒体分片的其余数据;当播放器缓至媒体分片中一个GOP末字节时,即可开始播放视频,由此可以达到更高的起播速度和起播位置精度,以及提高CDN发流效率,避免资源浪费。
附图说明
图1是本发明实施例的HLS点播快速起播方法的流程示意图;
图2是本发明实施例的HLS点播快速起播方法的原理示意图;
图3是本发明实施例的播放器示意图;
图4是本发明实施例的用户进行进度条拖拽播放的示意图;
图5是本发明实施例的用户进行进度条拖拽播放的原理示意图;
图6是本发明实施例的HLS点播快速起播系统的模块关系示意图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细说明。
本发明实施例提供一种HLS点播快速起播方法,包括以下步骤:
获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;
用户请求点播时,播放器向CDN系统请求播放HLS点播内容,CDN系统向播放器反馈索引文件;播放器解析索引文件,向CDN系统请求获取第一个媒体分片;
CDN系统收到媒体内容索引文中第一个媒体分片的获取请求,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送该媒体分片的其余数据;
播放器接收媒体分片数据并缓存,当缓至媒体分片中第一个GOP末字节时,开始播放视频,并下载该媒体分片的剩余数据进行播放。
作为优选的实施方式,所述方法还包括以下步骤:
用户操作播放器进度条进行拖拽播放时,播放器根据索引文件中各媒体分片的时长,计算出拖拽后的起播位置所在的媒体分片以及在该媒体分片的起播偏移位置,向CDN系统请求从计算出的该媒体分片的起播偏移位置开始播放;
CDN系统收到媒体分片的获取请求后,计算起播偏移位置在媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;以限速方式发送该媒体分片的其余数据;
播放器缓存完该GOP包含的全部媒体数据时,开始播放视频,并不间断下载该媒体分片的剩余数据进行播放。
作为优选的实施方式,在所述索引文件中,为每个媒体分片增加本发明自定义的两个标签进行描述,一个标签以数组方式记录该媒体分片中的每一个GOP的起始位置值,并称之为媒体分片的‘GOP起始位置标签’,另一个标签以数组方式记录该媒体分片中的每一个GOP中首帧的展示时间值,并称之为媒体分片的‘GOP首帧展示时间标签’。
作为优选的实施方式,计算起播偏移位置在媒体分片中对应的GOP的位置,具体包括以下步骤:
CDN系统从URL获得媒体分片名称和起播偏移位置后,通过遍历该媒体分片的GOP首帧展示时间标签的数组元素,从中寻找与起播偏移位置最接近的首帧展示时间,找到后记录数组元素的下标,再用此下标从媒体分片的GOP起始位置标签的数组得到对应GOP的起始位置。
作为优选的实施方式,所述方法还包括以下步骤:
CDN系统向播放器反馈索引文件时,删除索引文件中包含的媒体分片的所有本发明实施例定义的标签。
参见图1所示,本发明实施例的HLS点播快速起播方法,具体包括以下步骤:
S1、预处理模块从点播片库下载内容文件(如TS文件、MP4文件、HLS格式文件等格式文件)进行处理。预处理模块处理的内容文件,如果是非HLS格式的内容,解析其中媒体信息,生成媒体分片和索引文件,在进行内容切片时,解析每个媒体分片,获得媒体分片中每个GOP的起始位置和每个GOP中首帧的展示时间(Presentation Time)。如果是HLS格式的内容,则直接解析其中的每个媒体分片,获得媒体分片中每个GOP的起始位置和每个GOP中首帧的展示时间。
媒体分片中的每一个GOP的位置以其在媒体分片中的位置表示,即用相对分片的第一字节的偏移位置表示,单位为字节,并将这些数值用自定义的标签(Tag)EXT-X-GOPS-POS在索引文件表示,每个媒体分片都有一个属于自己的这种类型的标签。
媒体分片中的每一GOP的首帧的展示时间以其在媒体分片中的展示时间表示,单位为毫秒,并将这些数值用自定义的标签(Tag)EXT-X-GOPS-PTS在索引文件表示,每个媒体分片都有一个属于自己的这种类型的标签。
对于一个包含n个GOP的媒体分片,本发明对其两个标签(Tag)定义如下的数组格式(数组中的元素以逗号分隔):
#EXT-X-GOPS-POS:GOP1位置,GOP2位置,…,GOPn位置
#EXT-X-GOPS-PTS:GOP1首帧展示时间,GOP2首帧展示时间,…,GOPn首帧展示时间。
假设有一个10秒的媒体分片,有10个GOP,它们的首帧在媒体分片中的展示时间依次是30,1000,2000,3000,4000,5000,6000,7000,8000,9000,单位为毫秒,那么它的EXT-X-GOPS-PTS可表示为:
#EXT-X-GOPS-PTS:30,1000,2000,3000,4000,5000,6000,7000,8000,9000;
各GOP在此媒体分片中的偏移位置依次是4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296,则它的EXT-X-GOPS-POS可表示为:
#EXT-X-GOPS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296。
每一个媒体分片都有一个标签EXT-X-GOPS-POS和一个标签EXT-X-GOPS-PTS,分别表示在此媒体分片中的所有GOP的位置和GOP首帧展示时间。
预处理模块输出的一个索引文件的例子如下所示,例子中每个媒体分片用两个本发明定义的标签(EXT-X-GOPS-PTS和EXT-X-GOPS-POS)、一个EXTINF标签和一个URI(如1.ts)定义:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-GOPS-PTS:30,1000,2000,3000,4000,5000,6000,7000,8000,9000
#EXT-X-GOPS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296
#EXTINF:10,
1.ts
#EXT-X-GOPS-PTS:30,1000,2000,3000,4000,5000,6000,7000,8000,9000
#EXT-X-GOPS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296
#EXTINF:10,
2.ts
#EXT-X-GOPS-PTS:45,1000,2000,3000,4000,5000,6000,7000,8000,9000
#EXT-X-GOPS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296
#EXTINF:10,
3.ts
#EXT-X-GOPS-PTS:30,1000,2000,3001,4005,5050,6020,7000,8000,9000
#EXT-X-IDRS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296
#EXTINF:10,
4.ts
#EXT-X-GOPS-PTS:30,1000,2000,3001,4005,5050,6020,7000,8000,9000
#EXT-X-GOPS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296
#EXTINF:10,
5.ts
#EXT-X-GOPS-PTS:30,1000,2000,3001,4005,5050,6020,7000,8000,9000
#EXT-X-GOPS-POS:4096,262144,524288,786432,1048576,1310720,1572864,1835008,2097152,2359296
#EXTINF:10,
6.ts
#EXT-X-ENDLIST。
在如上这个例子中,媒体分片4.ts,根据在它前面的所有媒体分片的标签EXTINF的数值相加,可知4.ts的展示时间为第30秒,再根据EXT-X-GOPS-PTS,可知媒体分片4.ts中的第一个GOP的首帧在分片中的展示时间是第30毫秒,那么它在整个媒体内容中的展示时间是:第(30秒+30毫秒)=第30.03秒,第二个GOP的首帧在分片中的展示时间是第1000毫秒,那么它在整个媒体内容中的展示时间是:第(30秒+1000毫秒)=第31秒,其他GOP的首帧展示时间的计算方式是相同的。
S2、预处理模块将产生的HLS格式的点播内容,注入CDN系统。CDN系统存储HLS的点播内容,包含索引文件(即M3U8文件)、媒体分片文件。
S3、播放器向CDN系统请求播放HLS的点播内容。比如,播放器请求的URL是http://ip/hls/VOD/1000.m3u8;
S4、CDN系统向终端发送索引文件(即M3U8文件)。为减少索引文件的大小,CDN系统可以将发送给终端的索引文件,删除所有媒体分片的标签EXT-X-GOPS-PTS和标签EXT-X-GOPS-POS。
S5、播放器解析索引文件(即M3U8文件),获得第一个媒体分片的URL,并向CDN系统请求此分片。比如,播放器请求的第一个媒体分片的URL是http://ip/hls/VOD/1.ts。
S6、CDN系统判断请求的分片是索引文件中的第一个分片(1.ts),所以将该媒体分片中的第一个字节至第一个GOP的最后一个字节的所有数据以不限速方式向播放器发送,剩余分片数据以两倍视频码率速度发送(如图2所示,GOP1表示第一个GOP,GOP2表示第二个GOP,其他以此类推)。
S7、播放器接收媒体分片数据并缓存,当缓存至媒体分片的第一个GOP的最后一个字节,即可开始播放视频,同时不间断继续下载该分片的剩余数据。
S8、播放器下载完索引文中的第一个媒体分片(1.ts)后,按序下载第二个媒体分片、第三个媒体分片、……如此实现按序连续下载媒体分片,并且对于这些位于第一个媒体分片之后的分片,CDN都是以两倍媒体码率的速度发送。同时,播放器播完一个媒体分片后,接着按序播放下个媒体分片,如此实现连续播放内容。如图3所示,是一个播放器示意图,播放器显示播放进度条,圆圈表示当前正在播放的位置。
S9、用户操作播放器进度条,进行拖拽播放。如图4所示,假设当前播放的媒体内容总时长为60秒,这时用户拖到34秒的位置开始播放。并假设每个媒体分片的长度均为10秒,共有6个分片。当拖到34秒的位置开始播放时,播放器根据索引文件中各媒体分片的时长,计算后得知应该从第4个媒体分片的4秒位置开始播放,假设该媒体分片的名字是4.ts,并假设此时播放器缓存中不包该分片,则播放器使用URLhttp://ip/hls/VOD/4.ts?offsettime=4向CDN系统请求,URL带有起播偏移位置参数offsettime,大小为4秒,表示从媒体分片4.ts的4秒位置开始播放。
S10、CDN系统收到分片请求后,根据URL中的起播偏移位置参数offsettime,计算该参数对应的GOP的位置,并将此GOP包含的全部媒体数据,以不限速方式发送给终端,其后面的剩余数据(如果有)则以两倍视频码率的速度发送给终端。如图5所示,CDN系统收到URLhttp://ip/hls/VOD/4.ts?offsettime=4后,从URL得知请求的是第4个媒体分片(4.ts)和offsettime的值,根据此媒体分片(4.ts)的标签EXT-X-GOPS-PTS和标签EXT-X-GOPS-POS的数值进行计算:
在标签EXT-X-GOPS-PTS表示的数组中,寻找一个元素,它的值和offsettime(4秒)最接近,结果找到的是第5个元素,它的值为4005毫秒,与4秒最接近,由此可知,offsettime对应的GOP是媒体分片(4.ts)中的第5个GOP,它在媒体分片中的位置等于标签EXT-X-GOPS-POS表示的数组中的第5个元素的值,即等于1048576。最后,CDN系统向播放器以不限速方式发送媒体分片4(4.ts)的第5个GOP包含的全部媒体数据(此GOP在媒体分片中的位置为1048576,长度=GOP6的位置-GOP5的位置=1310720-1048576),剩余媒体分片数据以两倍视频码率的速度发送。
S11、播放器下载完媒体分片(4.ts)中的第5个GOP包含的全部媒体数据后,即开始播放,并同步继续下载该媒体分片的剩余数据。下载完该媒体分片的剩余数据后,再按顺序下载下一个媒体分片,下载完后,再下载下一个媒体分片……如此一个接一个地下载,并且对于这些分片,CDN都是以两倍媒体码率的速度发送。同时,播放器播完一个媒体分片后,接着按序播放下一个媒体分片,如此一个一个分片按序播放。
参见图6所示,本发明实施例还提供一种HLS点播快速起播系统,包括预处理模块、播放器和CDN系统:
所述预处理模块用于:获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;
所述播放器用于:用户请求点播时,向CDN系统请求播放HLS点播内容,获取CDN系统反馈的索引文件;解析索引文件,向CDN系统请求媒体分片;
所述CDN系统用于:收到播放HLS点播内容的请求时,向播放器反馈索引文件;收到索引文中的第一个媒体分片的获取请求时,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送媒体分片的其余数据;
所述播放器还用于:接收媒体分片数据并缓存,当缓至媒体分片中第一个GOP末字节时,开始播放视频,并下载该媒体分片的剩余数据进行播放。
作为优选的实施方式,所述播放器还用于:用户操作播放器进度条进行拖拽播放时,播放器根据索引文件中各媒体分片的时长,计算出拖拽后的起播位置所在的媒体分片以及在该媒体分片的起播偏移位置,向CDN系统请求从计算出的该媒体分片的起播偏移位置开始播放;
所述CDN系统还用于:向播放器反馈索引文件;收到媒体分片的获取请求后,根据URL中的起播偏移位置参数计算对应的媒体分片中GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;以限速方式发送该媒体分片的其余数据;
播放器缓存完该GOP包含的全部媒体数据时,开始播放视频,并不间断下载该媒体分片的剩余数据进行播放。
作为优选的实施方式,所述索引文件包括两个自定义的媒体分片的标签,其中一个为GOP起始位置标签,用于以数组方式记录该媒体分片中的每一个GOP的起始位置值;另一个为GOP首帧的展示时间标签,用于以数组方式记录该媒体分片中的每一个GOP中首帧的展示时间值。
作为优选的实施方式,所述CDN系统根据起播偏移位置计算对应的媒体分片中GOP的位置,具体包括以下步骤:
CDN系统从URL获得媒体分片名称和起播偏移位置后,通过遍历该媒体分片的GOP首帧展示时间标签的数组元素,从中寻找与起播偏移位置最接近的首帧展示时间,找到后记录数组元素的下标,再用此下标从媒体分片的GOP起始位置标签的数组得到对应GOP的起始位置。
作为优选的实施方式,所述CDN系统还用于:向播放器反馈索引文件时,删除索引文件中包含的媒体分片的所有本发明实施例自定义的标签。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现HLS点播快速起播方法的所有方法步骤或部分方法步骤。
本发明实现上述HLS点播快速起播方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
基于同一发明构思,本申请实施例还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现HLS点播快速起播方法中的所有方法步骤或部分方法步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种HLS点播快速起播方法,其特征在于,包括以下步骤:
获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;
用户请求点播时,播放器向CDN系统请求播放HLS点播内容,CDN系统向播放器反馈索引文件,CDN系统向播放器反馈索引文件时,删除索引文件中包含的所有自定义的媒体分片的标签;播放器解析索引文件,向CDN系统请求获取第一个媒体分片;
CDN系统收到媒体内容索引文中第一个媒体分片的获取请求,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送该媒体分片的其余数据;
播放器接收媒体分片数据并缓存,当缓至媒体分片中第一个GOP末字节时,开始播放视频,并下载该媒体分片的剩余数据进行播放;
其中,用户操作播放器进度条进行拖拽播放时,播放器根据索引文件中各媒体分片的时长,计算出拖拽后的起播位置所在的媒体分片以及在该媒体分片的起播偏移位置,向CDN系统请求从计算出的该媒体分片的起播偏移位置开始播放;
CDN系统收到媒体分片的获取请求后,计算起播偏移位置在媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;以限速方式发送该媒体分片的其余数据;
播放器缓存完该GOP包含的全部媒体数据时,开始播放视频,并不间断下载该媒体分片的剩余数据进行播放。
2.如权利要求1所述的方法,其特征在于,所述索引文件包括两个自定义的媒体分片的标签,其中一个为GOP起始位置标签,用于以数组方式记录该媒体分片中的每一个GOP的起始位置值;另一个为GOP首帧的展示时间标签,用于以数组方式记录该媒体分片中的每一个GOP中首帧的展示时间值。
3.如权利要求2所述的方法,其特征在于,计算起播偏移位置在媒体分片中对应的GOP的位置,具体包括以下步骤:
CDN系统从URL获得媒体分片名称和起播偏移位置后,通过遍历该媒体分片的GOP首帧展示时间标签的数组元素,从中寻找与起播偏移位置最接近的首帧展示时间,找到后记录数组元素的下标,用此下标从媒体分片的GOP起始位置标签的数组得到对应GOP的起始位置。
4.一种HLS点播快速起播系统,其特征在于,包括预处理模块、播放器和CDN系统:
所述预处理模块用于:获取点播片库中内容文件,生成索引文件和媒体分片,注入CDN系统;
所述播放器用于:用户请求点播时,向CDN系统请求播放HLS点播内容,获取CDN系统反馈的索引文件;解析索引文件,向CDN系统请求获取第一个媒体分片;
所述CDN系统用于:收到播放HLS点播内容的请求时,向播放器反馈索引文件,向播放器反馈索引文件时,删除索引文件中包含的所有自定义的媒体分片的标签;收到媒体内容索引文中第一个媒体分片的获取请求时,以不限速方式向播放器发送该媒体分片的首字节至第一个GOP末字节的所有数据,以限速方式发送媒体分片的其余数据;
所述播放器还用于:接收媒体分片数据并缓存,当缓至媒体分片中第一个GOP末字节时,开始播放视频,并下载该媒体分片的剩余数据进行播放;
其中,所述播放器还用于:用户操作播放器进度条进行拖拽播放时,播放器根据索引文件中各媒体分片的时长,计算出拖拽后的起播位置所在的媒体分片以及在该媒体分片的起播偏移位置,向CDN系统请求从计算出的该媒体分片的起播偏移位置开始播放;
所述CDN系统还用于:收到向播放器反馈索引文件;收到媒体分片的获取请求后,计算起播偏移位置在媒体分片中对应的GOP的位置,并将该GOP包含的全部媒体数据,以不限速方式发送至播放器;以限速方式发送该媒体分片的其余数据;
播放器缓存完该GOP包含的全部媒体数据时,开始播放视频,并不间断下载该媒体分片的剩余数据进行播放。
5.如权利要求4所述的系统,其特征在于,所述索引文件包括两个自定义的媒体分片的标签,其中一个为GOP起始位置标签,用于以数组方式记录该媒体分片中的每一个GOP的起始位置值;另一个为GOP首帧的展示时间标签,用于以数组方式记录该媒体分片中的每一个GOP中首帧的展示时间值。
6.如权利要求5所述的系统,其特征在于,所述CDN系统计算起播偏移位置在媒体分片中对应的GOP的位置,具体包括以下步骤:
CDN系统从URL获得媒体分片名称和起播偏移位置后,通过遍历该媒体分片的GOP首帧展示时间标签的数组元素,从中寻找与起播偏移位置最接近的首帧展示时间,找到后记录数组元素的下标,用此下标从媒体分片的GOP起始位置标签的数组得到对应GOP的起始位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910950309.XA CN110677736B (zh) | 2019-10-08 | 2019-10-08 | 一种hls点播快速起播方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910950309.XA CN110677736B (zh) | 2019-10-08 | 2019-10-08 | 一种hls点播快速起播方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110677736A CN110677736A (zh) | 2020-01-10 |
CN110677736B true CN110677736B (zh) | 2022-11-11 |
Family
ID=69081014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910950309.XA Active CN110677736B (zh) | 2019-10-08 | 2019-10-08 | 一种hls点播快速起播方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110677736B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112533067B (zh) * | 2020-11-12 | 2022-05-31 | 烽火通信科技股份有限公司 | 一种超高清点播视频的快速起播方法与装置 |
CN115134622B (zh) * | 2022-06-29 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 视频数据对齐方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120010089A (ko) * | 2010-07-20 | 2012-02-02 | 삼성전자주식회사 | Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치 |
CN108737908B (zh) * | 2018-05-21 | 2021-11-30 | 腾讯科技(深圳)有限公司 | 一种媒体播放方法、装置及存储介质 |
CN110072122B (zh) * | 2019-04-19 | 2022-03-08 | 华为技术有限公司 | 一种视频播放方法及相关设备 |
CN110198495B (zh) * | 2019-06-28 | 2022-03-22 | 广州市百果园信息技术有限公司 | 一种视频下载和播放的方法、装置、设备和存储介质 |
-
2019
- 2019-10-08 CN CN201910950309.XA patent/CN110677736B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110677736A (zh) | 2020-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210029416A1 (en) | Manifest customization in adaptive bitrate streaming | |
US10200723B2 (en) | Converting live streaming content to video-on-demand streaming content | |
US11540020B2 (en) | Method for realizing video information preview, client and storage medium | |
NL2016051B1 (en) | Live-stream video advertisement system | |
US10771824B1 (en) | System for managing video playback using a server generated manifest/playlist | |
CN109819345B (zh) | 直播视频的处理、时移方法、视频处理装置及云存储系统 | |
US8966523B1 (en) | Advertisement insertion into media content for streaming | |
CN110677737A (zh) | 一种hls直播快速起播方法及系统 | |
US10015222B2 (en) | Systems and methods for selective retrieval of adaptive bitrate streaming media | |
US20170171279A1 (en) | Method and terminal for online playing video stream | |
WO2016187592A1 (en) | Apparatus and method for replacing conventional commercials with targeted advertisements in online live streams | |
CN109587514B (zh) | 一种视频播放方法、介质和相关装置 | |
CN110677736B (zh) | 一种hls点播快速起播方法及系统 | |
EP3793201A1 (en) | Packager for segmenter fluidity | |
WO2017185601A1 (zh) | 一种提供、下载视频的方法及设备 | |
Durak et al. | Evaluating the performance of Apple’s low-latency HLS | |
CN113727199A (zh) | 一种hls切片快速起播方法 | |
US11095699B1 (en) | Streaming media file management | |
CN111064969B (zh) | 一种流媒体数据传输方法、设备、装置和计算机存储介质 | |
US20170142179A1 (en) | Delivery of media content segments in a content delivery network | |
CA3041696C (en) | Process controller for creation of abr vod product manifests | |
CN114915806A (zh) | 视频播放的方法、装置及系统 | |
CN114025201A (zh) | 一种视频播放方法、装置、设备及存储介质 | |
CN117256136A (zh) | 用于处理备选媒体表示描述的方法、设备和计算机可读介质 | |
CN116320596A (zh) | 进度内容预览处理方法、装置及系统 |
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 |