CN112954431A - 视频播放方法、装置、视频播放设备及可读存储介质 - Google Patents
视频播放方法、装置、视频播放设备及可读存储介质 Download PDFInfo
- Publication number
- CN112954431A CN112954431A CN202110126894.9A CN202110126894A CN112954431A CN 112954431 A CN112954431 A CN 112954431A CN 202110126894 A CN202110126894 A CN 202110126894A CN 112954431 A CN112954431 A CN 112954431A
- Authority
- CN
- China
- Prior art keywords
- video
- playing
- playing data
- data
- time stamp
- 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.)
- Pending
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/41—Structure of client; Structure of client peripherals
- H04N21/426—Internal components of the client ; Characteristics thereof
-
- 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/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/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Television Signal Processing For Recording (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请实施例提供了视频播放方法、装置、视频播放设备及计算机可读存储介质,该方法包括:在接收到对第一视频的播放指令后,获取并缓存第一视频的播放数据,调用HTML5播放器基于缓存的第一视频的播放数据对第一视频进行播放。当调用HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据。然后修改缓存的第二视频的播放数据对应的时间戳,以使第二视频的播放数据对应的时间戳与第一视频的播放数据对应的时间戳连续,调用HTML5播放器持续基于已缓存的播放数据进行视频播放。可以避免对多个视频进行连续播放的过程中出现“黑场”现象,提高用户观影体验。
Description
技术领域
本申请涉及视频处理技术领域,特别是涉及视频播放方法、装置、视频播放设备及计算机可读存储介质。
背景技术
目前,用户在观看视频时,常常将视频设置为连续播放。例如,用户在观看电视剧时将视频设置为连续播放。这样,可以在播放完一集电视剧之后自动播放下一集电视剧。
目前视频播放通常通过HTML5播放器实现,当需要播放一个视频时,HTML5播放器从视频服务器获取该视频并对该视频进行播放。当需要播放下一个视频时,HTML5播放器从视频服务器获取下一个视频并对下一个视频进行播放。HTML5播放器获取下一个视频需要一定的时间,会出现短暂的无视频播放的黑屏现象,这种现象可称为“黑场”。这样,会让用户明显地感知到视频切换,也就是,在对多个视频进行连续播放的过程中无法给用户提供是同一个视频在播放的感觉,用户观影体验并不友好。
发明内容
本申请实施例的目的在于提供视频播放方法、装置、视频播放设备及计算机可读存储介质,可以避免对多个视频进行连续播放的过程中出现“黑场”现象,提高用户观影体验。具体技术方案如下:
第一方面,本申请实施例提供一种视频播放方法,应用于视频播放设备,所述视频播放设备中包括超文本标记语言HTML5播放器,所述方法包括:
在接收到对第一视频的播放指令后,获取并缓存所述第一视频的播放数据;
调用所述HTML5播放器,基于缓存的所述第一视频的播放数据对所述第一视频进行播放;
当调用所述HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据,所述第二视频为在完成对所述第一视频的播放后,需要被播放的下一个视频;
修改缓存的所述第二视频的播放数据对应的时间戳,以使所述第二视频的播放数据对应的时间戳与所述第一视频的播放数据对应的时间戳连续;
调用所述HTML5播放器持续基于已缓存的播放数据进行视频播放。
在一种可能的实现方式中,所述调用所述HTML5播放器,基于所述第一视频的播放数据对所述第一视频进行播放,包括:
将所述第一视频的播放数据发送至媒体源media source实例,以使得所述HTML5播放器持续从所述media source实例中获取所述第一视频的播放数据,并对所述第一视频进行播放;其中,所述HTML5播放器的video标签的src属性值为所述media source实例对应的URL;
所述调用所述HTML5播放器持续基于已缓存的播放数据对进行视频播放,包括:
将修改后的所述第二视频的播放数据发送至所述media source实例,以使得所述HTML5播放器持续从所述media实例中获取播放数据,并基于获取到的播放数据进行视频播放。
在一种可能的实现方式中,所述修改缓存的所述第二视频的播放数据对应的时间戳,包括:
将所述第二视频的播放数据包括的各解码时间戳均加上第一指定数值,所述第一指定数值为所述第一视频的播放数据的结束解码时间戳;
将所述第二视频的播放数据包括的各显示时间戳均加上第二指定数值,所述第二指定数值为所述第一视频的播放数据的结束显示时间戳。
在一种可能的实现方式中,在修改缓存的所述第二视频的播放数据对应的时间戳之前,所述方法还包括:
获取所述第二视频的重复片段指示信息,所述重复片段指示信息用于指示所述第二视频中与所述第一视频的重复片段的时间戳范围;
所述修改缓存的所述第二视频的播放数据对应的时间戳,包括:
将所述第二视频的播放数据中所述重复片段的时间戳范围对应的播放数据删除;
将所述第二视频剩余的播放数据包括的各解码时间戳均加上第一指定数值,并将所述第二视频剩余的播放数据包括的各显示时间戳均加上第二指定数值;其中,所述第一指定数值为所述第一视频的播放数据的结束解码时间戳与所述第二视频的剩余播放数据的起始解码时间戳之间的差值,所述第二指定数值为所述第一视频的播放数据的结束显示时间戳与所述第二视频的剩余播放数据的起始显示时间戳之间的差值。
在一种可能的实现方式中,在将修改后的所述第二视频的播放数据发送至所述media source实例之前,所述方法还包括:
按照预设封装格式对修改后的所述第二视频的播放数据进行封装,得到所述第二视频的封装播放数据,所述预设封装格式为所述media source实例支持的视频格式;
所述将修改后的所述第二视频的播放数据发送至所述media source实例,包括:
将所述第二视频的封装播放数据发送至所述media source实例。
在一种可能的实现方式中,在将所述第一视频的播放数据发送至media source实例之前,所述方法还包括:
按照预设封装格式对所述第一视频的播放数据进行封装,得到所述第一视频的封装播放数据,所述预设封装格式为所述media source实例支持的视频格式;
将所述第一视频的播放数据发送至media source实例,包括:
将所述第一视频的封装播放数据发送至所述media source实例。
在一种可能的实现方式中,所述获取并缓存第二视频的播放数据,包括:
获取所述第二视频的播放地址;
基于所述第二视频的播放地址,从视频服务器获取并缓存所述第二视频的二进制播放数据;
在修改缓存的所述第二视频的播放数据对应的时间戳之前,所述方法还包括:
将所述第二视频的二进制播放数据进行解码,得到所述第二视频的解码后的播放数据;
所述修改缓存的所述第二视频的播放数据对应的时间戳,包括:
修改所述第二视频的解码后的播放数据对应的时间戳。
第二方面,本申请实施例提供一种视频播放装置,应用于视频播放设备,所述视频播放设备中包括超文本标记语言HTML5播放器,所述装置包括:
获取模块,用于在接收到对第一视频的播放指令后,获取并缓存所述第一视频的播放数据;
播放模块,用于调用所述HTML5播放器,基于缓存的所述第一视频的播放数据对所述第一视频进行播放;
所述获取模块,还用于当所述播放模块调用所述HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据,所述第二视频为在完成对所述第一视频的播放后,需要被播放的下一个视频;
修改模块,用于修改缓存的所述第二视频的播放数据对应的时间戳,以使所述第二视频的播放数据对应的时间戳与所述第一视频的播放数据对应的时间戳连续;
所述播放模块,还用于调用所述HTML5播放器持续基于已缓存的播放数据进行视频播放。
在一种可能的实现方式中,所述播放模块,具体用于将所述第一视频的播放数据发送至媒体源media source实例,以使得所述HTML5播放器持续从所述media source实例中获取所述第一视频的播放数据,并对所述第一视频进行播放;其中,所述HTML5播放器的video标签的src属性值为所述media source实例对应的URL;
所述播放模块,具体还用于将修改后的所述第二视频的播放数据发送至所述media source实例,以使得所述HTML5播放器持续从所述media实例中获取播放数据,并基于获取到的播放数据进行视频播放。
在一种可能的实现方式中,所述修改模块,具体用于:
将所述第二视频的播放数据包括的各解码时间戳均加上第一指定数值,所述第一指定数值为所述第一视频的播放数据的结束解码时间戳;
将所述第二视频的播放数据包括的各显示时间戳均加上第二指定数值,所述第二指定数值为所述第一视频的播放数据的结束显示时间戳。
在一种可能的实现方式中,所述获取模块,还用于获取所述第二视频的重复片段指示信息,所述重复片段指示信息用于指示所述第二视频中与所述第一视频的重复片段的时间戳范围;
所述修改模块,具体用于:
将所述第二视频的播放数据中所述重复片段的时间戳范围对应的播放数据删除;
将所述第二视频剩余的播放数据包括的各解码时间戳均加上第一指定数值,并将所述第二视频剩余的播放数据包括的各显示时间戳均加上第二指定数值;其中,所述第一指定数值为所述第一视频的播放数据的结束解码时间戳与所述第二视频的剩余播放数据的起始解码时间戳之间的差值,所述第二指定数值为所述第一视频的播放数据的结束显示时间戳与所述第二视频的剩余播放数据的起始显示时间戳之间的差值。
在一种可能的实现方式中,所述装置还包括:
封装模块,用于按照预设封装格式对修改后的所述第二视频的播放数据进行封装,得到所述第二视频的封装播放数据,所述预设封装格式为所述media source实例支持的视频格式;
所述播放模块,具体用于将所述第二视频的封装播放数据发送至所述mediasource实例。
在一种可能的实现方式中,所述装置还包括:
封装模块,用于按照预设封装格式对所述第一视频的播放数据进行封装,得到所述第一视频的封装播放数据,所述预设封装格式为所述media source实例支持的视频格式;
所述播放模块,具体用于将所述第一视频的封装播放数据发送至所述mediasource实例。
在一种可能的实现方式中,所述装置还包括:解码模块;
所述获取模块,具体用于获取所述第二视频的播放地址;基于所述第二视频的播放地址,从视频服务器获取并缓存所述第二视频的二进制播放数据;
所述解码模块,用于将所述第二视频的二进制播放数据进行解码,得到所述第二视频的解码后的播放数据;
所述修改模块,具体用于修改所述第二视频的解码后的播放数据对应的时间戳。
第三方面,本申请实施例提供了一种视频播放设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一项所述的方法步骤。
第四方面,提供了一种存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法步骤。其中,该存储介质为计算机可读存储介质。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任一项所述的方法步骤。
由上述技术方案可见,视频播放设备在获取到对第一视频的播放指令后,可以获取并缓存第一视频的播放数据,使得HTML5播放器可以基于本地缓存的播放数据播放第一视频。在第一视频的剩余播放时长小于预设时长时,视频播放设备获取并缓存第二视频的播放数据,并对第二视频的播放数据对应的时间戳进行修改,使得第二视频的播放视频对应的时间戳与第一视频的播放数据对应的时间戳连续。进而,因在播放完第一视频之前,第二视频修改时间戳后的播放数据已经被缓存在视频播放设备中,所以HTML5播放器完成对第一视频的播放后,无需等待,可无间断地持续获取缓存的播放数据并进行视频播放。所以不会出现“黑场”现象,提高用户观影体验。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种视频播放方法的流程图;
图2为本申请实施例提供的另一种视频播放方法的流程图;
图3为本申请实施例提供的一种视频播放装置的结构示意图;
图4为本申请实施例提供的一种视频播放设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
如图1所示,本申请实施例提供一种视频播放方法,该方法应用于视频播放设备,该视频播放设备中包括HTML5播放器,该方法包括:
S101、在接收到对第一视频的播放指令后,获取并缓存第一视频的播放数据。
S102、调用HTML5播放器,基于缓存的第一视频的播放数据对第一视频进行播放。
S103、当调用HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据,第二视频为在完成对第一视频的播放后,需要被播放的下一个视频。
S104、修改缓存的第二视频的播放数据对应的时间戳,以使第二视频的播放数据对应的时间戳与第一视频的播放数据对应的时间戳连续。
S105、调用HTML5播放器持续基于已缓存的播放数据对进行视频播放。
由上述技术方案可见,视频播放设备在获取到对第一视频的播放指令后,可以获取并缓存第一视频的播放数据,使得HTML5播放器可以基于本地缓存的播放数据播放第一视频。在第一视频的剩余播放时长小于预设时长时,视频播放设备获取并缓存第二视频的播放数据,并对第二视频的播放数据对应的时间戳进行修改,使得第二视频的播放视频对应的时间戳与第一视频的播放数据对应的时间戳连续。进而,因在播放完第一视频之前,第二视频修改时间戳后的播放数据已经被缓存在视频播放设备中,所以HTML5播放器完成对第一视频的播放后,无需等待,可无间断地持续获取缓存的播放数据并进行视频播放。所以不会出现“黑场”现象,提高用户观影体验。
在上述实施例中,视频播放设备可以为手机、平板电脑、台式电脑等终端,视频播放设备通过浏览器播放视频时,可调用浏览器的HTML5播放器进行视频播放。
针对上述S101,播放指令可以是用户触发的,比如用户点击第一视频的播放按钮,则视频播放设备可接收到播放指令,进而基于该播放指令请求从视频服务器获取第一视频的播放数据。
在一种实施方式中,视频播放设备可以基于该播放指令向视频服务器请求获取第一视频,进而视频服务器向视频播放设备返回第一视频所在的视频播放列表和该视频播放列表对应的视频播放地址列表,该视频播放地址列表中可以包括视频播放列表中各视频的播放地址,播放地址可以为统一资源标识符(Uniform Resource Locator,URL)。视频播放设备可基于第一视频的播放地址从视频服务器获取并缓存第一视频的播放数据。
在上述S102中,调用HTML5播放器,基于缓存的第一视频的播放数据对第一视频进行播放,可以实现为:将第一视频的播放数据发送至媒体源media source实例,以使得HTML5播放器持续从media source实例中获取第一视频的播放数据,并对第一视频进行播放。其中,HTML5播放器的video标签的src属性值为media source实例对应的URL。
在本申请实施例中,HTML5播放器基于video标签的src属性值进行视频播放,可以将该video标签的src属性值设置为media source实例对应的URL。进而,HTML5播放器基于video标签的src属性值可以获取到media source实例中的播放数据。为了实现对第一视频的播放,视频播放设备将第一视频的播放数据发送至media source实例,进而HTML5播放器可以基于从media source实例中的播放数据进行视频播放。
针对上述S103,预设时长可以预先被设置为当前播放的视频的总时长的一半,或者预先被设置为固定的时长。例如,若第一视频的总时长为6分钟,则预设时长为3分钟,当第一视频的剩余播放时长小于3分钟时,则视频播放设备获取并缓存第二视频的播放数据。
若视频播放设备已获取到第一视频所在的视频播放列表和视频播放地址列表,则可基于视频播放列表确定在第一视频播放完成之后,需要被连续播放的第二视频,并从视频播放地址列表中获取第二视频的播放地址,然后根据第二视频的播放地址从视频服务器获取并缓存第二视频的播放数据。
本申请实施例中,因用户在观看第一视频之后,未必会继续观看第二视频,若过早获取第二视频的播放数据,且用户实际上未观看第二视频,将会造成不必要的处理开销和内存资源的浪费。所以在第一视频的剩余播放时长小于预设时长时去获取并缓存第二视频的播放数据,可以尽可能避免过早缓存第二视频的播放数据导致的处理开销和内存资源的浪费。
针对上述S104,每个视频的播放数据对应的时间戳均为从00:00开始。作为示例,若第一视频的播放数据对应的时间戳为00:00-30:00,第二视频的播放数据对应的时间戳为00:00-00:20,则可将第二视频的播放数据对应的时间戳修改为30:00-50:00,可以使得第一视频的播放数据的时间戳与第二视频的播放数据的时间戳连续。
在上述S105中,调用HTML5播放器持续基于已缓存的播放数据进行视频播放,可以实现为:将修改后的第二视频的播放数据发送至media source实例,以使得HTML5播放器持续从media实例中获取播放数据,并基于获取到的播放数据进行视频播放。
其中,在将修改后的第二视频的播放数据发送到media source实例后,因mediasource实例中包括时间戳连续的播放数据,相当于通过修改第二视频的播放时间戳,实现了将两个视频的播放数据进行拼接的效果。HTML5播放器可以持续地从media source实例中获取播放数据并进行播放,使得HTML5播放器无法感知到两个视频之间的切换,达到播放一个视频的效果。
例如,第一视频的时间戳为00:00-30:00,第二视频的时间戳被修改为了30:00-50:00,对于HTML5播放器而言,播放的是一个时间戳为00:00-50:00的完整视频。
可以理解的是,若还存在需要在第二视频之后连续播放的第三视频,则在第二视频的剩余播放时长小于预设时长时,视频播放设备可以基于相同的方法获取第三视频的播放数据,并修改第三视频的播放数据对应的时间戳,以使第三视频的播放数据对应的时间戳与第二视频的播放数据对应的时间戳连续。然后将修改后的第三视频的播放数据发送至media source实例,可以实现对多个视频的连续播放。后续若仍存在需要被连续播放的视频,则依然按照上述方法获取视频的播放数据,此处不再一一说明。
采用上述技术方案,HTML5播放器的video标签的src属性值为media source实例对应的URL,所以HTML5播放视频时,可基于该URL从media source实例中获取视频播放数据。因在本申请实施例中,在视频播放设备接收到对第一视频的播放指令后,可获取第一视频的播放数据,并将第一视频的播放数据发送至media source实例。在第一视频的剩余播放时长小于预设时长时,视频播放设备可获取第二视频的播放数据,并对第二视频的播放数据对应的时间戳进行修改,使得第二视频的播放视频对应的时间戳与第一视频的播放数据对应的时间戳连续。进而,因在播放完第一视频之前,第二视频修改时间戳后的播放数据已经被推到media source实例中,所以HTML5播放器完成对第一视频的播放后,无需等待,可无间断地持续从media source实例中获取播放数据,并进行视频播放。所以不会出现“黑场”现象,提高用户观影体验。
在本申请的一个实施例中,视频的播放数据的时间戳包括解码时间戳(DecodingTime Stamp,DTS)和显示时间戳(Presentation Time Stamp,PTS),其中,解码时间戳为对播放数据解码的时间戳,显示时间戳为显示视频帧的时间戳。所以本申请实施例中对时间戳进行修改时,需修改上述两种时间戳。在此基础上,上述S104、修改缓存的第二视频的播放数据对应的时间戳,包括:
将第二视频的播放数据包括的各解码时间戳均加上第一指定数值,第一指定数值为第一视频的播放数据的结束解码时间戳;
将第二视频的播放数据包括的各显示时间戳均加上第二指定数值,第二指定数值为第一视频的播放数据的结束显示时间戳。
其中,第一视频的播放数据的结束解码时间戳为第一视频的播放数据对应的最大的解码时间戳。相应地,第一视频的播放数据的结束显示时间戳为第一视频的播放数据对应的最大的显示时间戳。比如第一视频的显示时间戳包括00:00-30:00,则第一视频的结束显示时间戳为30:00。
在本申请另一实施例中,需要被连续播放的两个视频中可能会存在重复的片段,比如连续的两集电视剧中,前一集电视剧的结尾片段会在后一集电视剧中被重复播放,但是在用户连续观看视频的场景下,为了保证用户的观看体验,可以不进行重复片段的播放。本申请实施例为了实现这一目的,如图2所示,在上述S104、修改缓存的第二视频的播放数据对应的时间戳之前,该方法还包括:
S201、获取第二视频的重复片段指示信息,该重复片段指示信息用于指示第二视频中与第一视频的重复片段的时间戳范围。
比如,若第一视频的第25分钟至第30分钟与第二视频的第0分钟至第5分钟重复,则该第二视频的重复片段指示信息包括的时间戳范围为00:00-05:00。
在一种实现方式中,视频播放设备从视频服务器获取第二视频的播放数据时,若视频服务器中存储有该第二视频的重复片段指示信息,则视频服务器会在向视频播放设备返回第二视频的播放数据的同时,返回该第二视频的重复片段指示信息。
在视频播放设备获取到第二视频的重复片段指示信息的情况下,上述S104、修改缓存的第二视频的播放数据对应的时间戳,包括:
S1041、将第二视频的播放数据中重复片段的时间戳范围对应的播放数据删除。
例如,若重复片段的时间戳范围为00:00-05:00,则将第二视频的播放数据中,显示时间戳为00:00-05:00的播放数据删除。
S1042、将第二视频剩余的播放数据包括的各解码时间戳均加上第一指定数值,并将第二视频剩余的播放数据包括的各显示时间戳均加上第二指定数值。
其中,第一指定数值为所述第一视频的播放数据的结束解码时间戳与第二视频的剩余播放数据的起始解码,第二指定数值为第一视频的播放数据的结束显示时间戳。
以第二视频的显示时间戳为例,若第二视频的显示时间戳为00:00-20:00,在将00:00-05:00的播放数据删除后,剩余的播放数据包括的显示时间戳为05:00-20:00。若第一视频的显示时间戳为00:00-00:30,则第二视频剩余的播放数据包括的显示时间戳05:00-20:00被修改为00:30-00:45。
在另一实施方式中,可以不删除第二视频的播放数据中重复片段的时间戳范围对应的播放数据,视频播放设备可以修改第二视频的播放数据中除重复片段的时间戳范围之外的播放数据,以使得除重复片段时间戳范围之外的播放数据对应的时间戳与第一视频的播放数据对应的时间戳连续。进而可以将第二视频的播放数据中,时间戳被修改的播放数据发送至media source实例中,也可以实现视频连续播放的效果。
采用上述技术方案,在两个需被连续播放的视频中存在重复片段的情况下,经过上述处理可以使得HTML5播放器不对重复片段进行播放,且经过上述修改第二视频的播放数据对应的时间戳的操作,可以使得HTML5播放器连续播放第一视频和第二视频中连续的视频片段,中间不会出现黑场现象,进一步提高了用户的观影体验。
在本申请另一实施例中,视频播放设备从视频服务器获取到的第一视频的播放数据是二进制播放数据,该二进制格式可以为流媒体(Flash Video,FLV)格式或传输流(Transport Stream,TS)格式。视频播放设备获取第一视频的二进制播放数据后,可以对二进制播放数据进行解码,得到解码后的播放数据。该解码后的播放数据可以为h264或高级音频编码(Advanced Audio Coding,AAC)格式。
为了使得HTML5播放器可以基于media source实例中的播放数据进行播放数据,在将第一视频的播放数据发送至media source实例之前,该方法还包括:
按照预设封装格式对第一视频的播放数据进行封装,得到第一视频的封装播放数据,预设封装格式为media source实例支持的视频格式。
例如,该预设封装格式可以为FLV、TS或者mp4格式,本申请对此不作具体限定,该预设封装格式可以为media source实例支持的任意视频格式。
相应地,将第一视频的播放数据发送至media source实例可以实现为:将第一视频的封装播放数据发送至media source。
基于相同的原理,在将修改后的第二视频的播放数据发送至media source实例之前,该方法还包括:
按照预设封装格式对修改后的第二视频的播放数据进行封装,得到第二视频的封装播放数据,预设封装格式为media source实例支持的视频格式。
相应地,将修改后的第二视频的播放数据发送至media source实例,可以实现为:将第二视频的封装播放数据发送至media source实例。
采用上述技术方案,在将视频的播放数据发送至media source实例之前,按照media source实例支持的预设封装格式对播放数据进行封装,进而将封装后的播放数据发送至media source实例,可以避免因格式不支持问题导致的视频不能播放的情况。
在本申请另一实施例中,上述S103中,获取并缓存第二视频的播放数据,包括:
获取第二视频的播放地址,基于第二视频的播放地址,从视频服务器获取并缓存第二视频的播放数据。
在一种实施方式中,若视频播放设备在获取第一视频的播放数据的过程中已获取第一视频所在的视频播放列表以及该视频播放列表对应的视频播放地址列表,则视频播放设备可基于该视频播放列表确定排列在第一视频之后,且与第一视频相邻的第二视频。进而从视频播放地址列表中获取该第二视频的播放地址。
在视频播放设备获取并缓存第二视频的播放数据的基础上,在上述S104、修改缓存的第二视频的播放数据对应的时间戳之前,该方法还包括:
将第二视频的二进制播放数据进行解码,得到第二视频的解码后的播放数据。
相应地,上述S104、修改缓存的第二视频的播放数据对应的时间戳,包括:修改第二视频的解码后的播放数据对应的时间戳。
因视频播放设备不能直接对二进制格式的播放数据进行修改,所以可先对二进制播放数据进行解码,然后修改解码后的播放数据对应的时间戳,且后续可将修改时间戳后的播放数据重新封装为media source实例支持的预设封装格式,使得HTML5播放器可以成功基于封装后的播放数据实现视频的连续播放,避免出现黑场的现象。
基于相同的发明构思,本申请实施例还提供一种视频播放装置,该装置应用于视频播放设备,视频播放设备中包括超文本标记语言HTML5播放器,如图3所示,该装置包括:
获取模块301,用于在接收到对第一视频的播放指令后,获取并缓存第一视频的播放数据;
播放模块302,用于调用HTML5播放器,基于缓存的第一视频的播放数据对第一视频进行播放;
获取模块301,还用于当播放模块302调用HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据,第二视频为在完成对第一视频的播放后,需要被播放的下一个视频;
修改模块303,用于修改缓存的第二视频的播放数据对应的时间戳,以使第二视频的播放数据对应的时间戳与第一视频的播放数据对应的时间戳连续;
播放模块302,还用于调用HTML5播放器持续基于已缓存的播放数据进行视频播放。
可选地,播放模块302,具体用于将第一视频的播放数据发送至媒体源mediasource实例,以使得HTML5播放器持续从media source实例中获取第一视频的播放数据,并对第一视频进行播放;其中,HTML5播放器的video标签的src属性值为media source实例对应的URL;
播放模块302,具体还用于将修改后的第二视频的播放数据发送至media source实例,以使得HTML5播放器持续从media实例中获取播放数据,并基于获取到的播放数据进行视频播放。
可选地,修改模块303,具体用于:
将第二视频的播放数据包括的各解码时间戳均加上第一指定数值,第一指定数值为第一视频的播放数据的结束解码时间戳;
将第二视频的播放数据包括的各显示时间戳均加上第二指定数值,第二指定数值为第一视频的播放数据的结束显示时间戳。
可选地,获取模块301,还用于获取第二视频的重复片段指示信息,重复片段指示信息用于指示第二视频中与第一视频的重复片段的时间戳范围;
修改模块303,具体用于:
将第二视频的播放数据中重复片段的时间戳范围对应的播放数据删除;
将第二视频剩余的播放数据包括的各解码时间戳均加上第一指定数值,并将第二视频剩余的播放数据包括的各显示时间戳均加上第二指定数值;其中,第一指定数值为第一视频的播放数据的结束解码时间戳与第二视频的剩余播放数据的起始解码时间戳之间的差值,第二指定数值为第一视频的播放数据的结束显示时间戳与第二视频的剩余播放数据的起始显示时间戳之间的差值。
可选地,该装置还包括:
封装模块,用于按照预设封装格式对修改后的第二视频的播放数据进行封装,得到第二视频的封装播放数据,预设封装格式为media source实例支持的视频格式;
播放模块302,具体用于将第二视频的封装播放数据发送至media source实例。
可选地,该装置还包括:
封装模块,用于按照预设封装格式对第一视频的播放数据进行封装,得到第一视频的封装播放数据,预设封装格式为media source实例支持的视频格式;
播放模块302,具体用于将第一视频的封装播放数据发送至media source实例。
可选地,该装置还包括:解码模块;
获取模块301,具体用于获取第二视频的播放地址;基于第二视频的播放地址,从视频服务器获取并缓存第二视频的二进制播放数据;
解码模块,用于将第二视频的二进制播放数据进行解码,得到第二视频的解码后的播放数据;
修改模块303,具体用于修改第二视频的解码后的播放数据对应的时间戳。
本申请实施例还提供了一种视频播放设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现上述视频播放方法中的任一方法步骤。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述视频播放方法中的任一方法步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述视频播放方法中的任一方法步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、视频播放设备、计算机可读存储介质、包含指令的计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种视频播放方法,其特征在于,应用于视频播放设备,所述视频播放设备中包括超文本标记语言HTML5播放器,所述方法包括:
在接收到对第一视频的播放指令后,获取并缓存所述第一视频的播放数据;
调用所述HTML5播放器,基于缓存的所述第一视频的播放数据对所述第一视频进行播放;
当调用所述HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据,所述第二视频为在完成对所述第一视频的播放后,需要被播放的下一个视频;
修改缓存的所述第二视频的播放数据对应的时间戳,以使所述第二视频的播放数据对应的时间戳与所述第一视频的播放数据对应的时间戳连续;
调用所述HTML5播放器持续基于已缓存的播放数据进行视频播放。
2.根据权利要求1所述的方法,其特征在于,所述调用所述HTML5播放器,基于所述第一视频的播放数据对所述第一视频进行播放,包括:
将所述第一视频的播放数据发送至媒体源media source实例,以使得所述HTML5播放器持续从所述media source实例中获取所述第一视频的播放数据,并对所述第一视频进行播放;其中,所述HTML5播放器的video标签的src属性值为所述media source实例对应的URL;
所述调用所述HTML5播放器持续基于已缓存的播放数据对进行视频播放,包括:
将修改后的所述第二视频的播放数据发送至所述media source实例,以使得所述HTML5播放器持续从所述media实例中获取播放数据,并基于获取到的播放数据进行视频播放。
3.根据权利要求1或2所述的方法,其特征在于,所述修改缓存的所述第二视频的播放数据对应的时间戳,包括:
将所述第二视频的播放数据包括的各解码时间戳均加上第一指定数值,所述第一指定数值为所述第一视频的播放数据的结束解码时间戳;
将所述第二视频的播放数据包括的各显示时间戳均加上第二指定数值,所述第二指定数值为所述第一视频的播放数据的结束显示时间戳。
4.根据权利要求1或2所述的方法,其特征在于,在修改缓存的所述第二视频的播放数据对应的时间戳之前,所述方法还包括:
获取所述第二视频的重复片段指示信息,所述重复片段指示信息用于指示所述第二视频中与所述第一视频的重复片段的时间戳范围;
所述修改缓存的所述第二视频的播放数据对应的时间戳,包括:
将所述第二视频的播放数据中所述重复片段的时间戳范围对应的播放数据删除;
将所述第二视频剩余的播放数据包括的各解码时间戳均加上第一指定数值,并将所述第二视频剩余的播放数据包括的各显示时间戳均加上第二指定数值;其中,所述第一指定数值为所述第一视频的播放数据的结束解码时间戳与所述第二视频的剩余播放数据的起始解码时间戳之间的差值,所述第二指定数值为所述第一视频的播放数据的结束显示时间戳与所述第二视频的剩余播放数据的起始显示时间戳之间的差值。
5.根据权利要求2所述的方法,其特征在于,在将修改后的所述第二视频的播放数据发送至所述media source实例之前,所述方法还包括:
按照预设封装格式对修改后的所述第二视频的播放数据进行封装,得到所述第二视频的封装播放数据,所述预设封装格式为所述media source实例支持的视频格式;
所述将修改后的所述第二视频的播放数据发送至所述media source实例,包括:
将所述第二视频的封装播放数据发送至所述media source实例。
6.根据权利要求2所述的方法,其特征在于,在将所述第一视频的播放数据发送至media source实例之前,所述方法还包括:
按照预设封装格式对所述第一视频的播放数据进行封装,得到所述第一视频的封装播放数据,所述预设封装格式为所述media source实例支持的视频格式;
将所述第一视频的播放数据发送至media source实例,包括:
将所述第一视频的封装播放数据发送至所述media source实例。
7.根据权利要求1所述的方法,其特征在于,所述获取并缓存第二视频的播放数据,包括:
获取所述第二视频的播放地址;
基于所述第二视频的播放地址,从视频服务器获取并缓存所述第二视频的二进制播放数据;
在修改缓存的所述第二视频的播放数据对应的时间戳之前,所述方法还包括:
将所述第二视频的二进制播放数据进行解码,得到所述第二视频的解码后的播放数据;
所述修改缓存的所述第二视频的播放数据对应的时间戳,包括:
修改所述第二视频的解码后的播放数据对应的时间戳。
8.一种视频播放装置,其特征在于,应用于视频播放设备,所述视频播放设备中包括超文本标记语言HTML5播放器,所述装置包括:
获取模块,用于在接收到对第一视频的播放指令后,获取并缓存所述第一视频的播放数据;
播放模块,用于调用所述HTML5播放器,基于缓存的所述第一视频的播放数据对所述第一视频进行播放;
所述获取模块,还用于当所述播放模块调用所述HTML5播放器播放的第一视频的剩余播放时长小于预设时长时,获取并缓存第二视频的播放数据,所述第二视频为在完成对所述第一视频的播放后,需要被播放的下一个视频;
修改模块,用于修改缓存的所述第二视频的播放数据对应的时间戳,以使所述第二视频的播放数据对应的时间戳与所述第一视频的播放数据对应的时间戳连续;
所述播放模块,还用于调用所述HTML5播放器持续基于已缓存的播放数据进行视频播放。
9.一种视频播放设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110126894.9A CN112954431A (zh) | 2021-01-29 | 2021-01-29 | 视频播放方法、装置、视频播放设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110126894.9A CN112954431A (zh) | 2021-01-29 | 2021-01-29 | 视频播放方法、装置、视频播放设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112954431A true CN112954431A (zh) | 2021-06-11 |
Family
ID=76239787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110126894.9A Pending CN112954431A (zh) | 2021-01-29 | 2021-01-29 | 视频播放方法、装置、视频播放设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112954431A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113573123A (zh) * | 2021-07-23 | 2021-10-29 | 北京奇艺世纪科技有限公司 | 多媒体资源处理方法、装置、设备及存储介质 |
CN113727167A (zh) * | 2021-08-11 | 2021-11-30 | 北京奇艺世纪科技有限公司 | 视频资源播放方法、装置、设备和可读存储介质 |
CN114268773A (zh) * | 2022-03-03 | 2022-04-01 | 杭州闪马智擎科技有限公司 | 一种视频播放方法、系统、存储介质及电子装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959821A (zh) * | 2016-05-30 | 2016-09-21 | 乐视控股(北京)有限公司 | 一种视频播放方法及设备 |
CN106375869A (zh) * | 2016-08-30 | 2017-02-01 | 北京奇艺世纪科技有限公司 | 一种基于html5播放器的音视频播放方法及装置 |
CN106550284A (zh) * | 2015-09-21 | 2017-03-29 | 北京国双科技有限公司 | 一种播放分片视频的方法及装置 |
US20170171288A1 (en) * | 2014-06-27 | 2017-06-15 | Cheetah Mobile Inc. | Video playing method and device for video playing application program |
CN109040811A (zh) * | 2018-08-16 | 2018-12-18 | 北京奇艺世纪科技有限公司 | 一种视频播放方法及装置 |
CN110430461A (zh) * | 2019-08-28 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 一种控制视频播放的方法、装置及视频播放设备 |
CN110784750A (zh) * | 2019-08-13 | 2020-02-11 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置及计算机设备 |
CN111083067A (zh) * | 2018-10-19 | 2020-04-28 | 百度在线网络技术(北京)有限公司 | 数据流拼接的方法、装置、存储介质和终端设备 |
-
2021
- 2021-01-29 CN CN202110126894.9A patent/CN112954431A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170171288A1 (en) * | 2014-06-27 | 2017-06-15 | Cheetah Mobile Inc. | Video playing method and device for video playing application program |
CN106550284A (zh) * | 2015-09-21 | 2017-03-29 | 北京国双科技有限公司 | 一种播放分片视频的方法及装置 |
CN105959821A (zh) * | 2016-05-30 | 2016-09-21 | 乐视控股(北京)有限公司 | 一种视频播放方法及设备 |
CN106375869A (zh) * | 2016-08-30 | 2017-02-01 | 北京奇艺世纪科技有限公司 | 一种基于html5播放器的音视频播放方法及装置 |
CN109040811A (zh) * | 2018-08-16 | 2018-12-18 | 北京奇艺世纪科技有限公司 | 一种视频播放方法及装置 |
CN111083067A (zh) * | 2018-10-19 | 2020-04-28 | 百度在线网络技术(北京)有限公司 | 数据流拼接的方法、装置、存储介质和终端设备 |
CN110784750A (zh) * | 2019-08-13 | 2020-02-11 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置及计算机设备 |
CN110430461A (zh) * | 2019-08-28 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 一种控制视频播放的方法、装置及视频播放设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113573123A (zh) * | 2021-07-23 | 2021-10-29 | 北京奇艺世纪科技有限公司 | 多媒体资源处理方法、装置、设备及存储介质 |
CN113727167A (zh) * | 2021-08-11 | 2021-11-30 | 北京奇艺世纪科技有限公司 | 视频资源播放方法、装置、设备和可读存储介质 |
CN114268773A (zh) * | 2022-03-03 | 2022-04-01 | 杭州闪马智擎科技有限公司 | 一种视频播放方法、系统、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112954431A (zh) | 视频播放方法、装置、视频播放设备及可读存储介质 | |
WO2017063399A1 (zh) | 一种视频播放方法和装置 | |
US8886009B2 (en) | Creation of video bookmarks via scripted interactivity in advanced digital television | |
US10452250B2 (en) | Method for associating media files with additional content | |
US10645465B2 (en) | Video file universal identifier for metadata resolution | |
WO2015062435A1 (zh) | 一种视频播放界面调整的方法和装置 | |
CN108495185B (zh) | 一种视频标题生成方法和装置 | |
WO2020233142A1 (zh) | 多媒体文件播放方法、装置、电子设备和存储介质 | |
US20170195744A1 (en) | Live-stream video advertisement system | |
WO2020211731A1 (zh) | 一种视频播放方法及相关设备 | |
CN110784750B (zh) | 视频播放方法、装置及计算机设备 | |
CN111930973B (zh) | 多媒体数据的播放方法、装置、电子设备及存储介质 | |
US20230224545A1 (en) | Video playback method and apparatus, storage medium, and electronic device | |
JP6969013B2 (ja) | メディアファイルの同期再生方法、装置及び記憶媒体 | |
CN112770188A (zh) | 一种视频播放方法及装置 | |
CN112261377B (zh) | web版监控视频播放方法、电子设备及存储介质 | |
US20160119661A1 (en) | On-Demand Metadata Insertion into Single-Stream Content | |
AU2016410930A1 (en) | Online television playing method and apparatus | |
CN111031385A (zh) | 视频播放的方法及装置 | |
WO2015143854A1 (zh) | 数据获取及交互方法、机顶盒、服务器、多媒体系统 | |
CN110277110B (zh) | 一种网络页面的录音、播放方法、装置及终端 | |
CN116132735A (zh) | 一种多媒体播放方法、浏览器及电子设备 | |
CN110324670B (zh) | 一种视频的传输方法、装置及服务器 | |
CN111356006A (zh) | 视频播放方法、装置、服务器及存储介质 | |
CN108449645B (zh) | 基于移动终端iOS系统的视频播放方法及装置 |
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 |