视频源切换方法、播放方法、装置、设备和存储介质
技术领域
本申请涉及多媒体处理技术领域,特别涉及一种视频源切换方法、播放方法、装置、设备和存储介质。
背景技术
随着智能终端的普及和互联网的发展,在各个智能终端观看在线视频已经成为了人们生活中重要的组成部分,人们对视频服务要求也越来越高。为用户提供更好的观看效果已经成为各个在线视频网站或视频App的一个重要工作。为了提升播放源的质量,网络视频源的码率逐渐在升高。
在视频播放过程中,如果出现播放错误或者卡顿,为保证用户正常观看,需要将原高码率视频源切换为低码率的视频源。在视频源切换的过程中,有可能导致切换后的画面与之前已经播放的画面是不连续的或者重复的。相关技术为了实现视频源的切换,可能需要重启播放器,切换时间过长,导致智能终端可能会出现黑屏等现象。
发明内容
为解决上述技术问题的至少之一,本申请提供了一种视频源切换方法、播放方法、装置、设备和存储介质,以实现不同视频源之间的平滑切换。
根据本申请的一方面,提供了一种视频源切换方法,包括:
获取切换信息;
根据所述切换信息确定第一视频源的第一关键帧;所述第一关键帧为所述第一视频源当前播放时间的下一个关键帧;
查询所述第一关键帧的第一时间值;
根据所述切换信息定位第二视频源;
当所述第二视频源的当前时间值与所述第一时间值的距离小于或等于预设阈值时进行视频源的切换。
根据本申请的另一方面,提供了一种视频播放方法,包括:
获取视频切换事件,所述切换事件包括用户终端的切换请求事件、播放错误事件或播放卡顿事件中的任一种;
根据所述切换事件进行视频源的切换,所述视频源的切换前述视频源切换方法来执行。
根据本申请的另一方面,提供了一种视频播放方法,包括:
显示画质信息列表;
响应于视频播放指令,播放所述画质信息列表中对应画质的视频源;
在视频切换事件被触发时,显示视频源切换后的视频画质信息或视频源切换提示;所述视频源切换采用前述视频源切换方法来执行。
根据本申请的另一方面,提供了一种视频源切换装置,包括:
获取模块,用于获取切换信息;
定位模块,用于根据所述切换信息确定第一视频源的第一关键帧,所述第一关键帧为所述第一视频源当前播放时间的下一个关键帧;
查询模块,用于查询所述第一关键帧的第一时间值;
第二视频源定位模块,用于根据所述切换信息定位第二视频源;
切换模块,用于当所述第二视频源的当前时间值与所述第一时间值的距离小于或等于预设阈值时进行视频源的切换。
根据本申请的另一方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述方面所述的方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上述方面所述的方法。
本申请实施例提供的技术方案的有益效果是:
本申请提供了一种视频源切换方案,包括获取切换信息,确定第一视频源的当前播放时间的下一个关键帧的第一时间值;根据所述切换信息定位第二视频源;在所述第二视频源的当前时间值与所述第一时间值的距离小于或等于预设阈值时进行视频源的切换。上述方案在进行不同视频源的切换时,将新视频源的切换时刻设置为原视频源对应关键帧的时间值处,实现了不同视频源之间的平滑切换。
附图说明
图1(a)为本申请一个实施例提供的视频切换系统的结构框图;
图1(b)为本申请一个实施例提供的播放器引擎的结构框图;
图2为本申请一个实施例提供的视频切换方法的流程图;
图3为本申请又一个实施例提供的视频切换方法的流程图;
图4为图3中的步骤390的一种实现方式的流程图;
图5为本申请一个实施例提供的视频播放方法的流程图;
图6为本申请又一个实施例提供的视频播放方法的流程图;
图7(a)-图7(d)为图6所示实施例执行过程中的显示界面,其中:图7(a)为视频播放时的显示界面,图7(b)为用户准备进行画质选择时的显示界面,图7(c)为用户进行画质选择的显示界面,图7(d)为视频源切换执行后的显示界面;
图8为本申请一个实施例提供的视频源切换装置的结构框图;
图9为本申请一个实施例提供的计算机设备的结构框图。
具体实施方式
下面结合说明书附图和具体的实施例对本申请进行进一步的说明。所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
图1(a)示出了本申请实施例提供的一种视频切换系统的结构框图。
如图1(a)所示,视频切换系统100包括服务器110和播放器170,播放器170可以是提供视频服务功能的相关应用。播放器170可以配置在智能手机、智能穿戴设备、平板电脑、笔记本电脑、个人数字助理或车载电脑等用户终端中。服务器110用于为用户终端提供不同视频源数据,通过用户终端110所安装的播放器170向用户终端提供视频播放服务。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器。具体地,服务器110针对指定的源编码出不同码率的源。进一步的,不同码率的源包括高码率源、中码率源和低码率源三种不同码率的源。具体源的个数不做限定,可以灵活设置。不同码率可以为不同分辨率、不同清晰度、不同帧率中任意一种。示例性的,采用三个不同帧率的源,则该三个不同帧率的源的帧率可以分别为30fps(每秒传输帧数Frames Per Second)、60fps和120fps。
如图1(a)所示,播放器170可包括设备最大解码能力模块120、播放器引擎130、码率切换处理模块140和播放器上层150。其中,设备最大解码能力模块120,用于查询当前设备支持的最大码率能力。进一步地,Andorid平台通过实际的系统接口可获得当前设备针对不同编码格式、不同清晰度所能支持的最大码率能力;ios(苹果公司的移动操作系统)平台根据实际的测试结果,设置支持高码率播放的设备能力。
示例性的,最大码率能力可以为最大帧率能力。可选地,播放器170还可以包括屏幕刷新率检测模块160,通过系统接口获取当前系统的屏幕刷新率,如果屏幕刷新率支持高帧率模式,则表明渲染侧已经支持高帧率视频渲染;如果当前刷新率不支持高帧率模式,则可以尝试性设置修改屏幕刷新率支持高帧率,并通过实际系统回调的事件判断是否修改成功,如果成功,则可以播放;否则,当前屏幕不支持渲染高帧率视频。
播放器引擎130,对播放器上层150给定的播放地址中的视频源进行播放。可选地,对播放器上层150给定的高帧率播放地址中的视频源进行播放。并且在播放过程中,播放器引擎130对播放的卡顿情况进行检测。可选地,通过丢帧率的统计来检测卡顿情况。如果播放视频单位时间内出现丢帧个数限制的最大值,比如,5s内丢帧数超过50帧,则发送相关事件,表明当前播放已经出现卡顿情况,会影响到用户播放,发送的相关事件中带有相关帧率信息以及错误信息。同时如果播放过程中出现报错,比如网络原因导致播放失败等错误信息也发送相关事件,使得码率切换处理模块140接收卡顿或播放错误事件信息。
码率切换处理模块140根据播放器引擎130发送的播放错误事件或播放卡顿事件,以及出现播放错误事件或播放卡顿事件的源的实际码率决定是否进行降码率处理,并把视频切换事件信息通知播放器上层150,由播放器上层150根据视频切换事件信息来执行相关操作。示例性的,当播放的是高帧率的源,那么码率切换处理模块140执行根据实际出错源的实际帧率来决定是否进行降帧率处理,并把需要切换的事件信息通知播放器上层,由播放器上层进行降帧率重新播放操作。如果出现播放错误以及丢帧卡顿事件,并且当前帧率属于高帧率,比如120fps,则可以切换到60fps,如果60fps的源出现错误或卡顿,则可以切换30fps。但是如果出错的源是30fps的话,则直接发送错误信息或者卡顿提示,让用户主动切换帧率。
可选的,播放器上层150还用于获取来自用户终端的切换请求事件。比如在流量受限或者没有连接WiFi的情况下,用户倾向选择低码率的视频源进行播放;而在流量充足或者重新连接WiFi的情况下,用户倾向选择高码率的视频源进行播放。示例性的,不同码率源可以指不同帧率的源。
以不同帧率的源为例来说明播放器上层150的功能。播放器上层150主要完成不同码率源的播放调度。播放器上层150从服务器110获取当前用户选择的源的清晰度列表与帧率列表,来确定当前源是否有高帧率的源,同时确认当前高帧率源是否有对应备份切换的低帧率源。
如果服务器110具备高帧率的源,则根据当前高帧率源的编码格式以及分辨率,获取当前编码格式以及分辨率能支持的最高帧率;如果高帧率源的帧率小于最高帧率,则解码侧可以支持高帧率源的解码。
如果解码以及渲染都支持当前高帧率源,则使用高帧率源的播放地址设置给播放器引擎,开始播放高帧率视频;同时播放器上层150监听视频切换事件,根据实际事件,决定是否要进行帧率切换。比如,如果需要切换为低帧率的源,则将低帧率源的地址重新设置给播放器引擎130,进行新的播放,确保用户可以正常播放视频。
图1(a)所示的视频切换系统考虑实际播放高码率视频源的过程所需要涉及的各个模块参数,包括解码能力与渲染能力;在请求高帧率源之前,确保当前设备是可以正常播放高帧率源,确保实际用户的播放体验。同时通过丢帧率检测机制,方便统计当前用户播放高帧率播放体验情况,并能及时反馈实际体验结果,以方便播放器上层及时处理,避免用户体验受损。针对播放过程中出现的错误以及卡顿,增加了降帧率逻辑,确保在出现异常的情况下,能保证用户正常观看。
图1(a)所示的视频切换系统在不同视频源切换过程中,面临着如何实现平滑切换的技术问题。
图1(b)示出了本申请一个实施例中的播放器引擎130的结构图,包括:第一解封装置131、第二解封装置132、解码器133和同步渲染模块134。解封装置(demuxer)主要完成数据的解析与下载,解析时会根据视频源的格式标准来解析对应的每个包(packet)的时间戳。第一解封装置131用于定位打开第一视频源地址,解析、下载第一视频源的数据,第二解封装置132用于定位打开第二视频源地址,解析、下载第二视频源的数据,将解析、下载的数据存储在缓冲队列中。解码器(decoder)133能够对缓冲队列中的数据进行解码,同步渲染模块134对解码得到的数据进行同步渲染至显示屏实现视频播放。
为实现不同视频源之间的平滑切换,本申请实施例提出了一种视频源切换方法,在进行不同视频源的切换时,将新视频源的切换时刻设置为原视频源对应关键帧的时间值处,解决了切换后画面不连续等问题。该切换方法可应用于用户终端中,或者可应用于服务器中,或者可应用于由用户终端和服务器所组成的实施环境中。此外,该切换方法还可以是运行于用户终端或服务器中的软体,例如具有视频源切换功能的应用程序等。用户终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器。
图2示出了该切换方法应用于用户终端时的一个应用实例流程图。具体地,该切换方法可由图1(a)所示用户终端安装的播放器170来执行,而参与切换的第一视频源和第二视频源为不同码率的视频源。参见图2,该方法可以包括以下步骤210-250:
步骤210,获取切换信息。
具体地,切换信息可包括待切换的第二视频源的地址信息,比如url地址;还可包括视频切换事件触发的时间信息。切换事件包括用户终端的切换请求事件、播放错误事件或播放卡顿事件中的任一种。
可以通过检测动态更新地址接口的状态信息来获取切换信息。动态更新地址接口为播放器引擎130提供的接口,播放器上层150可以调用这个接口来设置url地址,类似于updateSourceDataUrl(),从而更新需要切换的第二视频源的地址。这种动态更新方式使得播放器在播放的过程中,也可以调用该接口设置切换的地址,不影响播放。
步骤220,根据所述切换信息确定第一视频源的第一关键帧;所述第一关键帧为所述第一视频源当前播放时间的下一个关键帧。
步骤230,查询所述第一关键帧的第一时间值。
步骤220-230由图1(b)中所示的第一解封装置131执行。在播放器上层150设置需要切换的视频源的地址到动态更新地址接口后,播放器引擎130检测到有需要切换的地址,将事件通知到第一解封装置131。第一解封装置131查询第一关键帧的时间值(即第一时间值),获取该第一时间值后,第一解封装置131暂停工作,不再请求数据。第一时间值可以是第一关键帧对应的时刻、时间戳等时间的数值。通常,可通过查询时间戳的方式获取第一时间值。
步骤240,根据所述切换信息定位第二视频源。
如前所述,切换信息中包括第二视频源的地址。由此,可根据该切换信息定位打开第二视频源。
步骤250,当所述第二视频源的当前时间值与所述第一时间值的距离小于或等于预设阈值时进行视频源的切换。
当前时间值满足上述预设阈值的条件时,则认为第二视频源的数据到达了第一视频源已经播放的位置了,开始执行同步渲染逻辑,进行视频源的切换。合理地设置预设阈值为足够小的值,使得视频观看者对于视频切换是无感的。预设阈值可设置为80ms,也可以设置为60ms或50ms,这里不对具体数值进行限定,可根据实际播放参数和观看者对切换的无感条件来进行设置。通过将切换时刻设置在与第一时间值的距离小于预设阈值的位置,实现了不同视频源的无感及时切换。
可选的,在一些情况下,第二视频源中存在与第一时间值相同时刻的帧,则可在第二视频源的当前时间值等于该第一时间值时,进行视频源的切换。在一些情况下,第二视频源中不存在与第一时间值相同时刻的帧,则可以在当前时间值大于或小于第一时间值时,进行视频源的切换。
可选的,可以对第二视频源的当前时间值与第一时间值进行比较,直至当前时间值大于或者等于第一时间值时,进行视频源的切换。这种切换时刻的位置确定方式简便易实现。
本申请实施例提供的方法,在进行不同视频源的切换时,将第二视频源的切换时间点设置为第一视频源对应关键帧的时间值处,实现了不同视频源之间的平滑切换,解决了现有技术中画面不连续的技术问题。
图3示出了本申请又一实施例提供的视频源切换方法的流程图。本实施例同样以该方法应用于图1(a)所示的实施环境中为例进行说明,由图1(a)所示用户终端安装的播放器170来执行。该方法中参与切换的第一视频源和第二视频源为不同码率的视频源。参见图3,该方法可以包括:
步骤310,获取切换信息。
切换信息的内容和获取方法和步骤210中的相同,在此不再赘述。
步骤320,根据所述切换信息确定第一视频源的第一关键帧;所述第一关键帧为所述第一视频源当前播放时间的下一个关键帧。
步骤330,通过第一解封装置读取所述第一视频源的数据直至所述第一关键帧;所述第一视频源的数据存储在缓冲队列中。
步骤340,查询所述第一关键帧的第一时间值。
步骤320-340由图1(b)中所示的第一解封装置131执行。在播放器上层150设置需要切换的视频源的地址到动态更新地址接口后,播放器引擎130检测到有需要切换的地址,将事件通知到第一解封装置131。第一解封装置131持续读取第一视频源的数据直至当前播放事件的下一个关键帧,即第一关键帧,将读取到的数据存放在播放器引擎130的缓冲队列中。缓冲队列大小依据播放性能等参数综合考虑来设置,比如可以设置为150个帧,具体大小在此不做限定。由于待切换的第二视频源数据还未获取,播放器尚未准备好切换播放工作,因此通过对第一视频源数据的持续读取与缓存,为切换准备工作争取时间。第一解封装置131查询到第一关键帧的时间值(即第一时间值)时,第一解封装置131暂停工作,不再请求数据。第一时间值可以是第一关键帧对应的时刻、时间戳等时间的数值。通常,可通过查询时间戳的方式获取第一时间值。
步骤350,根据所述切换信息定位第二视频源。
如前所述,切换信息中包括第二视频源的地址。在该步骤350之前,可选的,还包括一新建第二解封装置132的步骤。启动该第二解封装置132定位第二视频源。
步骤360,确定所述第二视频源的第二关键帧,所述第二关键帧的时间值小于所述第一时间值且距离所述第一时间值最近。
步骤370,通过第二解封装置从所述第二关键帧开始读取所述第二视频源的数据得到一个或多个数据包并将所述一个或多个数据包存储在所述缓冲队列中,为第一个所述数据包添加第二视频源标识。
步骤350-370由第二解封装置132执行。定位打开第二视频源后,第二解封装置132在打开的第二视频源中采用反向查找(backward)模式进行seek操作,找到第一时间值之前的并且与第一时间值最近的关键帧,定义为第二关键帧。由于采用backward模式进行seek操作,所以确定的第二关键帧的时间值(即第二时间值,可以是第二关键帧对应的时刻、时间戳等时间的数值)要小于第一时间值。第二解封装置132从该第二关键帧处开始将读取到的第二视频源的数据存储在缓冲队列中。至此,缓冲队列中存储有第一视频源的数据和第二视频源的数据。本实施例中,seek操作是指查找目标位置的操作。比如在步骤360中,假设第一关键帧对应的时刻、时间戳等时间的数值(即第一时间值)为2700ms,seek操作要查找的目标位置为第二视频源中的一个关键帧的位置,该关键帧位置所对应的时刻或时间戳等时间的数值(即第二时间值)小于2700ms且与2700ms最近。
可选的,在成功读取第二视频源的数据后,关闭第一解封装置。
步骤380,在解码器解码所述缓冲队列过程中检测到所述第二视频源标识时,刷新所述缓冲队列或者重启所述解码器。
本申请实施例可通过解码器133对缓冲队列中的数据进行解码。由于第一视频源的第一关键帧之前的数据也在缓冲队列中,因此解码器133会继续解码第一视频源在第一关键帧之前的数据,并且同步渲染出来。
在解码过程中,检测到第二视频源标识时,调用flush函数对缓冲队列进行刷新或者重启解码器133。第一视频源和第二视频源为不同码率的源,如果二者的编码参数不一致,则需要重启解码器133。如果二者的参数一致,则不需要重启解码器,此时需要调用flush函数对缓冲队列进行刷新,节约了重启解码器所需耗费的时间。示例性的,如果第一视频源和第二视频源为不同帧率的视频源,则二者的编码参数一致,采用调用flush对缓冲队列进行刷新的方法可节约切换时间。
步骤390,当所述第二视频源的当前时间值与所述第一时间值的距离小于或等于预设阈值时进行视频源的切换。
刷新或者重启完成后,重新开始解码第二视频源的数据,并且判断数据的当前时间值与第一时间值的距离,当该距离小于或等于预设阈值时,进行视频源的切换。当前时间值满足上述预设阈值的条件时,则认为第二视频源的数据到达了第一视频源已经播放的位置了,开始执行同步渲染逻辑,进行视频源的切换。预设阈值的设定和视频源切换时刻的确定方法与步骤250中的相同,在此不再赘述。
可选的,步骤390从第二关键帧处开始执行,便于快速查找该切换时刻。
具体的,步骤390可包括如图4所示的步骤391和步骤392:
步骤391,从所述第二关键帧开始解码所述第二视频源,得到解码数据;
步骤392,当所述距离大于所述预设阈值时,丢弃所述解码数据;当所述距离小于或等于所述预设阈值时,同步和渲染所述解码数据,进行视频源的切换。
步骤391和步骤392实现了快速解码逻辑,在到达切换时刻之前,丢弃解码所得数据,不进行同步和渲染,由此可以节约同步渲染时间。直至到达切换时刻,即当前时间值满足了预设阈值条件,才对解码数据进行同步和渲染,进行视频源的切换。
本申请实施例提供的视频源切换方法不需要重启整个播放器。重启播放器的过程主要包括播放器资源创建(线程创建、初始化参数设置等)、解封装置根据地址建立连接和下载数据、解码器重启和解码、以及渲染模块重启与渲染,整个过程可能需要耗费700-900ms,这个时间段内会出现黑屏现象。重启播放器使用新的视频源地址时,需要seek到之前播放的位置,如果seek反馈的位置与之前播放的位置不同,则说明seek反馈位置的数据与之前播放位置的数据没有对齐,就会出现不连续现象。另外,如果seek反馈位置的时间值小于之前播放位置的时间值,会出现画面重复现象。
而本申请实施例提供的方法,在进行不同视频源的切换时,将第二视频源的切换时间点设置为第一视频源对应关键帧的时间值处,实现了不同视频源之间的平滑切换,以解决现有技术中画面不连续的技术问题。同时,该方法减少了播放器创建以及参数初始化时间,减少了渲染模块创建耗时。尤其是在不同视频源的编码参数一致的情况下,还减少了解码器的重启耗时,切换过程的总耗时在大约200-300ms;另外,由于渲染模块未重新创建,之前显示的帧持续显示在屏幕中,不会产生黑屏现象,并且切换时间短,用户基本无感知。
图5为本申请一个实施例提供的视频播放方法的流程图,该视频播放方法由图1(a)所示的播放器170和服务器110交互执行,包括以下步骤:
步骤510,获取视频切换事件,所述视频切换事件包括用户终端的切换请求事件、播放错误事件或播放卡顿事件中的任一种。步骤510由用户终端安装的播放器170来执行,具体的,由播放器170中的播放器上层150执行;具体视频切换事件可参见关于图1(a)中的播放器上层150所获取的各类视频切换事件的说明。
步骤520,根据所述视频切换事件进行视频源的切换,所述视频源的切换采用如前所述的视频源切换方法来执行。
本实施例提供的视频播放方法,根据视频切换事件对视频源进行切换,实现了视频播放过程中不同视频源之间的平滑切换。
图6为本申请又一个实施例提供的视频播放方法的流程图,该视频播放方法由图1(a)所示用户终端安装的播放器170执行,包括以下步骤:
步骤610,显示画质信息列表。用户终端的视频播放界面显示画质信息列表,供用户选择不同画质的视频源。
步骤620,响应于视频播放指令,播放所述画质信息列表中对应画质的视频源。
参见图7(a)-7(d)所示的用户终端视频播放界面,其中图7(a)为视频播放时的界面,显示界面710中显示当前播放的视频720。图7(b)为界面获取到用户触碰指令后的显示界面,此时界面中会显示功能列表740,功能列表740包括用于触发画质信息列表的链接,如图中的“270P”所示。用户点击“270P”,会进入如图7(c)所示的界面,显示画质信息列表750。用户可以在该显示画质信息列表750中选择自己需要的画质选项,示例性的,在用户点击“HDR臻彩世界”后,响应于该视频播放指令,播放“HDR”画质的视频源。其中HDR(High-dynamic-range)表示高动态范围成像,可以提高画面的曝光动态范围,获得更好的画面显示效果。
步骤630,在视频切换事件被触发时,显示视频源切换后的视频画质信息或视频源切换提示;所述视频源切换采用前述视频源切换方法来执行。
参见图7(d)所示为视频源切换后的显示界面。其中,信息提示框760中的内容为“正在播放第二清晰度的视频源”,该信息提示框760用于提示视频源切换的信息。可选的,可在该显示界面上,直接显示切换后的视频画质信息,示例性的,可以在该界面显示的右上方或右下方显示“第二清晰度”。
具体地,所述视频切换事件包括用户终端的切换请求事件、播放错误事件或播放卡顿事件中的任一种。
结合图7(a)-图7(d)所示界面,应用本实施例的方法进行视频播放,具体过程如下:
在图7(a)视频播放时的界面中,用户可以通过触摸显示界面710或者其他操作方式,使得播放器进入图7(b)所示界面。图7(b)的界面中显示有当前播放的视频720、进度条730和功能列表740。该功能列表740中的不同选项用于打开相对应的选项列表,从而使得用户可以自由选择对应的选型信息。列表740中的“270P”选项为当前播放视频的视频源的画质信息,该选项能够链接到画质信息列表750。
用户点击该“270P”选项后,进入图7(c)所示界面,其中的画质信息列表750中包含有多个画质选项,具体为270P标清、480P高清、720P超清、1080P蓝光、HDR臻彩世界。通过点击每一个画质选项可以触发用户终端的切换请求事件,该切换请求事件中包含了待切换的视频源的画质信息。不同的画质信息对应服务器110中存储的不同码率的视频源。需要说明的是,上述画质选项仅为示例,其名称、个数、表示的画质信息均可灵活设置,在此不做限制。
用户点击上述画质选项中的任一个,即触发了切换请求事件,播放器上层150获取该切换请求事件后,更新播放器引擎130中的动态更新地址接口。另外,在当前视频播放过程中,如果播放器引擎130检测到播放错误或出现卡顿,则会发送播放错误事件或播放卡顿事件至码率切换处理模块140;码率切换处理逻辑140根据播放器引擎130抛送的播放错误事件以及播放卡顿事件,并且根据实际出错源的实际码率来决定是否进行降码率处理,并把视频切换事件通知播放器上层150。可见,播放器上层150可以获取的视频切换事件包括用户终端的切换请求事件、播放错误事件或播放卡顿事件。
播放器引擎130通过检测动态更新地址接口的状态信息获取到与用户所选画质信息对应的切换信息。依据该切换信息,播放器引擎130执行前述实施例所示的视频源切换方法,完成视频源的平滑切换。
示例性的,当用户点击了“HDR臻彩世界”选项,即触发了用户终端的切换请求事件时,生成用户播放指令,播放器响应于该用户播放指令并完成HDR视频源的切换后,会显示如图7(d)中信息提示框760所示的视频源切换提示信息,提示用户已经完成视频源的切换。
可选的,对于依据播放错误事件或播放卡顿事件生成的用户播放指令,播放器在响应于该用户播放指令并完成视频源的切换后,同样也可以在信息提示框760显示视频源切换提示信息。
需要说明的是,上述界面中关于画质信息的具体表述,所涉及到的提示信息等信息显示的具体内容和位置均可灵活设置,在此不做限制。
本实施例提供的视频播放方法,根据视频切换事件对视频源进行切换,实现了视频播放过程中的平滑切换。
图8为本申请一个实施例提供的视频源切换装置的结构示意图,包括获取模块810、定位模块820、查询模块830、第二视频源定位模块840和切换模块850,其中,
获取模块810,用于获取切换信息;
定位模块820,用于根据所述切换信息确定第一视频源的第一关键帧,所述第一关键帧为所述第一视频源当前播放时间的下一个关键帧;
查询模块830,用于查询所述第一关键帧的第一时间值;
第二视频源定位模块840,用于根据所述切换信息定位第二视频源;
切换模块850,用于当所述第二视频源的当前时间值与所述第一时间值的距离小于或等于预设阈值时进行视频源的切换。
本实施例提供的视频源切换装置,在进行不同视频源的切换时,将第二视频源的切换时间点设置为第一视频源对应关键帧的时间值处,实现了不同视频源之间的平滑切换。
本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行前述各个实施例所述的方法。
具体地,计算机设备可以是用户终端,也可以是服务器。
本申请实施例以计算机设备是用户终端为例,具体如下:
如图9所示,计算机设备900可以包括RF(Radio Frequency,射频)电路910、包括有一个或一个以上计算机可读存储介质的存储器920、输入单元930、显示单元940、传感器950、音频电路960、短距离无线传输模块970、包括有一个或者一个以上处理核心的处理器980、以及电源990等部件。本领域技术人员可以理解,图6中示出的设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路910可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器980处理;另外,将涉及上行的数据发送给基站。通常,RF电路910包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路910还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器920可用于存储软件程序以及模块。处理器980通过运行存储在存储器920的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据设备900的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器920还可以包括存储器控制器,以提供处理器980和输入单元930对存储器920的访问。虽然图6示出了RF电路910,但是可以理解的是,其并不属于设备900的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
输入单元930可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元930可包括触敏表面931以及其他输入设备932。触敏表面931,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面931上或在触敏表面931附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面931。除了触敏表面931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及控制900的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元940可包括显示面板941,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板941。进一步的,触敏表面931可覆盖在显示面板941之上,当触敏表面931检测到在其上或附近的触摸操作后,传送给处理器980以确定触摸事件的类型,随后处理器980根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图6中,触敏表面931与显示面板941是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面931与显示面板941集成而实现输入和输出功能。
计算机设备900还可包括至少一种传感器950,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在设备900移动到耳边时,关闭显示面板941和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于设备900还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路960、扬声器961,传声器962可提供用户与设备900之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号输出;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910以发送给另一控制设备,或者将音频数据输出至存储器920以便进一步处理。音频电路960还可能包括耳塞插孔,以提供外设耳机与设备900的通信。
短距离无线传输模块970可以是WIFI(wireless fidelity,无线保真)模块、蓝牙模块或红外线模块等。设备900通过短距离无线传输模块970可以与对战设备上设置的无线传输模块进行信息的传输。
处理器980是设备900的控制中心,利用各种接口和线路连接整个控制设备的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行设备900的各种功能和处理数据,从而对控制设备进行整体监控。可选的,处理器980可包括一个或多个处理核心;可选的,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器950中。
设备900还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源990还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,设备900还可以包括摄像头、蓝牙模块等,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行前述各个实施例所述的方法。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于上述方法实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
以上是对本申请的较佳实施进行了具体说明,但本申请并不限于所述实施例,熟悉本领域的技术人员在不违背本申请精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。