视频播放方法、装置及设备
技术领域
本公开涉及应用程序开发技术领域,尤其涉及一种视频播放方法、装置及设备。
背景技术
在Android系统中,Activity是一个应用程序组件,通过提供一个屏幕为用户提供交互功能。例如,Activity中可以包括可滑动组件、视频播放组件等,从而为用户提供视频播放、滑动等功能。
相关技术中,通常在当前Activity的根布局下增加视频播放组件,在可滑动组件开始滑动时,通过位置同步不断调整视频播放组件的位置,使视频播放组件跟随可滑动组件滑动,给用户呈现出一种视频播放组件就在可滑动组件中的感觉。然而,该方案中视频播放组件的位置调整是间歇性的,无法做到100%跟手,并且由于调用时机差异,同步调整位置的代码往往不能及时生效,导致视频播放组件遮挡可滑动组件内容。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本公开的第一个目的在于提出一种视频播放方法,通过将视频播放组件添加至可滑动组件的项目中,实现了当可滑动组件开始滑动时,视频播放组件会自动跟随可滑动组件进行滑动,实现100%跟手,降低了视频播放组件位置调整的延迟,避免视频播放组件遮挡可滑动组件中的其他内容。
本公开的第二个目的在于提出一种视频播放装置。
本公开的第三个目的在于提出一种电子设备。
本公开的第四个目的在于提出一种非临时性计算机可读存储介质。
本公开第一方面实施例提出了一种视频播放方法,包括:
确定待布局的可滑动组件;
将视频播放组件添加至所述可滑动组件的项目中;
控制所述视频播放组件进行视频播放。
本公开实施例的视频播放方法,通过确定待布局的可滑动组件,进而将视频播放组件添加至可滑动组件的项目中,进一步控制视频播放组件进行视频播放。本实施例中,通过将视频播放组件添加至可滑动组件的项目中,在播放视频时若可滑动组件开始滑动,由于视频播放组件设置在项目中,视频播放组件会自动跟随可滑动组件进行滑动,实现100%跟手,降低了视频播放组件位置调整的延迟,避免视频播放组件遮挡可滑动组件中的其他内容。并且,由于不需要进行位置的同步,不再需要位置同步相关的代码,降低了代码量,解决了代码复杂度高的问题,降低bug数量。
另外,根据本公开上述实施例的视频播放方法还可以具有如下附加技术特征:
可选地,所述将视频播放组件添加至所述可滑动组件的项目中,包括:将所述视频播放组件的布局直接添加至所述可滑动组件的项目布局中;或者,通过新建的方式在所述可滑动组件的项目布局中创建所述视频播放组件。
可选地,所述控制所述视频播放组件进行视频播放,包括:接收全屏播放指令;将所述视频播放组件从当前项目中移除,并添加至应用程序根布局中;调整所述视频播放组件的大小与屏幕方向,以使所述视频播放组件全屏播放视频。
可选地,所述将所述视频播放组件从当前项目中移除,并添加至应用程序根布局中包括:将所述视频播放组件从当前项目中移除,并添加至应用程序根布局的最上层。
可选地,在调整所述视频播放组件的大小与屏幕方向,以使所述视频播放组件全屏播放视频之后,还包括:接收退出全屏指令;确定与所述视频播放组件对应的目标项目;将所述视频播放组件从所述应用程序根布局中移除,并添加至所述目标项目中;调整所述视频播放组件的大小与屏幕方向。
可选地,所述确定与所述视频播放组件对应的目标项目,包括:比较所述视频播放组件对应的第一视频源与所述可滑动组件中各项目对应的视频源;从所述各项目对应的视频源中确定与所述第一视频源一致的第二视频源,并确定与所述第二视频源对应的项目为目标项目。
本公开第二方面实施例提出了一种视频播放装置,包括:
确定模块,用于确定待布局的可滑动组件;
处理模块,用于将视频播放组件添加至所述可滑动组件的项目中;
播放模块,用于控制所述视频播放组件进行视频播放。
本公开实施例的视频播放装置,通过确定待布局的可滑动组件,进而将视频播放组件添加至可滑动组件的项目中,进一步控制视频播放组件进行视频播放。本实施例中,通过将视频播放组件添加至可滑动组件的项目中,在播放视频时若可滑动组件开始滑动,由于视频播放组件设置在项目中,视频播放组件会自动跟随可滑动组件进行滑动,实现100%跟手,降低了视频播放组件位置调整的延迟,避免视频播放组件遮挡可滑动组件中的其他内容。并且,由于不需要进行位置的同步,不再需要位置同步相关的代码,降低了代码量,解决了代码复杂度高的问题,降低bug数量。
另外,根据本公开上述实施例的视频播放装置还可以具有如下附加技术特征:
可选地,所述播放模块包括:接收单元,用于接收全屏播放指令;处理单元,用于将所述视频播放组件从当前项目中移除,并添加至应用程序根布局中;调整单元,用于调整所述视频播放组件的大小与屏幕方向,以使所述视频播放组件全屏播放视频。
可选地,所述处理单元具体用于:将所述视频播放组件从当前项目中移除,并添加至应用程序根布局的最上层。
可选地,所述接收单元还用于:接收退出全屏指令;
所述播放模块还包括:确定单元,用于确定与所述视频播放组件对应的目标项目;
所述处理单元还用于:将所述视频播放组件从所述应用程序根布局中移除,并添加至所述目标项目中;
所述调整单元还用于:调整所述视频播放组件的大小与屏幕方向。
可选地,所述确定单元具体用于:比较所述视频播放组件对应的第一视频源与所述可滑动组件中各项目对应的视频源;从所述各项目对应的视频源中确定与所述第一视频源一致的第二视频源,并确定与所述第二视频源对应的项目为目标项目。
本公开第三方面实施例提出了一种电子设备,包括处理器和存储器;其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如第一方面实施例所述的视频播放方法。
本公开第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面实施例所述的视频播放方法。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
图1为本公开实施例所提供的一种视频播放方法的流程示意图;
图2为本公开实施例所提供的另一种视频播放方法的流程示意图;
图3为本公开实施例所提供的另一种视频播放方法的流程示意图;
图4为本公开实施例所提供的一种视频播放装置的结构示意图;
图5为本公开实施例所提供的另一种视频播放装置的结构示意图;
图6示出了适于用来实现本公开实施例的示例性电子设备的框图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
下面参考附图描述本公开实施例的视频播放方法、装置及设备。
图1为本公开实施例所提供的一种视频播放方法的流程示意图,如图1所示,该方法包括:
步骤101,确定待布局的可滑动组件。
本公开实施例的视频播放方法可以应用于电子设备。其中,电子设备包括但不限于智能手机、平板电脑、个人数字助理、穿戴式设备等具有视频播放功能的设备。
本实施例中,可以设置视频播放组件,以通过视频播放组件播放视频。比如,可以先确定待布局的可滑动组件,以便于进一步将视频播放组件添加至可滑动组件的布局中。
例如,以Android系统为例,在将视频播放组件添加至ListView布局中时,确定该ListView组件为待布局的可滑动组件。其中,可滑动组件包括但不限于ListView、RecyclerView、ViewPager等可滑动的组件。
步骤102,将视频播放组件添加至可滑动组件的项目中。
在本公开的一个实施例中,将视频播放组件的布局直接添加至可滑动组件的项目布局中。例如,以可滑动组件为ListView组件为例,可以将视频播放组件的相关布局加入ListView的Item布局,以使系统通过调用new View的方式将视频播放组件添加至可滑动组件ListView的项目Item中。
在本公开的一个实施例中,通过新建的方式在可滑动组件的项目布局中创建视频播放组件。例如,以可滑动组件为ListView组件为例,可以直接通过new View的方式在ListView中创建视频播放组件,从而实现将视频播放组件添加至可滑动组件ListView的项目Item中。
其中,可滑动组件中可以包括一个或多个项目Item。
需要说明的是,上述将视频播放组件添加至可滑动组件的项目中的实现方式仅仅是示例性的,本领域技术人员可以根据需要进行设置,此处不作限制。
步骤103,控制视频播放组件进行视频播放。
在本公开的一个实施例中,在将视频播放组件添加至可滑动组件的项目中之后,可以由用户触发视频播放指令,比如以触发视频播放按键的形式触发视频播放指令。进而,电子设备接收视频播放指令,控制视频播放组件进行视频播放。
在本公开的一个实施例中,在进行全屏视频播放时,电子设备还可以接收全屏播放指令,进而,将视频播放组件从当前项目中移除,并添加至应用程序根布局中。进一步,调整所述视频播放组件的大小与屏幕方向,并隐藏应用程序根布局中的其他组件,以使视频播放组件全屏播放视频。
可以理解,相关技术中在设置视频播放组件时,通常在应用程序根布局下添加视频播放组件。而当ListView等可滑动组件开始滑动时,例如在用户浏览新闻并滑动新闻推送列表时,若列表中某一项目的位置处包括视频播放组件,需要在onScroll回调中不断调整视频播放组件的位置,使视频播放组件跟随ListView滑动,从而使视频播放组件不会挡住ListView中的内容,同时给用户呈现出一种视频播放组件就在ListView中的视觉效果。然而,由于onScroll回调有间歇性,因此视频播放组件的位置调整也是间歇性的,无法做到100%跟手,视频播放组件的位置调整延迟在低端机型上尤为明显。由于调用时机差异,同步调整位置的代码往往不能及时生效,会出现视频播放组件遮挡ListView的情况。维护同步位置的代码量大,复杂度高,bug较多。
本公开实施例的视频播放方法,通过确定待布局的可滑动组件,进而将视频播放组件添加至可滑动组件的项目中,进一步控制视频播放组件进行视频播放。本实施例中,通过将视频播放组件添加至可滑动组件的项目中,在播放视频时若可滑动组件开始滑动,由于视频播放组件设置在项目中,视频播放组件会自动跟随可滑动组件进行滑动,实现100%跟手,降低了视频播放组件位置调整的延迟,避免视频播放组件遮挡可滑动组件中的其他内容。并且,由于不需要进行位置的同步,不再需要位置同步相关的代码,降低了代码量,解决了代码复杂度高的问题,降低bug数量。
基于上述实施例,进一步地,本公开实施例的视频播放方法,可以实现视频播放组件的全屏播放,下面针对全屏播放的情况进行详细说明。
图2为本公开实施例所提供的另一种视频播放方法的流程示意图,如图2所示,在将视频播放组件添加至可滑动组件的项目中之后,该方法包括:
步骤201,接收全屏播放指令。
作为一种可能的实现方式,可以预先设置全屏播放按键,用户通过该按键触发全屏播放指令。进而,电子设备接收该全屏播放指令,以进一步控制视频播放组件变为全屏模式。
其中,全屏播放指令的实现形式包括但不限于按键触发、语音触发、触摸轨迹触发等。
步骤202,将视频播放组件从当前项目中移除,并添加至应用程序根布局的最上层。
作为一种示例,以ListView为例,可以将视频播放组件从ListView的当前Item中移除,并将视频播放组件添加至当前Activity的根布局的最上层。
在本公开的一个实施例中,还可以将视频播放组件从当前项目中移除时,并添加至应用程序根布局中。例如,可以将视频播放组件从ListView的当前Item中移除,并将视频播放组件添加至当前Activity的根布局的任意一层。进而,调整视频播放组件的大小与屏幕方向,并隐藏可能挡住视频播放组件的其他组件,以使视频播放组件全屏播放视频。
步骤203,调整视频播放组件的大小与屏幕方向,以使视频播放组件全屏播放视频。
作为一种可能的实现方式,可以将视频播放组件调整至全屏大小,并获取视频播放组件的比例,根据比例调整屏幕方向,例如,可以根据比例将视频播放组件对应的屏幕方向调整为横屏。由于视频播放组件在根布局的最上层,其他组件自然会被遮挡,因此无需额外的隐藏组件操作。
基于上述实施例,进一步地,本公开实施例的视频播放方法,还可以实现视频播放组件退出全屏播放,下面针对退出全屏播放的情况进行详细说明。
图3为本公开实施例所提供的另一种视频播放方法的流程示意图,如图3所示,在将视频播放组件添加至可滑动组件的项目中之后,该方法包括:
步骤301,接收退出全屏指令。
作为一种可能的实现方式,可以预先设置退出全屏按键,用户通过该按键触发退出全屏指令。进而,电子设备接收该退出全屏指令,以进一步控制视频播放组件退出全屏模式。
其中,退出全屏指令的实现形式包括但不限于按键触发、语音触发、触摸轨迹触发等。
步骤302,确定与视频播放组件对应的目标项目。
在本公开的一个实施例中,可以比较视频播放组件对应的第一视频源与可滑动组件中各项目对应的视频源,进而,从各项目对应的视频源中确定与第一视频源一致的第二视频源,并确定与该第二视频源对应的项目为目标项目。例如,视频播放组件对应视频源A,可滑动组件中项目1对应视频源A、项目2对应视频源B,比较获知项目1为目标项目。其中,视频源可以是视频源地址。
需要说明的是,上述确定目标项目的实现方式仅仅是一种示例,还可以通过预先设置标识信息并匹配的方式确定目标项目,此处不作限制。
可选地,当可滑动组件中的视频源不重复时,只有一个可滑动组件中的视频源与第一视频源一致,确定与第一视频源一致的视频源对应的项目作为目标项目;当可滑动组件中的视频源存在重复时,可以按照预设顺序比较第一视频源与可滑动组件中的视频源,并将匹配到的第一个一致的视频源对应的项目作为目标项目。
步骤303,将视频播放组件从应用程序根布局中移除,并添加至目标项目中。
步骤304,调整视频播放组件的大小与屏幕方向。
本实施例中,在确定目标项目后,可以将视频播放组件从应用程序根布局中移除,并添加至目标项目中,例如,以ListView为例,可以将视频播放组件从从当前Activity的根布局下移除,并将视频播放组件添加至确定的目标Item中。进而,调整视频播放组件的大小与屏幕方向。
作为一种示例,可以获取目标项目的大小,进而,将视频播放组件大小调整至目标项目的大小,并恢复视频播放组件的屏幕方向。
本公开实施例的视频播放方法,通过将视频播放组件从当前项目中移除,并添加至应用程序根布局的最上层,并调整视频播放组件的大小与屏幕方向至全屏模式,实现了视频播放组件的全屏播放。通过确定与视频播放组件对应的目标项目,将视频播放组件从应用程序根布局中移除,并添加至目标项目中,进而调整视频播放组件的大小与屏幕方向,实现了视频播放组件退出全屏播放,保证了本公开实施例中视频播放的可靠性。
为了实现上述实施例,本公开还提出一种视频播放装置。
图4为本公开实施例所提供的一种视频播放装置的结构示意图,如图4所示,该装置包括:确定模块100,处理模块200,播放模块300。
其中,确定模块100,用于确定待布局的可滑动组件.
处理模块200,用于将视频播放组件添加至可滑动组件的项目中。
播放模块300,用于控制视频播放组件进行视频播放。
在图4的基础上,图5所示的视频播放装置中,播放模块300包括:接收单元310,处理单元320,调整单元330,确定单元340。
其中,接收单元310,用于接收全屏播放指令。
处理单元320,用于将视频播放组件从当前项目中移除,并添加至应用程序根布局中。
调整单元330,用于调整视频播放组件的大小与屏幕方向,以使视频播放组件全屏播放视频。
进一步地,处理单元320具体用于将视频播放组件从当前项目中移除,并添加至应用程序根布局的最上层。
进一步地,接收单元310还用于:接收退出全屏指令;
播放模块300还包括:确定单元340,用于确定与视频播放组件对应的目标项目;
处理单元320还用于:将视频播放组件从应用程序根布局中移除,并添加至目标项目中;
调整单元330还用于:调整视频播放组件的大小与屏幕方向。
进一步地,确定单元340具体用于:比较视频播放组件对应的第一视频源与可滑动组件中各项目对应的视频源;从所述各项目对应的视频源中确定与所述第一视频源一致的第二视频源,并确定与第二视频源对应的项目为目标项目。
进一步地,处理模块200具体用于:将视频播放组件的布局直接添加至可滑动组件的项目布局中;或者,通过新建的方式在可滑动组件的项目布局中创建视频播放组件。
需要说明的是,前述实施例中对视频播放方法的解释说明同样适用于本实施例的视频播放装置,此处不再赘述。
本公开实施例的视频播放装置,通过确定待布局的可滑动组件,进而将视频播放组件添加至可滑动组件的项目中,进一步控制视频播放组件进行视频播放。本实施例中,通过将视频播放组件添加至可滑动组件的项目中,在播放视频时若可滑动组件开始滑动,由于视频播放组件设置在项目中,视频播放组件会自动跟随可滑动组件进行滑动,实现100%跟手,降低了视频播放组件位置调整的延迟,避免视频播放组件遮挡可滑动组件中的其他内容。并且,由于不需要进行位置的同步,不再需要位置同步相关的代码,降低了代码量,解决了代码复杂度高的问题,降低bug数量。
为了实现上述实施例,本公开还提出一种电子设备,包括处理器和存储器;其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现如前述任一实施例所述的视频播放方法。
为了实现上述实施例,本公开还提出一种计算机程序产品,当计算机程序产品中的指令被处理器执行时实现如前述任一实施例所述的视频播放方法。
为了实现上述实施例,本公开还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述任一实施例所述的视频播放方法。
图6示出了适于用来实现本公开实施例的示例性电子设备的框图。图6显示的电子设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
在本公开的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。