基于RN的视频播放方法、系统及电子设备和存储介质与流程

文档序号:19183869发布日期:2019-11-20 01:17阅读:306来源:国知局
基于RN的视频播放方法、系统及电子设备和存储介质与流程

本申请涉及计算机技术领域,更具体地说,涉及一种基于rn的视频播放方法、系统及一种电子设备和一种计算机可读存储介质。



背景技术:

rn(reactnative)是一种开源的跨平台移动应用开发框架,rn使用javascript语言,熟悉web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域,因此利用rn框架开发移动应用已经成为安卓系统开发的主要形式。

近几年流行的reactnative技术使得移动端开发更高效、快速,但在当前reactnative生态中,并没有一款媒体封装格式支持齐全的播放器可用。例如,比较流行的react-native-video组件,无法播放flv、rmvb等格式。

因此,如何增加reactnative框架下可播放视频的格式种类是本领域技术人员需要解决的问题。



技术实现要素:

本申请的目的在于提供一种基于reactnative的视频播放方法、系统及一种电子设备和一种计算机可读存储介质,增加reactnative框架下可播放视频的格式种类。

为实现上述目的,本申请提供了一种基于reactnative的视频播放方法,包括:

确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;

利用所述目标实现类创建目标多媒体播放器的视图类,以便所述视图类向所述目标实现类传递视图对象;其中,所述视图类继承安卓系统中的textureview类;

通过继承reactnative中的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类;

利用所述目标多媒体播放器播放视频。

可选的,还包括:

利用所述视图类执行视频画面尺寸调整操作。

可选的,利用所述目标多媒体播放器播放视频包括:

依次调用所述目标实现类中的setdatasource函数、prepareasync函数和start函数播放视频。

可选的,javascript接口为实现了reactnative的lifecycleeventlistener接口。

可选的,所述目标实现类中定义的接口包括onpreparedlistener、onerrorlistener、onbufferingupdatelistener、onseekcompletelistener、oncompletionlistener和oninfolistener。

可选的,所述目标播放器为aplayer。

为实现上述目的,本申请提供了一种基于reactnative的视频播放系统,包括:

封装模块,用于确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;

视图类创建模块,用于利用所述目标实现类创建目标多媒体播放器的视图类,以便所述视图类向所述目标实现类传递视图对象;其中,所述视图类继承安卓系统中的textureview类;

视图管理类创建模块,用于通过继承reactnative的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类;

播放模块,用于利用所述目标多媒体播放器播放视频。

为实现上述目的,本申请提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基于reactnative的视频播放程序,所述基于reactnative的视频播放程序被所述处理器执行时实现:确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;利用所述目标实现类创建目标多媒体播放器的视图类,以便所述视图类向所述目标实现类传递视图对象;其中,视图类继承安卓系统中的textureview类;通过继承reactnative中的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类;利用所述目标多媒体播放器播放视频。

可选的,所述基于reactnative的视频播放程序被所述处理器执行时还实现:利用所述视图类执行视频画面尺寸调整操作。

为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有基于reactnative的视频播放程序,所述基于reactnative的视频播放程序被处理器执行时实现如上述基于reactnative的视频播放方法的步骤。

通过以上方案可知,本申请提供的一种基于reactnative的视频播放方法,包括:确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;利用所述目标实现类创建目标多媒体播放器的视图类,以便视图类向所述目标实现类传递视图对象;其中,视图类继承安卓系统中的textureview类;通过继承reactnative中的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类;利用所述目标多媒体播放器播放视频。

本申请通过对已知目标多媒体播放器的实现类的重新封装,使其中的方法调用方式与安卓系统的原生多媒体播放器一致,进而在reactnative框架下实现了目标多媒体播放器的目标实现类中的相关方法的调用。利用目标实现类创建视图类,该视图类用于为目标多媒体播放器的视频播放提供视图。视图管理类继承自reactnative框架的simpleviewmanager类,其管理的对象类型继承自视图类,进而实现了为reactnative框架下的目标多媒体播放器提供视图。由此可见,本申请通过相关类创建和类继承操作的处理,实现了在reactnative框架下使用目标多媒体播放器进行视频播放,由于目标多媒体播放器可以播放多种格式的视频,增加reactnative框架下可播放视频的格式种类。

本申请还公开了一种基于reactnative的视频播放系统及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种基于reactnative的视频播放方法的流程图;

图2为本申请实施例提供的另一种基于reactnative的视频播放方法的流程图;

图3为本申请实施例提供的amediaplayer的类图;

图4为本申请实施例提供的一种基于reactnative的视频播放系统的结构图;

图5为本申请实施例提供的一种电子设备的结构图;

图6为本申请实施例公开的另一种电子设备的结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

在现有技术中,在当前reactnative生态中,没有一款媒体封装格式支持齐全的播放器可用。例如,比较流行的react-native-video组件,无法播放flv、rmvb等格式。因此,本申请通过以下几个实施例提供新的基于reactnative的视频播放方法,能够增加reactnative框架下可播放视频的格式种类。

参见图1,本申请实施例公开的一种基于reactnative的视频播放方法,如图1所示,具体步骤包括:

s101:确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;

其中,android系统通常采用java或xml语言开发,reactnative框架则采用javascript和react技术编写页面及相关业务逻辑。本实施例中android原生代码和javascript代码可以通过reactnativebridge等技术实现注册管理和双向通信。

目标多媒体播放器为reactnative框架中的播放器,在本实施例中首先确定目标多媒体播放器在安卓系统中的实现类,实现类可以用来确定软件如何运行。本实施例不限定目标多媒体播放器的具体种类,目标多媒体播放器包括react-native-video组件或amediaplayer。

本实施例对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致。举例说明该过程,例如目标多媒体播放器mediaplayer中播放视频的步骤是:setdatasource->prepareasync->start,而安卓系统原生的多媒体播放器aplayerandroid中的步骤是:setconfig->open->play。在本步骤中把aplayerandroid的方法调用形式转换成跟meidaplayer类似的,以实现兼容mediaplayer。

s102:利用所述目标实现类创建目标多媒体播放器的视图类,以便所述视图类向所述目标实现类传递视图对象;

其中,本步骤中的所述视图类继承安卓系统中的textureview类,在已经得到目标实现类的基础上,利用目标实现类创建目标多媒体播放器的视图类。

s103:通过继承reactnative中的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;

其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类。具体的,所述javascript接口可以为实现了reactnative的lifecycleeventlistener接口,所述目标实现类中定义的接口可以包括onpreparedlistener、onerrorlistener、onbufferingupdatelistener、onseekcompletelistener、oncompletionlistener和oninfolistener中的任一接口和认几个接口的组合,在此不进行限定。

s104:利用所述目标多媒体播放器播放视频。

本实施例通过对已知目标多媒体播放器的实现类的重新封装,使其中的方法调用方式与安卓系统的原生多媒体播放器一致,进而在reactnative框架下实现了目标多媒体播放器的目标实现类中的相关方法的调用。利用目标实现类创建视图类,该视图类用于为目标多媒体播放器的视频播放提供视图。视图管理类继承自reactnative框架的simpleviewmanager类,其管理的对象类型继承自视图类,进而实现了为reactnative框架下的目标多媒体播放器提供视图。由此可见,本实施例通过相关类创建和类继承操作的处理,实现了在reactnative框架下使用目标多媒体播放器进行视频播放,由于目标多媒体播放器可以播放多种格式的视频,增加reactnative框架下可播放视频的格式种类。

本申请实施例公开了另一种基于reactnative的视频播放方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的,请参见图2,本申请实施例提供的另一种基于reactnative的视频播放方法的流程图,如图2所示,包括:

s201:确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;

s202:利用所述目标实现类创建目标多媒体播放器的视图类,以便所述视图类向所述目标实现类传递视图对象;

其中,所述视图类继承安卓系统中的textureview类;

s203:通过继承reactnative中的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;

其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类,所述视图对象类用于适配reactnative的javascript接口和所述目标实现类中定义的接口;

s204:利用所述视图类执行视频画面尺寸调整操作。

其中,视频画面尺寸调整操作可以包括处理视频画面尺寸改变、横竖屏切换。

s205:依次调用所述目标实现类中的setdatasource函数、prepareasync函数和start函数播放视频。

下面通过实际应用的实施例来说上述基于reactnative的视频播放方法,请参见图3,图3为本申请实施例提供的amediaplayer的类图。本实施例通过使用reactnative的原生ui组件封装技术,以及aplayer的安卓版本,提供了一种基于reactnative开发框架的支持丰富媒体封装格式的播放器组件。

reactaplayerviewmananger类是reactnatvie所要求的视图管理类,它继承自simpleviewmanager<reactaplayerview>。

reactaplayerview类是视图管理类所管理的对象类型,继承自aplayerview,并实现了rn的lifecycleeventlistener和amediaplayer的以下interface:

a.lifecycleeventlistener

b.amediaplayer.onpreparedlistener

c.amediaplayer.onerrorlistener

d.amediaplayer.onbufferingupdatelistener

e.amediaplayer.onseekcompletelistener

f.amediaplayer.oncompletionlistener

g.amediaplayer.oninfolistener

aplayerview类是对amediaplayer类的包装,继承自原生的textureview,并实现了textureview.surfacetexturelistener和amediaplayer.onvideosizechangedlistener接口。主要作用是给amediaplayer提供view,并处理视频画面尺寸改变,如横竖屏切换。

amediaplayer类是对原始的aplayerandroid类的包装,目的是把aplayerandroid的接口封装成类似于android原生自带的meidaplayer类。比如mediaplayer中播放视频的步骤是:setdatasource->prepareasync->start,而aplayerandroid中的步骤是:setconfig->open->play。这里需要把aplayerandroid的方法调用形式转换成跟meidaplayer类似的,方便兼容mediaplayer。

上述实施例提供了aplayerandroid版的reactnative实现,为reactnative生态中提供了一款支持丰富封装格式的强大播放器,且该播放器可以兼容android原生的meidaplayer。

下面对本申请实施例提供的一种基于reactnative的视频播放系统进行介绍,下文描述的一种基于reactnative的视频播放系统与上文描述的一种基于reactnative的视频播放方法可以相互参照。

参见图4,本申请实施例提供的一种基于reactnative的视频播放系统的结构图,如图4所示,包括:

封装模块100,用于确定目标多媒体播放器在安卓系统中的实现类,对所述实现类的接口进行封装得到目标实现类,以使所述实现类中方法的调用方式与安卓系统原生的多媒体播放器一致;

视图类创建模块200,用于利用所述目标实现类创建目标多媒体播放器的视图类,以便所述视图类向所述目标实现类传递视图对象;其中,所述视图类继承安卓系统中的textureview类;

视图管理类创建模块300,用于通过继承reactnative的simpleviewmanager类创建视图管理类,以便通过所述视图管理类管理的对象类型适配reactnative的javascript接口和所述目标实现类中定义的接口;其中,所述视图管理类管理的对象类型为视图对象类,所述视图对象类继承所述视图类;

播放模块400,用于利用所述目标多媒体播放器播放视频。

本实施例通过对已知目标多媒体播放器的实现类的重新封装,使其中的方法调用方式与安卓系统的原生多媒体播放器一致,进而在reactnative框架下实现了目标多媒体播放器的目标实现类中的相关方法的调用。利用目标实现类创建视图类,该视图类用于为目标多媒体播放器的视频播放提供视图。视图管理类继承自reactnative框架的simpleviewmanager类,其管理的对象类型继承自视图类,进而实现了为reactnative框架下的目标多媒体播放器提供视图。由此可见,本实施例通过相关类创建和类继承操作的处理,实现了在reactnative框架下使用目标多媒体播放器进行视频播放,由于目标多媒体播放器可以播放多种格式的视频,增加reactnative框架下可播放视频的格式种类。

进一步的,该系统还包括:

尺寸调整模块,用于利用所述视图类执行视频画面尺寸调整操作。

进一步的,播放模块400具体为依次调用所述目标实现类的setdatasource函数、prepareasync函数和start函数播放视频的模块。

本申请还提供了一种电子设备,该电子设备可以是pc(personalcomputer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。

参见图5,本申请实施例提供的一种电子设备的结构图,如图5所示,可以包括存储器11、处理器12和总线13。

其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的硬盘。存储器11在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装电子设备的应用软件及各类数据,例如基于reactnative的视频播放程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,实现上述任一实施例提供的基于reactnative的视频播放方法,例如执行基于reactnative的视频播放程序01等。

该总线13可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

上述实施例的基础上,作为优选实施方式,参见图6,所述电子设备还包括:

输入接口14,用于获取外部导入的计算机程序、参数和指令,经处理器12控制保存至存储器11中。该输入接口14可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘(keyboard)、触控板或鼠标等。

显示单元15,用于显示处理器12处理的数据以及用于显示可视化的用户界面。该显示单元15可以为led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。

网络端口16,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。

图6仅示出了具有组件11-16以及基于reactnative的视频播放程序01的电子设备,本领域技术人员可以理解的是,图6示出的结构并不构成对电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1