首页 / 专利库 / 视听技术与设备 / 视频编码层 / 安卓系统中视频编码方式的选择方法和装置

安卓系统中视频编码方式的选择方法和装置

阅读:581发布:2020-06-02

专利汇可以提供安卓系统中视频编码方式的选择方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供了一种安卓系统中 视频编码 方式的选择方法和装置,该方法包括:用户设备使用 硬件 编码器 对参考视频进行编码;判断所述硬件编码器输出的内容和所述参考视频的预定编码内容的差异是否在预定范围内;如果是,则使用所述硬件编码器对视频进行编码,否则,使用 软件 编码器对视频进行编码。本 申请 提高了视频编码的性能。,下面是安卓系统中视频编码方式的选择方法和装置专利的具体信息内容。

1.一种安卓系统中视频编码方式的选择方法,其特征在于,包括:
用户设备使用硬件编码器对参考视频进行编码;
判断所述硬件编码器输出的内容和所述参考视频的预定编码内容的差异是否在预定范围内;
如果是,则使用所述硬件编码器对视频进行编码,否则,使用软件编码器对视频进行编码。
2.根据权利要求1所述的方法,其特征在于,在用户设备使用硬件编码器对参考视频进行编码之前,所述方法还包括:
检测所述用户设备中硬件编码所需的参数;
根据所述硬件编码所需的参数,生成参数集;
使用所述参数集配置硬件编码器。
3.根据权利要求2所述的方法,其特征在于,根据所述硬件编码所需的参数,生成参数集,包括:
判断所述硬件编码所需的参数中的每一类参数中是否都有预定集合中的参数,其中所述预定集合中的参数能够用于硬件编码;
如果是,在每一类参数中选择所述预定集合中优先级最高的一个参数组成所述参数集。
4.根据权利要求3所述的方法,其特征在于,如果所述硬件编码所需的参数中的某一类参数不包含所述预定集合中的参数,则使用软件编码器对视频进行编码。
5.根据权利要求2所述的方法,其特征在于,检测所述用户设备中硬件编码所需的参数,包括:
通过安卓底层应用程序编程接口API,检测所述用户设备的照相机Camera参数、编码器参数和系统硬件信息,其中,所述编码器参数包括:类别profile和级别level。
6.一种安卓系统中视频编码方式的选择装置,其特征在于,包括:
编码单元,用于使用硬件编码器对参考视频进行编码;
判断单元,用于判断所述硬件编码器输出的内容和所述参考视频的预定编码内容的差异是否在预定范围内;
控制单元,用于在判断结果为是的情况下,使用所述硬件编码器对视频进行编码,在判断结果为否的情况下,使用软件编码器对视频进行编码。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
检测单元,用于在使用硬件编码器对参考视频进行编码之前,检测所述装置中硬件编码所需的参数;
生成单元,用于根据所述硬件编码所需的参数,生成参数集;
配置单元,用于使用所述参数集配置硬件编码器。
8.根据权利要求7所述的装置,其特征在于,所述生成单元用于:
判断所述硬件编码所需的参数中的每一类参数中是否都有预定集合中的参数,其中所述预定集合中的参数能够用于硬件编码;
如果是,在每一类参数中选择所述预定集合中优先级最高的一个参数组成所述参数集。
9.根据权利要求8所述的装置,其特征在于,所述控制单元还用于在所述硬件编码所需的参数中的某一类参数不包含所述预定集合中的参数,使用软件编码器对视频进行编码。
10.根据权利要求7所述的装置,其特征在于,所述检测单元还用于通过安卓底层应用程序编程接口API,检测用户设备的照相机Camera参数、编码器参数和系统硬件信息,其中,所述编码器参数包括:类别profile和级别level。

说明书全文

安卓系统中视频编码方式的选择方法和装置

技术领域

[0001] 本发明涉及视频编码技术领域,特别是涉及一种安卓系统中视频编码方式的选择方法和装置。

背景技术

[0002] 安卓系统上的视频编辑软件可以采用软件编码或者硬件编码两种编码方案,软件编码的优势在于兼容性好,但是,其具有性能差和功耗高的缺点。相比软件编码方案,硬件编码方案更好的性能和更低的功耗,但是,由于安卓终端的多样化,导致硬件编码器的实现也各不相同,这对应用的终端适配提出了很高的要求。因此,安卓系统上现有的视频编辑软件基本都是直接调用了FFMPEG(一个开源多媒体库)的软件编码器,而不支持硬件编码,其中,FFMPEG是一个开源多媒体支持库,采用纯软件的方式实现了对各种视频编码标准的支持,可支持安卓系统。
[0003] 因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何尽可能提高安卓系统视频编码的性能。

发明内容

[0004] 本发明实施例所要解决的技术问题是提供一种安卓系统中视频编码方式的选择方法,以便提高安卓系统视频编码的性能。
[0005] 相应的,本发明实施例还提供了一种安卓系统中视频编码方式的选择装置,用以保证上述方法的实现及应用。
[0006] 为了解决上述问题,本发明公开了一种安卓系统中视频编码方式的选择方法,包括:用户设备使用硬件编码器对参考视频进行编码;判断所述硬件编码器输出的内容和所述参考视频的预定编码内容的差异是否在预定范围内;如果是,则使用所述硬件编码器对视频进行编码,否则,使用软件编码器对视频进行编码。
[0007] 优选地,在用户设备使用硬件编码器对参考视频进行编码之前,所述方法还包括:检测所述用户设备中硬件编码所需的参数;根据所述硬件编码所需的参数,生成参数集;使用所述参数集配置硬件编码器。
[0008] 优选地,根据所述硬件编码所需的参数,生成参数集,包括:判断所述硬件编码所需的参数中的每一类参数中是否都有预定集合中的参数,其中所述预定集合中的参数能够用于硬件编码;如果是,在每一类参数中选择所述预定集合中优先级最高的一个参数组成所述参数集。
[0009] 优选地,如果所述硬件编码所需的参数中的某一类参数不包含所述预定集合中的参数,则使用软件编码器对视频进行编码。
[0010] 优选地,检测所述用户设备中硬件编码所需的参数,包括:通过安卓底层应用程序编程接口API,检测所述用户设备的照相机Camera参数、编码器参数和系统硬件信息,其中,所述编码器参数包括:类别profile和级别level。
[0011] 为了解决上述问题,本发明公开了一种安卓系统中视频编码方式的选择装置,包括:编码单元,用于使用硬件编码器对参考视频进行编码;判断单元,用于判断所述硬件编码器输出的内容和所述参考视频的预定编码内容的差异是否在预定范围内;控制单元,用于在判断结果为是的情况下,使用所述硬件编码器对视频进行编码,在判断结果为否的情况下,使用软件编码器对视频进行编码。
[0012] 优选地,所述装置还包括:检测单元,用于在使用硬件编码器对参考视频进行编码之前,检测所述装置中硬件编码所需的参数;生成单元,用于根据所述硬件编码所需的参数,生成参数集;配置单元,用于使用所述参数集配置硬件编码器。
[0013] 优选地,所述生成单元用于:判断所述硬件编码所需的参数中的每一类参数中是否都有预定集合中的参数,其中所述预定集合中的参数能够用于硬件编码;如果是,在每一类参数中选择所述预定集合中优先级最高的一个参数组成所述参数集。
[0014] 优选地,所述控制单元还用于在所述硬件编码所需的参数中的某一类参数不包含所述预定集合中的参数,使用软件编码器对视频进行编码。
[0015] 优选地,所述检测单元用于通过安卓底层应用程序编程接口API,检测所述用户设备的照相机Camera参数、编码器参数和系统硬件信息,其中,所述编码器参数包括:类别profile和级别level。
[0016] 与现有技术相比,本发明实施例包括以下优点:
[0017] 在现有技术中,安卓系统上现有的视频编辑软件基本都是直接调用了FFMPEG的软件编码器,而不支持硬件编码,导致视频编码的性能较差。在本申请中,先使用硬件编码器对参考视频进行编码,如果编码结果和预设结果的差异较小,则表示可以使用硬件编码器进行编码,此时,使用硬件编码器进行编码,通过这样的方式,提高了视频编码的性能。附图说明
[0018] 图1是本发明的一种安卓系统中视频编码方式的选择方法实施例的步骤流程图
[0019] 图2是本发明的另一种安卓系统中视频编码方式的选择方法实施例的步骤流程图;
[0020] 图3是本发明的一种安卓系统中视频编码方式的选择装置实施例的结构框图
[0021] 图4是本发明的一种安卓系统中视频编码方式的选择装置实施例的优选的结构框图。

具体实施方式

[0022] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0023] 本发明实施例的核心构思之一在于,用户设备使用硬件编码器对参考视频进行编码;判断硬件编码器输出的内容和参考视频的预定编码内容的差异是否在预定范围内;如果是,则使用硬件编码器对视频进行编码,否则,使用软件编码器对视频进行编码。在现有技术中,安卓系统上现有的视频编辑软件基本都是直接调用了FFMPEG的软件编码器,而不支持硬件编码,导致视频编码的性能较差。在本申请中,先使用硬件编码器对参考视频进行编码,如果编码结果和预设结果的差异较小,则表示可以使用硬件编码器进行编码,此时,使用硬件编码器进行编码,通过这样的方式,提高了视频编码的性能。
[0024] 参照图1,示出了本发明的一种安卓系统中视频编码方式的选择方法实施例的步骤流程图,具体可以包括如下步骤:
[0025] 步骤102,用户设备使用硬件编码器对参考视频进行编码;其中,该用户设备使用安卓操作系统
[0026] 在本发明实施例的一个优选实施方式中,在使用硬件编码器对参考视频进行编码之前,可以对编码器进行配置,配置的方式可以包括:检测用户设备中硬件编码所需的参数;根据检测到的硬件编码所需的参数,生成参数集;使用生成的参数集配置硬件编码器。在本实施例中,使用测量到的用户设备的参数来对硬件编辑器进行配置,使得硬件编辑器的参数和用户设备相匹配,从而获得较好的视频编码性能。
[0027] 在本发明实施例的一个优选实例中,可以通过以下方式来生成参数集:判断硬件编码所需的参数中的每一类参数中是否都有预定集合中的参数,其中预定集合中的参数能够用于硬件编码;如果是,在每一类参数中选择预定集合中优先级最高的一个参数组成参数集。如果硬件编码所需的参数中的某一类参数不包含预定集合中的参数,则使用软件编码器对视频进行编码。优选地,硬件编码所需的参数包括不同的类别,例如,包括:用户设备的照相机(Camera)参数、编码器(Codec)参数、类别(profile)、级别(level)和系统硬件信息,这些参数可以通过安卓底层参数获得。预定集合中的参数是能够用于硬件编码的参数,因此,在检测用户设备中硬件编码所需的参数之后,判断每一类别检测到的参数中是否都包含预定集合的参数,例如,先判断检测到的Camera参数是否包含预定集合中的Camera参数,如果是,则表示检测到的Camera参数存在能够用于硬件编码的参数,从能够用于硬件编码的Camera参数中选取优先级最高的一个写入参数集,其他类别的参数也采用类似的方法选取参数写入参数集,这样获得的参数集能够在该用户设备中进行硬件编码。在本实施例中,可以通过多种接口获取不同安卓终端硬件相关的所有参数,然后从获取最优参数的度出发,设定了一系列的规则,从参数集中自动选择一组最优参数,从而减少了针对不同终端手工适配参数所需要的时间。
[0028] 步骤104,判断硬件编码器输出的内容和参考视频的预定编码内容的差异是否在预定范围内;
[0029] 在配置硬件编码器之后,还需要确定硬件编码器进行硬件编码时的性能是否满足要求,这可以通过参考视频来确定。在参考视频确定之后,参考视频的预定编码内容也就确定下来了,此时,只需要判断硬件编码器对参考视频的编码结果和参考视频的预定编码内容是否满足要求,就可以确定出硬件编码器进行硬件编码时的性能是否满足要求,其中,预定范围是可以根据经验或具体情况来确定的。
[0030] 步骤106,如果硬件编码器输出的内容和参考视频的预定编码内容的差异在预定范围内,则使用硬件编码器对视频进行编码,否则,使用软件编码器对视频进行编码。
[0031] 如果硬件编码器输出的内容和参考视频的预定编码内容的差异在预定范围内,就可以确定出硬件编码器进行硬件编码时的性能满足要求,此时,可以使用硬件编码器对视频进行编码;否则,硬件编码器进行硬件编码时的性能不满足要求,使用软件编码器对视频进行编码。
[0032] 在现有技术中,安卓系统上现有的视频编辑软件基本都是直接调用了FFMPEG的软件编码器,而不支持硬件编码,导致视频编码的性能较差。在本实施例中,先使用硬件编码器对参考视频进行编码,如果编码结果和预设结果的差异较小,则表示可以使用硬件编码器进行编码,此时,使用硬件编码器进行编码,通过这样的方式,提高了视频编码的性能。
[0033] 参照图2,示出了本发明的一种安卓系统中视频编码方式的选择方法实施例的步骤流程图,具体可以包括如下步骤:
[0034] 步骤202,对安卓系统Camera和Codec进行初始化,从而获取安卓系统所在的用户设备的Camera和Codec初始化参数。
[0035] 步骤204,用户设备通过安卓底层应用程序编程接口(Application ProgrammingInterface,API)获取Camera参数(包括色彩空间、视频尺寸等)、Codec参数(包括编码码率、视频率、编码格式、编码器profile、编码器level)、以及系统硬件信息。
[0036] 步骤206,根据测量得到的参数和预定集合,生成参数集。其中,预定集合是能够用于硬件编码的参数的集合。
[0037] 在具体实现时,预定集合可以包括:硬件编码器(HwCodec)、类别(High profile、MainProfile、BaselineProfile)、级别(Level4、Level32、Level31、Level1)、色彩空间(ColorFormatYUV420SemiPlanar、YUV420Planar和YCbYCr),其中,HwCodec、Highprofile、Level4和ColorFormatYUV420SemiPlanar的优先级在所属类别的参数中的优先级是最高的 ,如果 测量得到的参数存在HwCodec、Highprofile、Level4、ColorFormatYUV420SemiPlanar,优先选择HwCodec、Highprofile、Level4和ColorFormatYUV420SemiPlanar来作为参数集。如果最高优先权的上述参数不全部被支持,例如,在测量到用于硬件编码的参数中不包含最高优先权的上述参数的至少之一,则按照优先级从高到低的顺序的优先级依次在测量得到的参数中选取,从而选择出一组优先级尽可能高的参数作为生成的参数集,如果测量得到的某一类的参数中不包含能够用于硬件编码的参数,则返回失败标记,使用软件的方式进行视频编码,其中,优先级从高到低的顺序为:MainProfile->BaselineProfile,Level32->Level31->…Level1,YUV420Planar->YCbYCr。另外,也可以针对现有的处理器(AP)厂商(如高通或三星),设置部分预置参数,将预置参数作为参数集中的参数。
[0038] 其中,profile和level都是H.264标准定义的参数,不同的profile和level适用于不同的应用场景,例如,高清或网络视频。H.264是一种高压缩度视频编码标准,适用于绝大多数网络媒体和移动终端。
[0039] 步骤208,使用生成的参数集配置硬件编码器,通过编码测试模生成一组测试编码码流(即,参考视频),将该测试编码码流提供给硬件编码器进行编码,然后,将硬件编码器的编码结果和预先准备好的数据(即,参考视频的预定编码结果)进行比较,如果偏差小于预定值,例如,偏差<20%,则判断硬件编码器正常工作,告知用户可以使用硬件编码,否则返回不支持的信息,以便使用软件编码器进行视频编码。
[0040] 其中,硬件编码器可以是基于OMXCodec类的编码器,其输入为自定义YUV视频帧缓冲,输出为比特流缓冲。
[0041] 在现有技术中,不同终端硬件编码器的本质区别在于底层采用的芯片方案不同,因此,对于编码器的输入输出数据有不同的定义,且对H.264标准的支持程度也不同。如果对硬件编码器配置的参数不正确,必然会导致其不能正常工作。本实施例通过收集终端摄像头输出格式、安卓系统定义的media_profiles.xml以及编码器的能测试,从上述信息中选择出能够用于硬件编码的参数,从而产生一组输出参数集,使用该参数集对硬件编码器进行配置,然后对硬件编码器的输出进行测试,如果测试通过则采用硬件方案进行编码,对极少数不支持的设备采用软件方案进行编码,从而尽可能的提高了视频编码的性能。并且,本实施例在适合硬件编码的时候使用硬件编码,在不适合硬件编码的时候使用软件进行编码,将硬件编码的性能功耗优势和软件编码的兼容性进行了统一。
[0042] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0043] 参照图3,示出了本发明一种安卓系统中视频编码方式的选择装置实施例的结构框图,具体可以包括如下模块:
[0044] 编码单元302,用于使用硬件编码器对参考视频进行编码;
[0045] 判断单元304,用于判断硬件编码器输出的内容和参考视频的预定编码内容的差异是否在预定范围内;
[0046] 控制单元306,用于在判断结果为是的情况下,使用硬件编码器对视频进行编码,在判断结果为否的情况下,使用软件编码器对视频进行编码。
[0047] 在本发明实施例的一个优选实现方式中,如图4所示,示出了本发明一种安卓系统中视频编码方式的选择装置实施例的优选的结构框图,该装置还包括:
[0048] 检测单元402,用于在使用硬件编码器对参考视频进行编码之前,检测装置中硬件编码所需的参数;
[0049] 生成单元404,用于根据硬件编码所需的参数,生成参数集;
[0050] 配置单元406,用于使用参数集配置硬件编码器。
[0051] 在本发明实施例的一个优选实现方式中,生成单元404用于:
[0052] 判断硬件编码所需的参数中的每一类参数中是否都有预定集合中的参数,其中预定集合中的参数能够用于硬件编码;
[0053] 如果是,在每一类参数中选择预定集合中优先级最高的一个参数组成参数集。
[0054] 在本发明实施例的一个优选实现方式中,控制单元306还用于在硬件编码所需的参数中的某一类参数不包含预定集合中的参数,使用软件编码器对视频进行编码。
[0055] 在本发明实施例的一个优选实现方式中,检测单元402用于通过安卓底层API,检测用户设备的照相机Camera参数、Codec参数、profile、level和系统硬件信息。
[0056] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0057] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0058] 本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0059] 本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0060] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0061] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0062] 尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0063] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0064] 以上对本发明所提供的一种安卓系统中视频编码方式的选择方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈