视频封装方法、电子设备及计算机可读存储介质

专利类型 发明公开 法律事件 公开; 实质审查;
专利有效性 实质审查 当前状态 实质审查
申请号 CN202411861374.2 申请日 2024-12-16
公开(公告)号 CN119767070A 公开(公告)日 2025-04-04
申请人 普联技术有限公司; 申请人类型 企业
发明人 解颉; 任凯; 第一发明人 解颉
权利人 普联技术有限公司 权利人类型 企业
当前权利人 普联技术有限公司 当前权利人类型 企业
省份 当前专利权人所在省份:广东省 城市 当前专利权人所在城市:广东省深圳市
具体地址 当前专利权人所在详细地址:广东省深圳市南山区深南路科技园工业厂房24栋南段1层、3-5层、28栋北段1-4层 邮编 当前专利权人邮编:518000
主IPC国际分类 H04N21/433 所有IPC国际分类 H04N21/433H04N21/4402H04N19/426H04N5/915
专利引用数量 0 专利被引用数量 0
专利权利要求数量 11 专利文献类型 A
专利代理机构 深圳中一联合知识产权代理有限公司 专利代理人 胡明强;
摘要 本 申请 涉及计算机技术领域,提供了一种 视频 帧 封装方法、 电子 设备及计算机可读存储介质,方法包括:获取帧单元最大封装内存和画面组最大封装内存,帧单元最大封装内存,画面组最大封装内存均和资源使用率负相关。响应于接收到第一数据包,确定存储第一数据包所需的第一内存。若第一内存小于或等于帧单元最大封装内存,则对第一数据包进行封装,得到第一帧单元。若第一帧单元满足独立封装条件,则对第一帧单元进行封装,得到第一画面组。根据帧单元最大封装内存确定解码内存。基于解码内存对第一画面组进行解码,得到第一视频。能够提高网络视频录像机的资源利用率,避免了视频帧无法解码的情况发生。
权利要求

1.一种视频封装方法,其特征在于,所述方法包括:
获取帧单元最大封装内存和画面组最大封装内存,所述帧单元最大封装内存、所述画面组最大封装内存均和资源使用率负相关;
响应于接收到第一数据包,确定存储所述第一数据包所需的第一内存;
若所述第一内存小于或等于所述帧单元最大封装内存,则对所述第一数据包进行封装,得到第一帧单元;
若所述第一帧单元满足独立封装条件,则对所述第一帧单元进行封装,得到第一画面组,所述第一画面组所需的第二内存小于所述画面组最大封装内存。
2.根据权利要求1所述的视频帧封装方法,其特征在于,所述获取帧单元最大封装内存和画面组最大封装内存,包括:
获取初始帧单元最大封装内存和初始画面组最大封装内存;
根据带宽占用率、预设带宽权重、内存使用率和预设内存权重确定资源使用率,所述资源使用率和所述带宽占用率、所述内存使用率正相关;
根据所述资源使用率对所述初始帧单元最大封装内存进行修正,得到所述帧单元最大封装内存,所述帧单元最大封装内存与所述资源使用率负相关;
根据所述资源使用率对所述初始画面组最大封装内存进行修正,得到所述画面组最大封装内存,所述画面组最大封装内存与所述资源使用率负相关。
3.根据权利要求2所述的视频帧封装方法,其特征在于,所述资源使用率为所述带宽占用率与所述带宽权重之积,和所述内存使用率与所述内存权重之积的和值。
4.根据权利要求2所述的视频帧封装方法,其特征在于,所述根据所述资源使用率对所述初始帧单元最大封装内存进行修正,得到所述帧单元最大封装内存,包括:
获取帧单元最小封装内存;
将所述初始帧单元最大封装内存减去所述帧单元最小封装内存的差,确定为帧单元内存差;
确定剩余资源使用率,所述剩余资源使用率为1减去所述资源使用率的差;
将所述剩余资源使用率与所述帧单元内存差的积,和所述帧单元最小封装内存相加,得到所述帧单元最大封装内存;
所述根据所述资源使用率对所述初始画面组最大封装内存进行修正,得到所述画面组最大封装内存,包括:
获取画面组最小封装内存;
将所述初始画面组最大封装内存减去所述画面组最小封装内存的差,确定为画面组内存差;
将所述剩余资源使用率与所述画面组内存差的积,和所述画面组最小封装内存相加,得到所述画面组最大封装内存。
5.根据权利要求1‑4任一项所述的视频帧封装方法,其特征在于,所述独立封装条件为存储所述第一帧单元所需的第三内存大于或等于帧单元最小封装内存,且所述第一帧单元为帧内编码帧。
6.根据权利要求5所述的视频帧封装方法,其特征在于,所述方法还包括:
若所述第一帧单元不满足所述独立封装条件,则确定所述画面组最大封装内存减去第二画面组所占用的内存的差,为第二画面组的剩余内存,第二画面组的封装状态为封装中;
若所述剩余内存大于或等于所述第三内存,则将所述第一帧单元封装进所述第二画面组;
若所述剩余内存小于所述第三内存,则新建第三画面组,并将所述第一帧单元封装进所述第三画面组,并将所述第二画面组的封装状态更新为封装结束,将所述第三画面组的封装状态设置为封装中,所述第三画面组在所述第二画面组之后,且与所述第二画面组相邻。
7.根据权利要求5所述的视频帧封装方法,其特征在于,所述若所述第一帧单元满足独立封装条件,则对所述第一帧单元进行封装,得到第一画面组,包括:
若所述第一帧单元满足所述独立封装条件,则将处于封装中的第四画面组的封装状态更新为封装结束;
对所述第一帧单元进行封装,得到所述第一画面组,并将所述第一画面组的封装状态设置为封装结束,所述第一画面组位于所述第四画面组之后,且与所述第四画面组相邻,所述第一画面组中包含所述第一帧单元,且不包含其他帧单元。
8.根据权利要求6或7中的任一项所述的视频帧封装方法,其特征在于,在所述方法之后,所述方法还包括:
根据所述帧单元最大封装内存确定解码内存,所述帧单元最大封装内存与所述解码内存正相关;
基于所述解码内存对所述第一画面组、所述第二画面组、所述第三画面组或所述第四画面组进行解码,得到第一视频、第二视频、第三视频或第四视频,所述第一视频为所述第一画面组对应的视频,所述第二视频为所述第二画面组对应的视频,所述第三视频为所述第三画面组对应的视频,所述第四视频为所述第四画面组对应的视频。
9.根据权利要求8所述的视频帧封装方法,其特征在于,所述解码内存与所述帧单元最大封装内存相等。
10.一种电子设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序以实现如上述权利要求1‑9中任一项中所述的方法。
11.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述权利要求1‑9中任一项中所述的方法。

说明书全文

视频封装方法、电子设备及计算机可读存储介质

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种视频帧封装方法、电子设备及计算机可读存储介质。

背景技术

[0002] IPC(Internet Protocol Camera,网络摄像头)和NVR(Network Video Recorder,网络视频录像机)是网络视频监控系统的重要组成部分,IPC能够将捕获的视频信号转换为数字信号,并通过网络将数字信号以数据包的形式传输至NVR端。NVR则将接收到的数据包封装成视频帧,再将视频帧封装为GOP(Group of Pictures,画面组)进行存储。用户可以通过NVR远程或本地查看视频(解码后的一个或多个画面组)。
[0003] 传统的技术方案中,NVR封装画面组的内存和对画面组进行解码的内存通常是预先设置的固定值。然而,当NVR接收到的数据包的分辨率更大时,如NVR接入高分辨率的IPC时,画面组中的视频帧则会变大。若视频帧的大小超出NVR对画面组进行解码的内存上限,NVR则无法对画面组进行解码,导致视频帧无法正常播放。发明内容
[0004] 本申请实施例提供了一种视频帧封装方法、装置、芯片、电子设备及计算机可读存储介质,能够提高网络视频录像机的资源利用率,避免了视频帧无法解码的情况发生。
[0005] 第一方面,本申请提供了一种视频帧封装方法,包括:获取帧单元最大封装内存和画面组最大封装内存,帧单元最大封装内存,画面组最大封装内存均和资源使用率负相关。响应于接收到第一数据包,确定存储第一数据包所需的第一内存。若第一内存小于或等于帧单元最大封装内存,则对第一数据包进行封装,得到第一帧单元。若第一帧单元满足独立封装条件,则对第一帧单元进行封装,得到第一画面组,第一画面组所需的第二内存小于画面组最大封装内存。
[0006] 在一些实施方式中,获取帧单元最大封装内存和画面组最大封装内存,包括:获取初始帧单元最大封装内存和初始画面组最大封装内存。根据带宽占用率、预设带宽权重、内存使用率和预设内存权重确定资源使用率,带宽占用率,内存使用率均和资源使用率正相关。根据资源使用率对初始帧单元最大封装内存进行修正,得到帧单元最大封装内存,帧单元最大封装内存与资源使用率负相关。根据资源使用率对初始画面组最大封装内存进行修正,得到画面组最大封装内存,画面组最大封装内存与资源使用率负相关。
[0007] 在一些实施方式中,资源使用率为带宽占用率与带宽权重之积,和内存使用率与内存权重之积的和值。
[0008] 在一些实施方式中,根据资源使用率对初始帧单元最大封装内存进行修正,得到帧单元最大封装内存,包括:获取帧单元最小封装内存。确定初始帧单元最大封装内存减去帧单元最小封装内存的差,为帧单元内存差。将资源使用率的补数与帧单元内存差的积,和帧单元最小封装内存相加,得到帧单元最大封装内存。根据资源使用率对初始画面组最大封装内存进行修正,得到画面组最大封装内存,包括:获取画面组最小封装内存。确定初始画面组最大封装内存减去画面组最小封装内存的差,为画面组内存差。将资源使用率的补数与画面组内存差的积,和获取画面组最小封装内存相加,得到画面组最大封装内存。
[0009] 在一些实施方式中,独立封装条件为第一帧单元所需的第三内存大于或等于帧单元最小封装内存,且第一帧单元为帧内编码帧。
[0010] 在一些实施方式中,若第一帧单元不满足独立封装条件,则确定画面组最大封装内存减去第二画面组所占用的内存的差,为第二画面组的剩余内存,第二画面组的封装状态为封装中。若剩余内存大于或等于第三内存,则将第一帧单元封装进第二画面组。若剩余内存小于第三内存,则新建第三画面组,并将第一帧单元封装进第三画面组,并将第二画面组的封装状态更新为封装结束,将第三画面组的封装状态设置为封装中,第三画面组在第二画面组之后,且与第二画面组相邻。
[0011] 在一些实施方式中,若第一帧单元满足独立封装条件,则对第一帧单元进行封装,得到第一画面组,包括:若第一帧单元满足独立封装条件,则将处于封装中的第四画面组的封装状态更新为封装结束。对第一帧单元进行封装,得到第一画面组,并将第一画面组的封装状态设置为封装结束,第一画面组位于第四画面组之后,且与第四画面组相邻,第一画面组中存在第一帧单元,且不存在其他帧单元。
[0012] 在一些实施方式中,上述第一方面中的方法还包括:根据帧单元最大封装内存确定解码内存,帧单元最大封装内存与解码内存正相关;基于解码内存对第一画面组、第二画面组、第三画面组或第四画面组进行解码,得到第一视频、第二视频、第三视频或第四视频,第一视频为第一画面组对应的视频,第二视频为第二画面组对应的视频,第三视频为第三画面组对应的视频,第四视频为第四画面组对应的视频。
[0013] 在一些实施方式中,解码内存与帧单元最大封装内存相等。
[0014] 第二方面,本申请提供了一种封装装置,装置包括:
[0015] 获取模,用于获取帧单元最大封装内存和画面组最大封装内存,帧单元最大封装内存,画面组最大封装内存均和资源使用率负相关。
[0016] 处理模块,用于响应于接收到第一数据包,确定存储第一数据包所需的第一内存。
[0017] 封装模块,用于在第一内存小于或等于帧单元最大封装内存时,对第一数据包进行封装,得到第一帧单元。
[0018] 封装模块,还用于在第一帧单元满足独立封装条件时,对第一帧单元进行封装,得到第一画面组,第一画面组所需的第二内存小于画面组最大封装内存。
[0019] 处理模块,还用于根据帧单元最大封装内存确定解码内存,帧单元最大封装内存与解码内存正相关。
[0020] 解码模块,用于基于解码内存对第一画面组进行解码,得到第一视频。
[0021] 第三方面,本申请提供了一种芯片,芯片用于执行如上述第一方面中任一项中的方法。
[0022] 第四方面,本申请提供了一种电子设备,包括处理器和存储器,处理器用于执行存储器中存储的计算机程序以实现如上述第一方面中任一项中的方法。或者,
[0023] 电子设备包括如第二方面中的芯片。
[0024] 第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面任一项中的方法。
[0025] 本申请实施例提供的技术方案中,网络视频录像机可以获取实时修正的帧单元最大封装内存和画面组最大封装内存,并在存储第一数据包所需的第一内存小于或等于帧单元最大封装内存时,则对第一数据包进行封装,得到第一帧单元。在第一帧单元满足独立封装条件时,对第一帧单元进行封装,得到第一画面组能够提升资源使用率,使得封装后画面组中的一个或多个帧单元成功解码,避免了视频帧无法解码的情况发生。附图说明
[0026] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027] 图1是本申请实施例提供的一种视频帧封装方法的内存修正流程示意图;
[0028] 图2是本申请实施例提供的一种视频帧封装方法的数据包封装、解码流程示意图;
[0029] 图3是本申请实施例提供的一种视频帧封装装置的结构示意图;
[0030] 图4是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

[0031] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0032] 应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0033] 还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0034] 如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0035] 另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0036] 在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0037] 网络监控系统可以用于家庭安防、商业安防以及公共安防等的安全监管。IPC和NVR是网络监控系统中的关键组成部分,IPC可以采集视频数据和音频数据,并将视频数据和音频数据以数据包的形式通过网络传输至NVR。IPC与NVR可以通过RSTP(Real Time Streaming Protocol,实时流传输协议)传输视频数据和音频数据。
[0038] NVR可以对接收到的数据包进行封装和存储,并提供给用户进行查看和管理。在数据包的封装过程中,NVR可以先将接收到的数据包封装为视频帧,再将视频帧封装为GOP单元。传统的技术方案中,NVR设有封装GOP单元的封装上限,即封装后的一个GOP单元所占内存最大不会超过预设的封装上限。在GOP单元的解码过程中,NVR通常设有固定的解码内存,若GOP单元中的多个视频帧中不存在超出NVR解码内存的视频帧,NVR则可成功解码GOP单元以供用户查看。然而,NVR接收到的数据包的分辨率变高时,例如,NVR接入高分辨率的IPC时,NVR封装后的GOP单元中的多个视频帧则会变大。NVR在对GOP单元进行解码的过程中,若GOP单元中视频帧的大小超出NVR的解码内存,NVR则无法对GOP单元进行解码,用户则无法查看IPC采集到的视频。
[0039] 本申请实施例提供了一种视频帧封装方法,能够提高网络视频录像机的资源利用率,避免了视频帧无法解码的情况发生。
[0040] 本申请实施例提供的技术方案可以应用于网络视频录像机、手机、电脑、平板电脑、智能手表等具有视频帧封装、解码功能的设备或具有图像处理功能的电子设备。本申请实施例对电子设备的具体类别不做限定。
[0041] 为了便于描述,本申请实施例以网络视频录像机作为执行主体,对视频帧的封装和解码的具体过程进行示例性描述。
[0042] 下面结合图1到图3中的示例描述本申请实施例的技术方案。
[0043] 如图1所示,网络视频录像机确定帧单元最大封装内存和画面组最大封装内存的方法,可以包括如下步骤:
[0044] 步骤S101:获取初始帧单元最大封装内存和初始画面组最大封装内存。
[0045] 本申请实施例中,初始帧单元最大封装内存可以为网络视频录像机对接收到的数据包进行封装后,得到的帧单元(即视频帧,下文称为帧单元)所占的最大内存。初始画面组最大封装内存可以为网络视频录像机对一个或多个帧单元进行封装后,得到的画面组(即GOP单元,下文称为画面组)所占的最大内存。
[0046] 初始帧单元最大封装内存和初始画面组最大封装内存可以为网络视频录像机接收到的用户设置的数值,也可以为网络视频录像机根据总内存和带宽确定的数值,本申请在此不做限定。
[0047] 以网络视频录像机根据总内存和带宽,确定初始帧单元最大封装内存和初始画面组最大封装内存为例,网络视频录像机确定初始帧单元最大封装内存和初始画面组最大封装内存的方法可以包括:
[0048] A1:获取总内存和带宽。
[0049] 不同的网络视频录像机的总内存和带宽不同,例如,若网络视频录像机为设备A,设备A的总内存为2G,带宽为300M。
[0050] A2:确定编解码内存。
[0051] 网络视频录像机可以将总内存中的一部分内存用于编码和解码。例如,编码和解码内存的占比可以为30%,若设备A的总内存为2G,则编解码内存可以为2G×0.3=614.4MB。
[0052] A3:根据总内存、带宽和编解码内存确定初始帧单元最大封装内存和初始画面组最大封装内存。
[0053] 网络视频录像机可以根据带宽确定编码路数,并根据编码路数、解码路数和编解码内存确定编码平均内存。
[0054] 例如,当设备A的带宽为300M时,若与网络视频录像机建立通信连接的IPC中,每路IPC占用4M带宽,则设备A则最多可以同时接收300÷4=75路IPC发送的数据包。可以理解的是,网络视频录像机所接收的IPC路数为2的幂次方,因此,带宽为300M的设备A最多可以同时接收64路IPC发送的数据包(即最多可以支持64路预览)。
[0055] 网络视频录像机所支持的解码路数通常为预设值,示例性的,设备A最多可以支持16路预览。编码平均内存X的计算公式可以为:X=M÷(a+b);其中,M表示编解码内存,a表示编码路数,b表示解码路数。
[0056] 例如,当M=614.4MB,a=64,b=16时,编码平均内存X=614.4÷(64+16)=7.675。
[0057] 网络视频录像机可以根据编码平均内存,确定初始帧单元最大封装内存和初始画面组最大封装内存。
[0058] 本申请实施例中,网络视频录像机可以将编码平均内存向上取整,得到初始画面组最大封装内存,将编码平均内存向下取整得到初始帧单元最大封装内存。例如,若编码平均内存为7.675MB,则网络视频录像机可以将初始画面组最大封装内存确定为8MB,将初始帧单元最大封装内存确定为7MB。
[0059] 在一些实施方式中,网络视频录像机也可以根据编码平均内存,在预设浮动范围内确定初始帧单元最大封装内存和初始画面组最大封装内存。例如,当预设浮动范围为编码平均内存±2MB时,若编码平均内存为7.675MB,则网络视频录像机可以将初始画面组最大封装内存确定为8MB,将初始帧单元最大封装内存确定为6MB。
[0060] 可以理解的是,初始帧单元最大封装内存须小于或等于初始画面组最大封装内存,以便于网络视频录像机可以将帧单元封装为画面组。
[0061] 步骤S102:根据带宽占用率、预设带宽权重、内存使用率和预设内存权重确定资源使用率,资源使用率和带宽占用率、内存使用率正相关。
[0062] 本申请实施例中,预设带宽权重可以用于表征宽占用率在计算资源使用率过程中的重要程度,预设内存权重可以用于表征内存使用率在计算资源使用率过程中的重要程度。示例性的,资源使用率可以为带宽占用率与带宽权重之积,和内存使用率与内存权重之积的和值。可选的,资源使用率也可以为带宽占用率,或内存使用率。本申请实施例对资源使用率的计算方式不做限定。
[0063] 示例性的,资源使用率的计算公式可以为:资源使用率=带宽占用率×预设带宽权重+内存使用率×预设内存权重。例如,若预设带宽权重为0.3,预设内存权重为0.7,带宽占用率为50%,内存使用率为70%,则资源使用率=50%×0.3+70%×0.7=64%。
[0064] 步骤S103:根据资源使用率对初始帧单元最大封装内存进行修正,得到帧单元最大封装内存,帧单元最大封装内存与资源使用率负相关。
[0065] 本申请实施例中,网络视频录像机根据资源使用率,对初始帧单元最大封装内存进行修正,得到帧单元最大封装内存的方法可以为:
[0066] B1:获取帧单元最小封装内存。
[0067] 帧单元最小封装内存可以为对初始帧单元最大封装内存进行修正后,所得到的帧单元最大封装内存的最小值,即帧单元最大封装内存最小不小于帧单元最小封装内存。
[0068] 帧单元最小封装内存可以与网络视频录像机的总内存正相关,本申请对帧单元最小封装内存的具体数值不做限定。例如,当设备A的总内存为2GB时,设备A的帧单元最小封装内存可以为2MB。
[0069] 帧单元最小封装内存可以为用户根据IPC的视频码流设定的值,也可以为其他小于帧单元最大封装内存的值,本申请在此不做限定。
[0070] B2:将初始帧单元最大封装内存减去帧单元最小封装内存的差,确定为帧单元内存差。
[0071] 本申请实施例中,帧单元内存差可以为:初始帧单元最大封装内存‑帧单元最小封装内存。
[0072] 例如,若初始帧单元最大封装内存为6MB,帧单元最小封装内存为2MB,则帧单元内存差为:6‑2=4MB。
[0073] B3:确定剩余资源使用率,剩余资源使用率为1减去资源使用率的差。
[0074] B4:将剩余资源使用率与帧单元内存差的积,和帧单元最小封装内存相加,得到帧单元最大封装内存。
[0075] 本申请实施例中,帧单元最大封装内存可以为:帧单元内存差×(1‑资源使用率)+帧单元最小封装内存。
[0076] 例如,若帧单元内存差为4MB,资源使用率为64%,帧单元最小封装内存为2MB,则帧单元最大封装内存为:4×(1‑64%)+2=3.44MB。
[0077] 本申请实施例中,帧单元最大封装内存与资源使用率负相关。即资源使用率越高,则帧单元最大封装内存越小,资源使用率越低,则帧单元最大封装内存越大。
[0078] 本申请实施例提供的技术方案中,资源使用率越高,则网络视频录像机的内存使用率和/或带宽占用率则越高,网络视频录像机的编解码内存则不足,网络视频录像机则无法存储过大的帧单元。可以理解的是,当网络视频录像机的编解码内存不足时,单个帧单元越小,则网络视频录像机可以存储的帧单元的数量则越多。本申请实施例提供的技术方案在网络视频录像机的编解码内存不足时,通过降低帧单元最大封装内存的方式,可以提升帧单元的封装数量,从而减少视频信息的丢失率,提升用户体验。
[0079] 资源使用率越低,则网络视频录像机的内存使用率和/或带宽占用率则越低,网络视频录像机的编解码内存则处于充足状态,网络视频录像机有足够多的内存可以存储较大的帧单元。本申请实施例提供的技术方案在网络视频录像机的编解码内存处于充足状态时,通过提高帧单元最大封装内存的方式,可以存储较大的帧单元,减少帧单元丢失数量,从而减少视频信息的丢失率,提升用户体验。
[0080] 步骤S104:根据资源使用率对初始画面组最大封装内存进行修正,得到画面组最大封装内存,画面组最大封装内存与资源使用率负相关。
[0081] 本申请实施例中,网络视频录像机根据资源使用率,对初始画面组最大封装内存进行修正,得到画面组最大封装内存的方法可以为:
[0082] C1:获取画面组最小封装内存。
[0083] 画面组最小封装内存可以为对初始画面组最大封装内存进行修正后,所得到的画面组最大封装内存的最小值,即画面组最大封装内存最小不小于画面组最小封装内存。
[0084] 画面组最小封装内存可以与网络视频录像机的总内存正相关,本申请对画面组最小封装内存的具体数值不做限定。例如,当设备A的总内存为2GB时,设备A的画面组最小封装内存可以为4MB。
[0085] 画面组最小封装内存可以为用户根据IPC的视频码流设定的值,也可以为其他小于画面组最大封装内存的值,本申请在此不做限定。
[0086] 可以理解的是,帧单元最小封装内存须小于或等于画面组最小封装内存,以便于网络视频录像机可以将帧单元封装为画面组。
[0087] C2:将初始画面组最大封装内存减去画面组最小封装内存的差,确定为画面组内存差。
[0088] 本申请实施例中,画面组内存差可以为:初始画面组最大封装内存‑画面组最小封装内存。
[0089] 例如,若初始画面组最大封装内存为8MB,画面组最小封装内存为4MB,则画面组内存差为:8‑4=4MB。
[0090] C3:将剩余资源使用率与画面组内存差的积,和获取画面组最小封装内存相加,得到画面组最大封装内存。
[0091] 本申请实施例中,画面组最大封装内存可以为:画面组内存差×(1‑资源使用率)+画面组最小封装内存。
[0092] 例如,若画面组内存差为4MB,资源使用率为64%,画面组最小封装内存为4MB,则画面组最大封装内存为:4×(1‑64%)+4=5.44MB。
[0093] 可以理解的是,由于初始帧单元最大封装内存小于或等于初始画面组最大封装内存,帧单元最小封装内存小于或等于画面组最小封装内存。当资源使用率不变时,帧单元最大封装内存和画面组最大封装内存只和初始帧单元最大封装内存、初始画面组最大封装内存、帧单元最小封装内存和画面组最小封装内存相关,因此,帧单元最大封装内存小于或等于画面组最大封装内存。
[0094] 本申请实施例中,画面组最大封装内存与资源使用率负相关。即资源使用率越高,则画面组最大封装内存越小,资源使用率越低,则画面组最大封装内存越大。
[0095] 本申请实施例提供的技术方案中,资源使用率越高,则网络视频录像机的内存使用率和/或带宽占用率则越高,网络视频录像机的编解码内存则不足,网络视频录像机则无法存储过大的画面组。可以理解的是,当网络视频录像机的编解码内存不足时,单个画面组越小,则网络视频录像机可以存储的画面组的数量则越多。本申请实施例提供的技术方案在网络视频录像机的编解码内存不足时,通过降低画面组最大封装内存的方式,可以提升画面组的封装数量,从而减少视频信息的丢失率,以及提高网络视频录像机内存分配的合理性,提升用户体验。
[0096] 资源使用率越低,则网络视频录像机的内存使用率和/或带宽占用率则越低,网络视频录像机的编解码内存则处于充足状态,网络视频录像机有足够多的内存可以存储较大的画面组。本申请实施例提供的技术方案在网络视频录像机的编解码内存处于充足状态时,通过提高画面组最大封装内存的方式,可以存储较大的画面组,减少画面组丢失数量,从而减少视频信息的丢失率,以及提高网络视频录像机内存分配的合理性,提升用户体验。
[0097] 本申请实施例提供的技术方案中,网络视频录像机可以根据资源使用率实时修正帧单元最大封装内存和画面组最大封装内存,从而充分利用设备资源,提升用户体验。
[0098] 在一些实施方式中,网络视频录像机还可以根据帧单元最大封装内存实时修正解码内存,示例性的,解码内存可以与帧单元最大封装内存正相关或相等。例如,当帧单元最大封装内存为3.44MB时,网络视频录像机则可以将解码内存修正为3.44MB。
[0099] 可以理解的是,当帧单元最大封装内存增大时,封装后画面组中的一个或多个帧单元中则会增大,网络视频录像机则可以增大解码内存,以便于封装后画面组中的一个或多个帧单元成功解码,避免了视频帧无法解码的情况发生。
[0100] 本申请实施例提供的技术方案中,网络视频录像机可以根据实时修正的帧单元最大封装内存,和画面组最大封装内存,对接收到的数据包进行封装、解码的方法可以如图2所示,包括:
[0101] 步骤S201:获取帧单元最大封装内存和画面组最大封装内存,帧单元最大封装内存、画面组最大封装内存均和资源使用率负相关。
[0102] 本申请实施例中,网络视频录像机可以通过上述步骤S101至步骤S104,确定帧单元最大封装内存和画面组最大封装内存,本申请在此不做赘述。
[0103] 步骤S202:响应于接收到第一数据包,确定存储第一数据包所需的第一内存。
[0104] 网络视频录像机可以与多路IPC建立通信连接,以接收多路IPC发送的数据包。第一数据包可以为多路IPC中任意一路IPC发送的数据包,本申请实施例以其中一路IPC为例进行示例性的说明。可以理解的是,网络视频录像机对其他IPC发送的数据包进行封装、解码的方法也具有相同或相似的原理,本申请在此不做赘述。
[0105] 步骤S203:若第一内存小于或等于帧单元最大封装内存,则对第一数据包进行封装,得到第一帧单元。
[0106] 本申请实施例中,网络视频录像机可以判断第一内存与帧单元最大封装内存的大小,若第一内存小于或等于帧单元最大封装内存,则对第一数据包进行封装,得到第一帧单元。第一内存大于帧单元最大封装内存,网络视频录像机则可以将第一数据包丢弃。
[0107] 例如,若第一内存为3MB,帧单元最大封装内存为3.44MB,3MB<3.44MB,网络视频录像机则对第一数据包进行封装,得到第一帧单元。第一内存为4MB,帧单元最大封装内存为3.44MB,4MB>3.44MB,网络视频录像机则将第一数据包丢弃。
[0108] 步骤S204:若第一帧单元满足独立封装条件,则对第一帧单元进行封装,得到第一画面组,第一画面组所需的第二内存小于画面组最大封装内存。
[0109] 本申请实施例中,独立封装条件可以包括:
[0110] 条件1:存储第一帧单元所需的第三内存大于或等于帧单元最小封装内存。
[0111] 条件2:第一帧单元为I帧(intra picture,帧内编码帧)。
[0112] 若第一帧单元可以同时满足条件1和条件2,网络视频录像机则可以对第一帧单元进行封装,得到第一画面组。可以理解的是,当对第一帧单元进行封装所需的第三内存大于或等于帧单元最小封装内存时,则第一帧单元为大视频帧。为确保网络视频录像机能够对包含第一帧单元的画面组顺利解码,网络视频录像机则将第一帧单元单独打包为一个画面组。
[0113] 具体的,网络视频录像机可以将处于封装中的第四画面组的封装状态更新为封装结束。并对第一帧单元进行封装,得到第一画面组,并将第一画面组的封装状态设置为封装结束,第一画面组位于第四画面组之后,且与第四画面组相邻,第一画面组中存在第一帧单元,且不存在其他帧单元。
[0114] 本申请实施例中,若第一帧单元不满足独立封装条件,即第一帧单元无法同时满足条件1和条件2,网络视频录像机则确定画面组最大封装内存减去第二画面组所占用的内存的剩余内存。若剩余内存大于或等于第三内存,网络视频录像机则将第一帧单元封装进第二画面组,第二画面组的封装状态为封装中处于封装中的画面组。若剩余内存小于第三内存,则新建第三画面组,并将第一帧单元封装进第三画面组,并将第二画面组的封装状态更新为封装结束,将第三画面组的封装状态设置为封装中,第三画面组在第二画面组之后,且与第二画面组相邻。
[0115] 根据帧单元最大封装内存确定解码内存,帧单元最大封装内存与解码内存正相关。并基于解码内存对第一画面组进行解码,得到第一视频。
[0116] 本申请实施例中,网络视频录像机在对帧单元最大封装内存实时修正后,在根据修正后的帧单元最大封装内存对第一数据包进行封装,得到包含第一数据包的画面组后,再修正解码内存。可选地,网络视频录像机还可以根据帧单元最大封装内存实时修正解码内存。本申请在此不做限定。
[0117] 当帧单元最大封装内存增大时,封装后画面组中的一个或多个帧单元则会增大,修正后的解码内存也会增大,基于修正后的解码内存对第一画面组进行解码,能够使得封装后画面组中的一个或多个帧单元成功解码,避免了视频帧无法解码的情况发生。当帧单元最大封装内存减小时,能够节省内存,从而降低网络视频录像机的资源使用率,以降低系统压
[0118] 可以理解的是,网络视频录像机还可以根据实时修正的,帧单元最大封装内存和画面组最大封装内存,对第一数据包之后的第二数据包进行封装和解码。网络视频录像机对第二数据包进行封装和解码的方法,与对第一数据包进行封装和解码的方法,具有相同或相似的计算原理,本申请在此不做赘述。
[0119] 本申请实施例提供的技术方案中,网络视频录像机可以获取实时修正的帧单元最大封装内存和画面组最大封装内存,并在存储第一数据包所需的第一内存小于或等于帧单元最大封装内存时,则对第一数据包进行封装,得到第一帧单元。在第一帧单元满足独立封装条件时,对第一帧单元进行封装,得到第一画面组。并根据实时修正的帧单元最大封装内存修正解码内存,通过修正后的解码内存对第一画面组进行解码。能够提升资源使用率,使得封装后画面组中的一个或多个帧单元成功解码,避免了视频帧无法解码的情况发生。
[0120] 应当理解地,在无逻辑冲突的前提下,上述各个申请实施例之间可以相互组合实施,以适应实际的应用需求。这些组合后得到的具体实施例或实施方案,仍属于本申请的保护范围内。
[0121] 对应于上述实施例中的视频帧封装方法,本申请实施例提供了一种视频帧封装装置,该视频帧封装装置可以由软件硬件或者两者的结合实现成为计算机设备的部分或全部,用于执行上述实施例中的视频帧封装方法中的步骤。
[0122] 图3示出了本申请实施例提供的一种封装装置30的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
[0123] 参照图3,该装置30包括获取模块310、处理模块320、封装模块330和解码模块340。
[0124] 获取模块310,用于获取帧单元最大封装内存和画面组最大封装内存,帧单元最大封装内存,画面组最大封装内存均和资源使用率负相关。
[0125] 处理模块320,用于响应于接收到第一数据包,确定存储第一数据包所需的第一内存。
[0126] 封装模块330,用于在第一内存小于或等于帧单元最大封装内存时,对第一数据包进行封装,得到第一帧单元。
[0127] 封装模块330,还用于在第一帧单元满足独立封装条件时,对第一帧单元进行封装,得到第一画面组,第一画面组所需的第二内存小于画面组最大封装内存。
[0128] 在一些实施方式中,获取模块310具体用于:获取初始帧单元最大封装内存和初始画面组最大封装内存。根据带宽占用率、预设带宽权重、内存使用率和预设内存权重确定资源使用率,带宽占用率,内存使用率均和资源使用率正相关。根据资源使用率对初始帧单元最大封装内存进行修正,得到帧单元最大封装内存,帧单元最大封装内存与资源使用率负相关。根据资源使用率对初始画面组最大封装内存进行修正,得到画面组最大封装内存,画面组最大封装内存与资源使用率负相关。
[0129] 在一些实施方式中,资源使用率为带宽占用率与带宽权重之积,和内存使用率与内存权重之积的和值。
[0130] 在一些实施方式中,获取模块310具体用于:获取帧单元最小封装内存。确定初始帧单元最大封装内存减去帧单元最小封装内存的差,为帧单元内存差。将资源使用率的补数与帧单元内存差的积,和帧单元最小封装内存相加,得到帧单元最大封装内存。获取画面组最小封装内存。确定初始画面组最大封装内存减去画面组最小封装内存的差,为画面组内存差。将资源使用率的补数与画面组内存差的积,和获取画面组最小封装内存相加,得到画面组最大封装内存。
[0131] 在一些实施方式中,独立封装条件为第一帧单元所需的第三内存大于或等于帧单元最小封装内存,且第一帧单元为帧内编码帧。
[0132] 在一些实施方式中,封装模块330,还用于:在第一帧单元不满足独立封装条件时,确定画面组最大封装内存减去第二画面组所占用的内存的差,为第二画面组的剩余内存,第二画面组的封装状态为封装中。若剩余内存大于或等于第三内存,则将第一帧单元封装进第二画面组。若剩余内存小于第三内存,则新建第三画面组,并将第一帧单元封装进第三画面组,并将第二画面组的封装状态更新为封装结束,将第三画面组的封装状态设置为封装中,第三画面组在第二画面组之后,且与第二画面组相邻。
[0133] 在一些实施方式中,封装模块330,具体用于:当第一帧单元满足独立封装条件时,将处于封装中的第四画面组的封装状态更新为封装结束。对第一帧单元进行封装,得到第一画面组,并将第一画面组的封装状态设置为封装结束,第一画面组位于第四画面组之后,且与第四画面组相邻,第一画面组中存在第一帧单元,且不存在其他帧单元。
[0134] 在一些实施方式中,封装模块330,还用于:根据帧单元最大封装内存确定解码内存,帧单元最大封装内存与解码内存正相关;基于解码内存对第一画面组、第二画面组、第三画面组或第四画面组进行解码,得到第一视频、第二视频、第三视频或第四视频,第一视频为第一画面组对应的视频,第二视频为第二画面组对应的视频,第三视频为第三画面组对应的视频,第四视频为第四画面组对应的视频。
[0135] 在一些实施方式中,解码内存与帧单元最大封装内存相等。
[0136] 需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0137] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0138] 基于同一发明构思,本申请实施例还提供了一种电子设备。
[0139] 图4是本申请一实施例提供的电子设备的结构示意图。如图4所示,该实施例的电子设备4包括:至少一个处理器410(图4中仅示出一个)、存储器420、以及通信模块440,存储器420中存储有可能在处理器410上运行的计算机程序430。处理器410执行计算机程序430时实现上述视频帧封装方法实施例中的步骤,例如图2所示的201至步骤204。或者,处理器410执行计算机程序430时实现上述各装置实施例中各模块/单元的功能,例如图3所示模块
310至模块340的功能,通信模块440可以为单独为通信单元,用于与外部服务器或者终端设备进行通信。
[0140] 电子设备4可包括,但不仅限于:处理器410、存储器420。本领域技术人员可以理解,图4仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备4还可以包括输入发送设备、网络接入设备、总线等。
[0141] 处理器410可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0142] 存储器420在一些实施例中可以是电子设备4的内部存储单元,例如电子设备4的硬盘或内存。存储器420也可以是电子设备4的外部存储设备,例如电子设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。存储器420还可以既包括电子设备4的内部存储单元,也包括外部存储设备。存储器420用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序430的程序代码等。存储器420还可以用于暂时的存储已经发送或者将要发送的数据。
[0143] 另外,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0144] 本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行上述各个方法实施例中的步骤。
[0145] 本申请实施例提供了一种芯片,芯片包括处理器和存储器,存储器中存储有计算机程序,所述计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
[0146] 本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述各个方法实施例中的步骤。
[0147] 应理解,本申请实施例中提及的处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0148] 还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read‑only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
[0149] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0150] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0151] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件,或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0152] 在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其他的形式。
[0153] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0154] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0155] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到大屏设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0156] 最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
QQ群二维码
意见反馈