CN108933764B - 一种实现快速起播的方法和装置 - Google Patents
一种实现快速起播的方法和装置 Download PDFInfo
- Publication number
- CN108933764B CN108933764B CN201710385426.7A CN201710385426A CN108933764B CN 108933764 B CN108933764 B CN 108933764B CN 201710385426 A CN201710385426 A CN 201710385426A CN 108933764 B CN108933764 B CN 108933764B
- Authority
- CN
- China
- Prior art keywords
- thread
- file
- video
- downloaded
- downloading
- 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
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/764—Media network packet handling at the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种实现快速起播的方法和装置,当接收到用户触发的视频播放请求,可以下载被请求视频的第一级索引文件并进行解析,获取至少一个第二级索引文件信息;创建第一线程和第二线程;选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取视频分片信息;在第一线程解析待下载文件的同时还利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。本发明相对于现有技术,无论在直播还是点播业务中,都不用等待下载完第一个第二级索引文件就可以开始下载视频分片进行播放,极大地节省了起播耗时,降低了用户的等待时间,提高了用户体验。
Description
技术领域
本发明涉及视频播放技术领域,具体涉及一种实现快速起播的方法和装置。
背景技术
目前,随着网络技术的发展,各类视频网站正成为用户观看电影、电视剧、综艺等节目等的首选,而HLS(Http Live Streaming,Http流媒体直播)是一种基于HTTP的流媒体网络传输协议,其以规范的灵活性,以及多码率见的网络自适应性,被越来越广泛的应用于视频播放业务,渐渐成为国内外OTT业务播放的主流协议。
但基于HLS协议的特点,在起播阶段有一定的特殊性:由于HLS协议将大的完整的视频,分割成了一个个小的视频分片,这些小的视频分片链接包还在不同的码率索引文件中,终端要获取这些小的分片链接进行视频分片的下载和播放,要首先进行索引文件的下载解析。在起播阶段,对索引文件的下载会有一定的耗时,尤其是时长比较长的节目,有时会切分成上千个小的分片,此时对应的索引文件也会很大,下载和解析索引文件会更加耗时。当需要播放的视频对应有多个不同码率的索引文件时,如果在起播阶段就将所有码率的索引文件下载并解析耗时会更长。
目前针对多码率片源常用起播方式是在起播阶段,根据画质偏好决定起播码率是哪一个,然后只下载符合偏好画质的某一码率的索引文件,该索引文件下载解析完成后,根据解析的分片索引下载视频分片进行起播。但是下载解析的完整流程也是有一定耗时的,尤其在时长比较长的节目中体现更为明显。这导致用户点击视频播放后,需要等待一定的时间才能看到视频播放,浪费用户的时间,大大降低了用户的视频观看体验。
发明内容
本发明实施例要解决的主要技术问题是,提供一种实现快速起播的方法和装置,解决现有技术中视频起播所需的时间长,浪费用户时间,降低用户体验的问题。
为解决上述技术问题,本发明实施例提供一种实现快速起播的方法,包括:
当接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,解析第一级索引文件获取至少一个第二级索引文件信息;第二级索引文件信息包括第二级索引文件的码率信息和下载信息;
创建第一线程和第二线程;
选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取其中的视频分片信息;视频分片信息包括视频分片的下载地址;
在第一线程解析待下载文件的过程中,利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。
为解决上述技术问题,本发明实施例还提供一种实现快速起播的装置,包括:
第一下载解析模块,用于当接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,解析第一级索引文件获取至少一个第二级索引文件信息;第二级索引文件信息包括第二级索引文件的码率信息和下载信息;
创建模块,用于创建第一线程和第二线程;
第二下载解析模块,用于选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取其中的视频分片信息;视频分片信息包括视频分片的下载地址;
第三下载解析模块,用于在第一线程解析待下载文件的过程中,利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。
本发明实施例公开了一种实现快速起播的方法和装置,当接收到用户触发的视频播放请求,可以下载被请求视频的第一级索引文件并进行解析,获取至少一个第二级索引文件信息;创建第一线程和第二线程;选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取视频分片信息;在第一线程解析待下载文件的同时还利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。本发明相对于现有技术,无论是在直播还是点播业务中,都不用等待下载完第一个二级索引文件就可以开始下载视频分片进行播放,极大地节省了起播耗时,降低了用户的等待时间,提高了用户体验。
附图说明
图1为本发明实施例一提供的一种实现快速起播的方法的流程图;
图2为本发明在HLS协议下的第一级索引文件、第二级索引文件、视频分片的关系示意图;
图3为本发明实施例一提供的一种实现点播业务的快速起播方法的流程图;
图4为本发明实施例一提供的一种实现直播业务的快速起播方法的流程图;
图5为本发明实施例二提供的一种实现快速起播的装置的结构图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
实施例一:
参见图1,本实施例示出一种实现快速起播的方法,可以在接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,然后解析该索引文件确定第一级索引文件中包含有多少个第二级索引文件,其中第一级索引文件中包含的第二级索引文件的码率是各不相同的,码率高的第二级索引文件对应的视频画质较好,而码率低的第二级索引文件对应的视频则画质较差。在解析完第一级索引文件后,同时创建两个线程-第一线程和第二线程,选择一个第二级索引文件作为待下载文件进行下载,选择的依据可以是预设码率条件,第一线程下载符合预设码率条件的待下载文件,并在下载的过程中就直接解析该待下载文件以获取视频分片信息,而第二线程则在第一线程解析第二级索引文件时,不断获取第一线程解析出的视频分片信息,下载对应的视频分片。由此,不用等待第二级索引文件下载完全,就可以开始下载视频分片,节省了起播耗时。
如图1所示,本实施例的实现快速起播的方法包括:
S101、当接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,解析第一级索引文件获取第二级索引文件信息;第二级索引文件信息包括第二级索引文件的码率信息和下载信息;
S102、创建第一线程和第二线程;
S103、选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取其中的视频分片信息;其中,视频分片信息包括视频分片的下载地址;
S104、在第一线程解析待下载文件的过程中,利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。
本实施例的上述步骤可以在任何具有视频播放功能的终端上实现,包括但不限于移动终端如手机、平板电脑、笔记本电脑,和固定终端如台式电脑等终端。
本实施例的上述步骤尤其适用于播放协议是HLS协议的视频播放业务。HLS协议要求视频的封装格式是TS(Transport Stream),视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3,除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)。
可以预见,当用户触发视频播放请求时,终端系统可以获取被请求视频的下载链接(下载地址),所以在S101中,终端是根据被请求视频的下载链接下载被请求视频文件的第一级索引文件。
本实施例中是利用多线程将对第二级索引文件的下载和解析以及对视频分片的下载和解析分开进行,以达到无需第二级索引文件下载完全就可以下载视频分片的目的。在一个实施例中,第一线程和第二线程可以是在不同的时候创建,如第二线程的建立时间可以是在第一线程从待下载文件中解析出视频分片之后,或者是在第一线程开始下载并解析待下载文件时。
图2是第一级索引文件,第二级索引文件和视频分片的关系示意图。第一级索引文件中包含了多个第二级索引文件的信息(包括第二级索引文件的下载链接),第二级索引文件中包含了多个视频分片信息(包括多个视频分片下载链接,分片时长等等)。在S101中,下载的第一级索引文件就是图2中的index file(也即上述的m3u8文件),该第一级索引文件中包含了一个或多个第二级文件,若第二级索引文件的个数是多个,则各第二级索引文件的码率一般是不同的。如图2所示第一级索引文件index file包含三个码率不同的第二级索引文件Alternate-A index file、Alternate-B index file、Alternate-C index file。步骤S101就是从服务器中根据被请求视频的下载链接下载第一级索引文件(图2中的indexfile),然后解析该第一级索引文件,确定该第一级索引文件中第二级索引文信息,如第二级索引文的个数,各个第二级索引文件的码率信息(如图2中的Alternate-A index file、Alternate-B index file、Alternate-C index file的码率),各个第二级索引文件的下载信息(下载地址,下载链接等)等等。
在确定各个第二级索引文件的码率信息后,就可以选择一个第二级索引文件进行下载。在选择的时候,可以根据预设码率条件进行选择,该预设码率条件包括但不限于当前视频播放的画质偏好,该画质偏好可以是视频网站默认的画质也可以是用户实时设置的画质,此时,在S103中,是从多个第二级索引文件中选择符合当前视频播放的画质偏好的文件作为待下载文件;另外,预设码率条件还可以是系统根据当前的网络情况实时设置的画质偏好,此时在S103中,可以先根据当前的网络情况设置视频播放的画质偏好,然后从多个第二级索引文件中选择符合该画质偏好的文件作为待下载文件。在S103中,利用第一线程下载待下载文件包括:利用第一线程根据待下载文件的链接下载该待下载文件。本实施例中,选择待下载文件的步骤可以由终端上的系统完成,将选择结果传送给第一线程;也可以由第一线程完成选择待下载文件的步骤。
为了降低起播时间,降低用户等待视频的时间,本实施例中的第一线程下载第二级索引文件的同时进行第二级索引文件的解析,以获取第二级索引文件中的视频分片信息,该视频分频信息包括视频分片的下载信息,如图2中的TS分片的下载链接。当S103中解析出视频分片信息,在S104中第二线程可以开始进行视频分片的下载。由于第二级索引文件是边下载边解析,所以可以预见,第一线程解析出的视频分片信息的数量是不断增多的,这就需要第二线程能够不断地获取第一线程解析出的视频分片信息,然后下载视频分片。
其中第二线程在获取视频分片信息时,可以先判断视频分片信息是否是新解析出来的视频分片信息,是则根据该视频分片信息下载视频分片。在一个实施例中,第二线程可以通过主动向第一线程请求视频分片信息的方式获取视频分片信息,或者,第二线程通过接收第一线程发送的视频信息的方式获取视频分片信息。而第二线程不断地获取解析出的视频分片信息方式可以通过以下的方式实现:第二线程按照预设时间间隔不断地向第一线程请求视频分片信息;或者第一线程按照预设时间间隔不断地向第二线程发送视频分片信息;或者第一线程在解析出新的视频分片信息后就主动向第二线程发送视频分片信息。
考虑到若是第二线程每一次都获取第一线程解析出的所有视频分片信息,会导致一些视频分片信息的重复获取,浪费时间和资源。进一步的,在一实施例中,第二线程每次获取的视频分片信息都是自身未获取过的视频分片信息。
在一个实施例中,第二线程开始获取分片信息的时间可以由第一线程对视频分片的解析情况决定,例如当第一线程解析出的视频分片信息的数量超过一个时,才利用第二线程获取视频分片信息下载视频分片。进一步的,S104中利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片包括:在第一线程解析出的视频分片信息的数量超出预设阈值(如一个)时,利用第二线程获取解析出的视频分片信息并下载对应的视频分片;在第二线程下载视频分片的过程中,查询第一线程是否解析出第二线程未下载的新视频分片信息,若有,则利用第二线程获取新视频分片信息,下载对应的视频分片。其中,查询第一线程中是否有新视频分片信息可以由第二线程实现,也可以由第一线程实现,或者是由终端的系统实现,本实施例对此没有限制。
本实施例中的视频播放包括但不限于点播业务和直播业务,当视频播放属于点播业务时,只要客户端在播放视频时不进行比特率切换,下载一次待下载文件就可以得到一个画质对应的所有ts文件的下载地址。但是在直播模式下略有不同,因为播放视频的同时,新的ts文件(视频分片)也在被生成中,所以直播过程中实际上是下载一次二级index文件,然后下载对应的ts文件,再下载二级index文件(这个时候这个二级index文件已经被重写,记录了新生成的ts文件的下载地址),再下载新ts文件,如此反复进行播放的过程。所以本实施例中,当视频播放是直播业务时,在第一线程下载完待下载文件后还包括:查询待下载文件是否有更新,若有,则利用第一线程下载更新后的待下载文件,并继续解析待下载文件;当第一线程解析出第二线程未下载的新视频分片信息时,利用第二线程获取新视频分片信息,下载对应的视频分片。
对于直播和点播业务而言,其在播放的过程中都可能会遇到视频画质的切换,例如客户端在网络带宽变化的时候平滑切换到和带宽匹配的视频流,或者用户主动切换当前视频的分辨率等等。此时若是才开始下载对应码率的第二级索引文件,然后进行第二级索引文件的解析和视频分片下载等操作无疑会浪费很多的时间,导致视频卡顿现象严重,造成用户放弃观看视频的现象,所以为了应对视频播放过程中,在客户端可能发生的画质切换,本实施例的方法还包括:在下载待下载文件时,利用第一线程同时下载其他码率的第二级索引文件;其他码率的第二级索引文件用于在视频播放器需要切换画质的时候,为视频播放提供视频分片下载需要的信息;或者,在第一线程下载待下载文件时,创建第三线程下载其他码率的第二级索引文件;其他码率的第二级索引文件用于在视频播放器需要切换画质的时候,为视频播放提供视频分片下载需要的信息。
可以预见的是,当客户端上的视频有切换画质的需求时,第一线程或第三线程可以直接从下载的其他码率的第二级索引文件中,选择符合切换后画质的第二级索引文件进行解析,第二线程则根据当前播放的视频分片的分片序号,从第一线程解析出的视频分片信息中,选择当前播放的视频分片之后的视频分片对应的视频分片信息进行获取,然后下载对应的视频分片。例如当前播放的视频是根据图2中Alternate-A index file的视频分片信息下载得到的视频分片,当前播放的视频分片的序号是5,而用户切换画质后,需要播放的是Alternate-B index file对应的视频,则第一线程中断解析Alternate-A indexfile,开始解析Alternate-B index file,第二线程从第一线程解析的视频分片信息中获取第5个视频分片信息之后的视频分片信息,进行视频分片的下载。
当视频播放业务是点播的时候,很多的客户端都会有绘制进度条的要求,现有技术中,一般是在第二级索引文件下载完全后根据每个视频分片信息携带的视频分片的时长计算得到节目长度。为了在起播时能够迅速地绘制进度条,使得用户对视频长度有更快速的了解,本实施例的方法还包括,当视频播放是点播业务时,在解析第一级索引文件时获取所述第一级索引文中新增的扩展字段,根据所述扩展字段的内容获取节目时长,该节目时长可以用于在点播业务起播时绘制进度条;在直播业务中,节目时长为0;在点播业务中,节目时长为真实节目时长。
其中,在第一级索引文件中增加扩展字段的步骤可以在存储第一级索引文件的服务器上实现,由服务器在第一级索引文件中增加扩展字段,并在扩展字段中写入表示第一级索引文件对应的视频时长的信息。客户端在第一线程获取到节目时长后,可以直接根据该节目时长在播放页面上绘制进度条。
下面结合图3对点播业务的快速起播方法进行示例说明,其中将用于下载第二级索引文件的第一线程记为thread-index,将用于下载视频分片的第二线程记为thread-stream。
S301、服务器在第一级索引文件中增加扩展字段,该扩展字段用于表示节目时长;
该扩展字段可以是如#EXT-TOTALDURATION的字段,其中,在直播业务中,扩展字段表示的节目时长可以为0,点播业务中,扩展字段表示的节目时长为真实节目时长,该节目时长可以是服务器对某一个第二级索引文件包含的视频分片信息中的分片时长进行统计得到。
S302、终端接收视频播放请求,下载被请求视频的第一级索引文件,解析该第一级索引文件获取到第二级索引文件信息和节目时长;进入S303和S304
其中,第二级索引文件信息包括第二级索引文件的个数,各个第二级索引文件的下载地址。
S303、根据获取到的节目时长在视频播放页面绘制进度条;
S304、thread-index根据当前的画质偏好,选择一个第二级索引文件作为待下载文件进行下载,进入S305和步骤S310;
S305、thread-index边下载待下载文件边进行待下载文件的解析;
S306、当thread-index解析到超过1个视频分片信息时,将解析出的完整的视频分片信息通知给thread-stream;
S307、thread-stream根据视频分片信息开始下载视频分片;
S308,thread-stream在下载视频分片时,查询thread-index是否解析出新分片信息;若是,则进入S307,否则进入S309;
S309、判断被请求视频的视频分片是否下载完全,若是,则结束当前下载,否则返回S308。
S310、thread-index在下载待下载文件时,对其他码率的第二级索引文件也进行下载。
下面,结合图4,对于不要求起播绘制进度条的播放业务:如直播业务的快速起播方法进行示例说明,其中将用于下载第二级索引文件的第一线程记为thread-index,将用于下载视频分片的第二线程记为thread-stream。
S401、端接收视频播放请求,下载被请求视频的第一级索引文件,解析该第一级索引文件获取到第二级索引文件信息。
其中,第二级索引文件信息包括第二级索引文件的个数,各个第二级索引文件的下载地址和码率信息。
S402、thread-index根据当前的画质偏好,选择一个第二级索引文件作为待下载文件进行下载,进入S403和步骤S404。
S403、thread-index在下载待下载文件时,对其他码率的第二级索引文件也进行下载。
S404、thread-index边下载待下载文件边进行待下载文件的解析。
S405、当thread-index解析到超过1个视频分片信息时,将解析出的完整的视频分片信息通知给thread-stream。其中,视频分片信息包括视频分片的下载地址。
S406、thread-stream根据视频分片信息开始下载视频分片。
S407,thread-stream在下载视频分片时,查询thread-index是否解析出新视频分片信息;若是,则返回S406,否则进入S408。
其中,新视频分片信息是thread-stream未获取过的视频分片信息。
S408、thread-index查询服务器中的待下载文件是否有更新,若有,则进入S409,否则返回S407;
S409、thread-index下载更新后的待下载文件,解析出视频分片信息,thread-stream获取自身未获取过的视频分片信息,下载视频分片;
S410、判断被请求视频的视频分片是否下载完全,若是,则结束当前下载,否则返回S407。
采用本实施例的实现快速起播的方法,当接收到用户触发的视频播放请求时,可以下载被请求视频的第一级索引文件并进行解析,获取至少一个第二级索引文件信息;创建第一线程和第二线程;选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取其中的视频分片信息;在第一线程解析待下载文件的过程中,同时还利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。本实施例中利用多线程同时进行第二级索引文件和视频分片的下载,与传统的基于HLS协议起播的策略相比,本实施例无论是在直播还是点播业务中,都不用等待下载完第一个第二级索引文件就可以开始下载视频分片进行播放,极大地节省了起播耗时,提高用户体验。
进一步的,因为在点播业务中第二级索引文件大,在第二级索引文件下载完全后通过各个视频分片时长计算出节目时长,无疑会导致进度条绘制需要的时间过长,而本实施例中,因为在第一级索引文件中就获取了节目时长,所以在起播时就可以快速地绘制进度条,在点播业务中优势体现更为明显。
实施例二:
如图5所示,本实施例的实现快速起播的装置包括:
第一下载解析模块51,用于当接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,解析第一级索引文件获取第二级索引文件信息;第二级索引文件信息包括第二级索引文件的码率信息和下载信息;
创建模块52,用于创建第一线程和第二线程;
第二下载解析模块53,用于选择符合预设码率条件的第二级索引文件作为待下载文件,利用第一线程下载待下载文件,并在下载的过程中解析待下载文件获取其中的视频分片信息;视频分片信息包括视频分片的下载地址;
第三下载解析模块54,用于在第一线程解析待下载文件的过程中,利用第二线程不断获取第一线程解析出的视频分片信息,并根据视频分片信息下载对应的视频分片。
本实施例的实现快速起播的装置包括但不限于移动终端如手机、平板电脑、笔记本电脑,和固定终端如台式电脑等。
可以预见,当用户触发视频播放请求时,第一下载解析模块51可以获取被请求视频的下载链接(下载地址),根据被请求视频的下载链接下载被请求视频文件的第一级索引文件。
本实施例中是利用多线程将对第二级索引文件的下载和解析以及对视频分片的下载和解析分开进行,以达到无需第二级索引文件下载完全就可以下载视频分片的目的。在一个实施例中,第一线程和第二线程可以是在不同的时候创建,如第二线程的建立时间可以是在第一线程从待下载文件中解析出视频分片之后,或者是在第一线程开始下载并解析待下载文件时。
本实施例尤其适用于播放协议是HLS协议的视频播放业务。HLS协议下第一级索引文件,第二级索引文件和视频分片的关系如图2所示。第一级索引文件中包含了多个第二级索引文件的信息(包括第二级索引文件的下载链接),第二级索引文件中包含了多个视频分片信息(包括多个视频分片下载链接,分片时长等等)。第一下载解析模块51下载的第一级索引文件就是图2中的index file(也即上述的m3u8文件),该第一级索引文件一般包含多个码率不同的第二级索引文件,如图2所示第一级索引文件index file包含三个码率不同的第二级索引文件Alternate-A index file、Alternate-B index file、Alternate-Cindex file。第一下载解析模块51解析该第一级索引文件,确定该第一级索引文件中第二级索引文信息,如第二级索引文的个数,各个第二级索引文件的码率信息(如图2中的Alternate-A index file、Alternate-B index file、Alternate-C index file的码率),各个第二级索引文件的下载信息(下载地址,下载链接等)等等。
在确定各个第二级索引文件的码率信息后,第二下载解析模块53就可以选择一个第二级索引文件进行下载。在选择的时候,第二下载解析模块53可以根据预设码率条件进行选择,该预设码率条件包括但不限于当前视频播放的画质偏好,该画质偏好可以是视频网站默认的画质也可以是用户实时设置的画质,此时,第二下载解析模块53是从多个第二级索引文件中选择符合当前视频播放的画质偏好的文件作为待下载文件;另外,预设码率条件还可以是系统根据当前的网络情况实时设置的画质偏好,此时第二下载解析模块53可以先根据当前的网络情况设置视频播放的画质偏好,然后从多个第二级索引文件中选择符合该画质偏好的文件作为待下载文件。第二下载解析模块53利用第一线程下载待下载文件包括:利用第一线程根据待下载文件的链接下载该待下载文件。
为了降低起播时间,降低用户等待视频的时间,本实施例中的第二下载解析模块53利用第一线程下载第二级索引文件的同时,可以利用第一线程进行第二级索引文件的解析,以获取第二级索引文件中的视频分片信息,该视频分频信息包括视频分片的下载信息,如图2中的TS分片的下载地址。当第二下载解析模块53解析出视频分片信息,第三下载解析模块54可以利用第二线程开始进行视频分片的下载。由于第二级索引文件是边下载边解析,所以可以预见,第二下载解析模块53解析出的视频分片信息的数量是不断增多的,这就需要第三下载解析模块54能够利用第二线程不断地获取第一线程解析出的视频分片信息,然后下载视频分片。
其中第三下载解析模块54利用第二线程在获取视频分片信息时,可以先判断视频分片信息是否是新解析出来的视频分片信息,是则根据该视频分片信息下载视频分片。在一个实施例中,第三下载解析模块54可以利用第二线程通过主动向第一线程请求视频分片信息的方式获取视频分片信息,或者,第三下载解析模块54利用第二线程通过接收第一线程发送的视频信息的方式获取视频分片信息。而第三下载解析模块54利用第二线程不断地获取解析出的视频分片信息可以通过以下的方式实现:利用第二线程按照预设时间间隔不断地向第一线程请求视频分片信息;或者接收第一线程按照预设时间间隔不断地向第二线程发送的视频分片信息;或者接收第一线程在解析出新的视频分片信息后主动向第二线程发送的视频分片信息。
考虑到若是第二线程每一次都获取第一线程解析出的所有视频分片信息,会导致一些视频分片信息的重复获取,浪费时间和资源。进一步的,在一实施例中,第三下载解析模块54每次利用第二线程获取的视频分片信息都是自身未获取过的视频分片信息。
在一个实施例中,第三下载解析模块54利用第二线程开始获取分片信息的时间可以由第一线程对视频分片的解析情况决定,例如当第一线程解析出的视频分片信息的数量超过一个时,才利用第二线程获取视频分片信息下载视频分片。进一步的,第三下载解析模块54,用于在第一线程解析出的视频分片信息的数量超出预设阈值(如一个)时,利用第二线程获取解析出的视频分片信息并下载对应的视频分片;在第二线程下载视频分片的过程中,查询第一线程是否解析出第二线程未下载的新视频分片信息,若有,则利用第二线程获取新视频分片信息,下载对应的视频分片。
本实施例中的视频播放包括但不限于点播业务和直播业务,当视频播放属于点播业务时,只要客户端在播放视频时不进行比特率切换,下载一次待下载文件就可以得到一个画质对应的所有ts文件的下载地址。但是在直播模式下略有不同,因为播放视频的同时,新的ts文件(视频分片)也在被生成中,所以直播过程中实际上是下载一次二级index文件,然后下载对应的ts文件,再下载二级index文件(这个时候这个二级index文件已经被重写,记录了新生成的ts文件的下载地址),再下载新ts文件,如此反复进行播放的过程。
所以本实施例中,第二下载解析模块,还用于当视频播放是直播业务时,在第一线程下载完待下载文件后,查询(服务器中的)待下载文件是否有更新,若有,则利用第一线程下载更新后的待下载文件,并继续解析待下载文件;当第一线程解析出第二线程未下载的新视频分片信息时,利用第二线程获取新视频分片信息,下载对应的视频分片。
对于直播和点播业务而言,其在播放的过程中都可能会遇到视频画质的切换,例如客户端在网络带宽变化的时候平滑切换到和带宽匹配的视频流,或者用户主动切换当前视频的分辨率等等。此时若是才开始下载对应码率的第二级索引文件,然后进行第二级索引文件的解析和视频分片下载等操作无疑会浪费很多的时间,导致视频卡顿现象严重,造成用户放弃观看视频的现象,所以为了应对视频播放过程中,在客户端可能发生的画质切换,本实施例的第二下载解析模块53,还用于在下载待下载文件时,利用第一线程同时下载其他码率的第二级索引文件;其他码率的第二级索引文件用于视频播放器需要切换画质的时候,为视频播放提供视频分片下载需要的信息。或者,创建模块52,还用于在第一线程下载待下载文件时,创建第三线程第二下载解析模块53,还用于在第一线程下载待下载文件时,利用第三线程下载其他码率的第二级索引文件;其他码率的第二级索引文件用于视频播放器需要切换画质的时候,为视频播放提供视频分片下载需要的信息。
可以预见的是,当客户端上的视频有切换画质的需求时,第二下载解析模块53可以利用第一线程或第三线程直接从下载的其他码率的第二级索引文件中,选择符合切换后画质的第二级索引文件进行解析;第三下载解析模块54则可以利用第二线程根据当前播放的视频分片的分片序号,从第一线程解析出的视频分片信息中,选择当前播放的视频分片之后的视频分片对应的视频分片信息进行获取,然后下载对应的视频分片。
当视频播放业务是点播的时候,很多的客户端都会有绘制进度条的要求,现有技术中,一般是在第二级索引文件下载完全后根据每个视频分片信息携带的视频分片的时长计算得到节目长度。为了在起播时能够迅速地绘制进度条,使得用户对视频长度有更快速的了解,本实施例中,第一下载解析模块,还用于当视频播放是点播业务时,在解析第一级索引文件时获取第一级索引文中新增的扩展字段,根据扩展字段的内容获取节目时长;其中,该节目时长用于在点播业务起播时绘制进度条;在直播业务中,节目时长为0;在点播业务中,节目时长为真实节目时长。
其中,在第一级索引文件中增加扩展字段的步骤可以在存储第一级索引文件的服务器上实现,由服务器在第一级索引文件中增加扩展字段,并在扩展字段中写入表示第一级索引文件对应的视频时长的信息。客户端在第一线程获取到节目时长后,可以直接根据该节目时长在播放页面上绘制进度条。
采用本实施例的实现快速起播的装置,可以利用多线程同时进行第二级索引文件和视频分片的下载,与传统的基于HLS协议起播的策略相比,本实施例无论是在直播还是点播业务中,都不用等待下载完第一个第二级索引文件就可以开始下载视频分片进行播放,极大地节省了起播耗时,提高用户体验。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种实现快速起播的方法,其特征在于,包括:
当接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,解析所述第一级索引文件获取至少一个第二级索引文件信息;所述第二级索引文件信息包括第二级索引文件的码率信息和下载信息;
创建第一线程和第二线程;
选择符合预设码率条件的第二级索引文件作为待下载文件,利用所述第一线程下载所述待下载文件,并在下载的过程中解析所述待下载文件获取其中的视频分片信息;所述视频分片信息包括视频分片的下载地址;
在所述第一线程解析所述待下载文件的过程中,利用所述第二线程不断获取所述第一线程解析出的所述视频分片信息,并根据所述视频分片信息下载对应的视频分片。
2.如权利要求1所述的实现快速起播的方法,其特征在于,所述利用所述第二线程不断获取所述第一线程解析出的所述视频分片信息,并根据所述视频分片信息下载对应的视频分片包括:
在所述第一线程解析出的所述视频分片信息的数量超出预设阈值时,利用所述第二线程获取解析出的所述视频分片信息并下载对应的视频分片;
在所述第二线程下载所述视频分片的过程中,查询所述第一线程是否解析出所述第二线程未下载的新视频分片信息,若有,则利用所述第二线程获取所述新视频分片信息,下载对应的视频分片。
3.如权利要求1所述的实现快速起播的方法,其特征在于,当所述视频播放是直播业务时,在所述第一线程下载完所述待下载文件后还包括:
查询所述待下载文件是否有更新,若有,则利用所述第一线程下载更新后的待下载文件,并继续解析所述待下载文件;
当所述第一线程解析出所述第二线程未下载的新视频分片信息时,利用所述第二线程获取所述新视频分片信息,下载对应的视频分片。
4.如权利要求1-3任一项所述的实现快速起播的方法,其特征在于,还包括:
当所述视频播放是点播业务时,在解析所述第一级索引文件时获取所述第一级索引文中新增的扩展字段,根据所述扩展字段的内容获取节目时长;所述节目时长用于在所述点播业务起播时绘制进度条;在直播业务中,所述节目时长为0;在点播业务中,所述节目时长为真实节目时长。
5.如权利要求1-3任一项所述的实现快速起播的方法,其特征在于,还包括:在下载所述待下载文件时,利用所述第一线程同时下载其他码率的第二级索引文件;所述其他码率的第二级索引文件用于在需要切换画质的时候,为所述视频播放提供视频分片下载需要的信息;
或者,在所述第一线程下载所述待下载文件时,创建第三线程下载其他码率的第二级索引文件;所述其他码率的第二级索引文件用于在需要切换画质的时候,为视频播放提供视频分片下载需要的信息。
6.一种实现快速起播的装置,其特征在于,包括:
第一下载解析模块,用于当接收到用户触发的视频播放请求时,下载被请求视频的第一级索引文件,解析所述第一级索引文件获取至少一个第二级索引文件信息;所述第二级索引文件信息包括第二级索引文件的码率信息和下载信息;
创建模块,用于创建第一线程和第二线程;
第二下载解析模块,用于选择符合预设码率条件的第二级索引文件作为待下载文件,利用所述第一线程下载所述待下载文件,并在下载的过程中解析所述待下载文件获取其中的视频分片信息;所述视频分片信息包括视频分片的下载地址;
第三下载解析模块,用于在所述第一线程解析所述待下载文件的过程中,利用所述第二线程不断获取所述第一线程解析出的所述视频分片信息,并根据所述视频分片信息下载对应的视频分片。
7.如权利要求6所述的实现快速起播的装置,其特征在于,所述第三下载解析模块,用于在所述第一线程解析出的所述视频分片信息的数量超出预设阈值时,利用所述第二线程获取解析出的所述视频分片信息并下载对应的视频分片;在所述第二线程下载所述视频分片的过程中,查询所述第一线程是否解析出所述第二线程未下载的新视频分片信息,若有,则利用所述第二线程获取所述新视频分片信息,下载对应的视频分片。
8.如权利要求6所述的实现快速起播的装置,其特征在于,所述第二下载解析模块,还用于当所述视频播放是直播业务时,在所述第一线程下载完所述待下载文件后,查询所述待下载文件是否有更新,若有,则利用所述第一线程下载更新后的待下载文件,并继续解析所述待下载文件;所述第三下载解析模块,还用于当所述第一线程解析出所述第二线程未下载的新视频分片信息时,利用所述第二线程获取所述新视频分片信息,下载对应的视频分片。
9.如权利要求6-8任一项所述的实现快速起播的装置,其特征在于,所述第一下载解析模块,还用于当所述视频播放是点播业务时,在解析所述第一级索引文件时获取所述第一级索引文中新增的扩展字段,根据所述扩展字段的内容获取节目时长;所述节目时长用于在所述点播业务在起播时绘制进度条;所述节目时长是在所述第一级索引文件中增加的扩展字段表示的内容;在直播业务中,所述节目时长为0;在点播业务中,所述节目时长为真实节目时长。
10.如权利要求6-8任一项所述的实现快速起播的装置,其特征在于,所述第二下载解析模块,还用于在下载所述待下载文件时,利用所述第一线程同时下载其他码率的第二级索引文件;所述其他码率的第二级索引文件用于在需要切换画质的时候,为所述视频播放提供视频分片下载需要的信息;
或者,所述创建模块,还用于在所述第一线程下载所述待下载文件时,创建第三线程;所述第二下载解析模块,还用于在所述第一线程下载所述待下载文件时,利用所述第三线程下载其他码率的第二级索引文件;所述其他码率的第二级索引文件用于在需要切换画质的时候,为视频播放提供视频分片下载需要的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710385426.7A CN108933764B (zh) | 2017-05-26 | 2017-05-26 | 一种实现快速起播的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710385426.7A CN108933764B (zh) | 2017-05-26 | 2017-05-26 | 一种实现快速起播的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933764A CN108933764A (zh) | 2018-12-04 |
CN108933764B true CN108933764B (zh) | 2022-04-22 |
Family
ID=64450492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710385426.7A Active CN108933764B (zh) | 2017-05-26 | 2017-05-26 | 一种实现快速起播的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108933764B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109729386B (zh) * | 2019-01-03 | 2021-06-15 | 深圳市网心科技有限公司 | 一种视频文件启播方法、系统及电子设备和存储介质 |
CN111526377B (zh) * | 2019-02-01 | 2022-07-05 | 广州虎牙信息科技有限公司 | 拉流方法及装置 |
CN110072122B (zh) * | 2019-04-19 | 2022-03-08 | 华为技术有限公司 | 一种视频播放方法及相关设备 |
CN111935535B (zh) * | 2019-05-13 | 2022-06-17 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、终端设备及计算机存储介质 |
CN113825033B (zh) * | 2020-06-19 | 2023-07-04 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机存储介质 |
CN112333560B (zh) * | 2020-08-25 | 2024-07-05 | 深圳Tcl新技术有限公司 | 网页视频解析播放方法、装置、设备及可读存储介质 |
CN114697746A (zh) * | 2020-12-28 | 2022-07-01 | 北京金山云网络技术有限公司 | 视频启播方法、装置、电子设备及系统 |
CN114666627A (zh) * | 2022-03-01 | 2022-06-24 | 深圳市博安智控科技有限公司 | 一种流媒体视频预加载的方法、装置、电子设备以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088620A (zh) * | 2010-12-01 | 2011-06-08 | 中兴通讯股份有限公司 | 一种内容分发网络中媒体文件下载方法及客户端 |
CN104519372A (zh) * | 2014-12-19 | 2015-04-15 | 深圳市九洲电器有限公司 | 一种流媒体播放的切换方法和系统 |
CN105872721A (zh) * | 2015-12-14 | 2016-08-17 | 乐视云计算有限公司 | 起播速度的处理方法及装置 |
CN105898535A (zh) * | 2015-12-30 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 提高起播速度的方法、视频播放器及电子装置 |
CN105915489A (zh) * | 2015-11-09 | 2016-08-31 | 乐视致新电子科技(天津)有限公司 | 针对hls协议栈在网络抖动时的优化实现方法和装置 |
CN106658226A (zh) * | 2015-10-28 | 2017-05-10 | 中兴通讯股份有限公司 | 一种播放方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020032803A (ko) * | 2000-10-27 | 2002-05-04 | 구자홍 | 스트리밍 서비스를 위한 파일 구조 |
US20130091409A1 (en) * | 2011-10-07 | 2013-04-11 | Agile Insights, Llc | Method and system for dynamic assembly of multimedia presentation threads |
US10503773B2 (en) * | 2014-04-07 | 2019-12-10 | Sony Corporation | Tagging of documents and other resources to enhance their searchability |
-
2017
- 2017-05-26 CN CN201710385426.7A patent/CN108933764B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088620A (zh) * | 2010-12-01 | 2011-06-08 | 中兴通讯股份有限公司 | 一种内容分发网络中媒体文件下载方法及客户端 |
CN104519372A (zh) * | 2014-12-19 | 2015-04-15 | 深圳市九洲电器有限公司 | 一种流媒体播放的切换方法和系统 |
CN106658226A (zh) * | 2015-10-28 | 2017-05-10 | 中兴通讯股份有限公司 | 一种播放方法及装置 |
CN105915489A (zh) * | 2015-11-09 | 2016-08-31 | 乐视致新电子科技(天津)有限公司 | 针对hls协议栈在网络抖动时的优化实现方法和装置 |
CN105872721A (zh) * | 2015-12-14 | 2016-08-17 | 乐视云计算有限公司 | 起播速度的处理方法及装置 |
CN105898535A (zh) * | 2015-12-30 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 提高起播速度的方法、视频播放器及电子装置 |
Non-Patent Citations (1)
Title |
---|
《基于HLS的移动流媒体业务用户感知评估方法探讨》;冉萌等;《 邮电设计技术》;20140920;正文1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108933764A (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108933764B (zh) | 一种实现快速起播的方法和装置 | |
US9344517B2 (en) | Downloading and adaptive streaming of multimedia content to a device with cache assist | |
CN114727134B (zh) | 中断经不可侵犯清单协议提供的流传输内容的系统和方法 | |
CN105052107B (zh) | 使用质量信息进行媒体内容自适应传输 | |
EP2490445B1 (en) | Method, terminal and server for implementing trickplay | |
CN110933517B (zh) | 码率切换方法、客户端和计算机可读存储介质 | |
CN110677727B (zh) | 音视频播放方法、装置、电子设备及存储介质 | |
US11711587B2 (en) | Using manifest files to determine events in content items | |
CN108063769B (zh) | 一种内容服务的实现方法、装置及内容分发网络节点 | |
EP2938091B1 (en) | Method and device for receiving and sending media file and system | |
US20170245022A1 (en) | Splicing method and splicing system for http live streaming media fragment | |
KR101317028B1 (ko) | 모바일 장치를 위한 미디어 콘텐츠 스위칭 방법 | |
WO2017071604A1 (zh) | 一种播放方法、装置及存储介质 | |
CN105025351A (zh) | 流媒体播放器缓冲的方法及装置 | |
EP2493191B1 (en) | Method, device and system for realizing hierarchically requesting content in http streaming system | |
US9356985B2 (en) | Streaming video to cellular phones | |
US20160294903A1 (en) | Method and device for pushing resources to mobile communication terminal by smart television | |
US20210320957A1 (en) | Method of requesting video, computing device, and computer-program product | |
CN107690093B (zh) | 一种视频播放方法及装置 | |
US20150268808A1 (en) | Method, Device and System for Multi-Speed Playing | |
CN112243158B (zh) | 媒体文件处理方法、装置、计算机可读介质及电子设备 | |
WO2020068834A1 (en) | Systems and methods for displaying a live video stream in a graphical user interface | |
CN107040505B (zh) | 媒体数据传输方法及装置 | |
US20170054780A1 (en) | Real-time file generation and delivery |
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 |