掌桥专利:专业的专利平台
掌桥专利
首页

压缩视频的传输方法、装置、设备及存储介质

文献发布时间:2024-04-18 19:58:21


压缩视频的传输方法、装置、设备及存储介质

技术领域

本申请涉及压缩视频传输领域,特别是涉及一种压缩视频的传输方法、装置、设备及存储介质。

背景技术

集成视频压缩功能的SoC(System on Chip,系统级芯片)芯片将压缩视频在写入外部DDR(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器)缓存空间的过程会执行丢帧操作。通常采用的丢帧方式有以下两种:

方式1:持续向DDR缓存空间写入视频帧的压缩数据,如果压缩数据能够完整地写入到DDR缓存空间,则上层驱动可以读取到该帧的全部信息。如果在当前帧写入DDR的过程中出现缓存空间溢出,即当前帧的数据还没完全写入到DDR但DDR的缓存空间已经满了,则当前帧剩余的数据无法写入到DDR。在当前帧无法完整写入DDR的情况下,已经写入到DDR的部分帧数据属于无效数据,需要丢弃,因为上层驱动此时无法获取完整的当前帧数据。

方式2:在DDR缓存空间剩余比较大的时候就停止写入,即设置一个值比较大的阈值,当剩余空间达到该阈值时,停止写入新的帧。这种方式可以避免无效数据的写入,但是由于剩余空间过大,会造成DDR缓存空间的浪费,并且丢帧率较高。

上述方式1会产生大量无效数据,浪费DDR缓存空间的系统总线带宽;方案2设置的剩余空间阈值较大,造成DDR缓存空间的浪费,导致丢帧率较高的问题。因此,如何避免产生无效数据,并且降低丢帧率是需要解决的问题。

发明内容

有鉴于此,本申请旨在提出一种压缩视频的传输方法、装置、设备及存储介质,以实现降低丢帧率的同时,避免产生无效数据的问题。

为达到上述目的,本申请的技术方案如下:

本申请实施例第一方面提供一种压缩视频的传输方法,应用于SoC芯片,该方法包括:

在检测到待写入DDR缓存的当前视频帧的情况下,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估;

根据预估结果,判断是否对当前视频帧执行丢帧操作;

根据判断结果,对当前视频帧执行丢帧操作或执行写入操作。

可选地,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估,包括:

预估当前视频帧压缩后的数据量;

获取DDR缓存的当前剩余空间;

在当前剩余空间大于当前视频帧压缩后的数据量的情况下,判定不对不执行当前视频帧执行丢帧操作。

可选地,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估,包括:

预估当前视频帧的写入速率;

预估当前视频帧压缩后的数据量;

预估DDR缓存内压缩视频帧的读取速率,压缩视频帧为基板控制芯片对视频帧进行压缩后存储到DDR缓存的;

获取DDR缓存的当前剩余空间;

根据写入速率、压缩后的数据量、读取速率及当前剩余空间,预估当前剩余空间是否足够缓存压缩后的当前视频帧。

可选地,根据写入速率、压缩后的数据量、读取速率及当前剩余空间,预估当前剩余空间是否足够缓存压缩后的当前视频帧,包括:

在当前剩余空间小于当前视频帧压缩后的数据量,且读取速率大于写入速率的情况下,判定不对当前视频帧执行丢帧操作;

在当前剩余空间小于当前视频帧压缩后的数据量,且读取速率小于写入速率的情况下,根据写入速率、压缩后的数据量、读取速率及当前剩余空间计算预估值,基于预估值判定是否对当前视频帧执行丢帧操作。

可选地,根据写入速率、压缩后的数据量、读取速率及当前剩余空间计算预估值,包括:

预估当前视频帧压缩后的数据量;

根据当前视频帧压缩后的数据量及写入速率,预估当前视频帧压缩后的写入时长;

根据写入时长、当前剩余空间、写入速率及读取速率计算预估值。

可选地,计算预估值,还包括:

获取写入时长、写入速率及读取速率各自对应的动态参数;

基于当前剩余空间、写入时长、写入速率、读取速率及所获取的动态参数,计算预估值。

可选地,基于预估值判定是否对当前视频帧执行丢帧操作,包括:

在预估值大于0的情况下,判定对当前视频帧执行丢帧操作;

在预估值小于0的情况下,判定不对当前视频帧执行丢帧操作。

可选地,预估当前视频帧的写入速率,包括:

获取第一时间段内已写入DDR缓存的视频帧的平均写入速率;第一时间段为当前时刻之前的相邻时间段;

将平均写入速率确定为当前视频帧的写入速率。

可选地,获取第一时间段内已写入DDR缓存的视频帧的平均写入速率,包括:

读取第一时间段内已写入DDR缓存的视频帧的数据量;

根据数据量及第一时间段的时长,确定第一时间段的平均写入速率。

可选地,预估当前视频帧压缩后的数据量,包括:

根据当前视频帧的分辨率,获取第二时间段内已完整写入DDR缓存的目标压缩视频帧的平均数据量;目标压缩视频帧的分辨率与当前视频帧的分辨率相同;

将目标压缩视频帧的平均数据量,确定为当前视频帧压缩后的数据量。

可选地,预估当前视频帧压缩后的数据量,包括:

获取第二时间段内已完整写入DDR缓存的所有压缩视频帧的数据量;

在第二时间段内已完整写入DDR缓存的压缩视频帧的分辨率不止一个的情况下,将所有压缩视频帧的数据量按照分辨率大小进行划分;

计算每个分辨率对应的压缩视频帧的平均数据量;

构建映射表,将所有分辨率及对应的平均数据量存储到映射表中;

根据当前视频帧的分辨率,从映射表中获取对应的平均数据量,确定为当前视频帧压缩后的数据量。

可选地,预估DDR缓存内压缩视频帧的读取速率,包括:

获取第三时间段内已读取DDR缓存内压缩视频帧的读取数据量;

根据读取数据量及第三时间段的时长,确定第三时间段内的平均读取速率;

将平均读取速率确定为DDR缓存内压缩视频帧的读取速率。

可选地,该压缩视频的传输方法,还包括:

在SoC芯片上运行的程序数量增加的情况下,缩短第一时间段的时长。

可选地,该压缩视频的传输方法,还包括:

验证判断结果是否准确;

根据验证结果,对动态参数进行调整。

可选地,验证判断结果是否准确,包括:

在判断结果为对当前视频帧执行丢帧操作的情况下,对当前视频帧执行写入操作,并验证当前视频帧是否能够被完整写入DDR缓存;若当前视频帧能够被完整写入DDR缓存,则判断结果不准确;若当前视频帧不能被完整写入DDR缓存,则判断结果准确;

在判断结果为不对当前视频帧执行丢帧操作的情况下,对当前视频帧执行写入操作,并验证当前视频帧是否被完整写入DDR缓存;若当前视频帧能够被完整写入DDR缓存,则判断结果准确;若当前视频帧不能被完整写入DDR缓存,则判断结果不准确。

可选地,根据验证结果,对动态参数进行调整,包括:

在验证结果为准确,且判断结果为对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向小于0的方向靠近;

在验证结果为准确,且判断结果为不对当前视频帧执行丢帧操作的情况下,维持当前的动态参数的值;

在验证结果为不准确,且判断结果为对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向小于0的方向靠近;

在验证结果为不准确,且判断结果为不对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向大于0的方向靠近。

可选地,该压缩视频的传输方法,还包括:

根据第四时间段内的验证结果,对动态参数进行调整;第四时间段为当前时刻之后的时间段;

将调整完成的动态参数的值,确定为在第四时间段之后用于计算预估值的固定参数。

据本申请实施例的第二方面,提供一种压缩视频的传输装置,用于实现本申请实施例的第一方面所提供的压缩视频的传输方法,装置包括:

综合调度分析模块,用于在检测到待写入DDR缓存的当前视频帧的情况下,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估;根据预估结果,判断是否对当前视频帧执行丢帧操作;

写入模块,用于根据判断结果,对当前视频帧执行丢帧操作或执行写入操作。

根据本申请实施例的第三方面,提供一种非易失性可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现如本申请实施例第一方面的压缩视频的传输方法中的步骤。

根据本申请实施例的第四方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如本申请实施例第一方面的压缩视频的传输方法中的步骤。

采用本申请所提供的压缩视频的传输方法,在向DDR写入视频帧数据之前,对当前DDR缓存是否足够缓存压缩后的当前视频帧进行预估,从而判断是否对当前视频帧执行丢帧操作。若判断结果为丢帧,则直接将当前视频帧丢弃,而不会对当前视频帧进行压缩和写入操作,若判断结果为不丢帧,则执行写入操作,将当前视频帧压缩后写入DDR缓存。本申请所提供的方法,能够在写入视频帧之前确定是否对该视频帧进行丢帧操作,从而避免产生无效数据,同时,针对当前视频帧进行DDR剩余空间是否充足的预估,不采用设置固定阈值的方式,避免造成缓存空间浪费的问题,提高了DDR缓存的利用率,从而降低了丢帧率。

附图说明

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

图1是本申请一实施例提出的压缩视频的传输方法的流程图;

图2是本申请一实施例提出的压缩视频的传输装置的示意图;

图3是传统的BMC芯片压缩视频传输工作流程的示意图;

图4是本申请一实施例提出的BMC芯片的工作示意图;

图5是本申请一实施例提出的压缩视频输出控制模块的工作示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。

在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本实施例中,通过BMC(Baseboard Management Controller,基板管理控制)芯片为例对本申请的方案进行说明。BMC芯片是一种SoC芯片,通常应用于服务器领域,BMC芯片能够将本地的视频数据通过网络传递给远端,供远端显示和监控。

图3是传统的BMC芯片压缩视频传输工作流程的示意图。BMC芯片包括VGA模块、色彩空间转换模块、视频压缩IP模块、压缩视频输出控制模块及EMAC网络模块。如图3所示,传统方案中视频压缩传输的过程如下:

(1)主机(host)端将视频数据通过PCIe总线传输到BMC芯片的VGA模块;

(2)VGA模块对视频数据进行处理,生成原始的RGB格式的视频帧数据;

(3)RGB格式的原始视频帧数据通过色彩空间转换模块进行色彩空间的转换。色彩空间转换模块完成的是RGB格式到YUV格式的转换,其转换过程利用下列矩阵转换公式:

Y =(0.257×R)+ (0.504×G)+(0.098×B) +16;

U=0.148×R-0.291×G + 0.439×B +128;

V=0.439×R-0.368×G-0.071×B+128。

(4)将转换生成的YUV格式的视频帧数据送入视频压缩IP模块中进行压缩。视频压缩的格式有多种,常见的比如H.264、JPEG、AVS等。

(5)将压缩完成的视频帧数据写入外部DDR缓存空间。在本地显卡输出的原始图像信息通过网络传给远端之前,需要先进行视频压缩,目的是降低视频数据量,减少网络带宽的占用。图3中压缩视频输出控制模块的功能是,控制压缩数据写入DDR的过程。相关技术中写入的方式有2种,具体如下。

方式1:只要DDR缓存空间没有写满,则压缩视频输出控制模块控制一直往DDR缓存空间写入压缩数据。

如果当前帧能够完整的写入对应的DDR缓存控制,则将该帧的写入信息(在DDR中的首地址和尾地址)传递给上层驱动,由驱动读取缓存数据;如果当前帧在写入的过程中,还没完全写完当前帧,DDR缓存就已经满了,则压缩视频输出控制模块记录当前帧的首地址,并将该首地址作为下一个视频帧写入的首地址,即用下一帧数据对当前帧数据进行覆盖。这种方式存在的问题是,当剩余空间不足以写入完整的视频帧是,DDR缓存会被写入大量的无效数据,同时造成系统总线带宽资源的浪费。

方式2:对DDR缓存的剩余空间设定一个阈值,在向DDR缓存写入视频帧之前,对DDR缓存空间的剩余空间大小进行判断。当剩余空间大于设定的阈值时,将当前视频帧写入DDR缓存;当剩余空间小于设定的阈值时,停止向DDR缓存写入数据,从当前视频帧开始,之后的帧都要进行丢帧处理。这种方式需要提前确保当前帧能被完整的写入DDR,由于视频帧在被压缩之前并不能确定压缩之后的数据量大小,因此为了确保当前帧能够写入DDR缓存,需要将阈值设置的很大。例如,应用场景中最大的分辨率是1920×1200,则该阈值需要设置为1920×1200×3=6.59MB(按照最小压缩比=1计算)。可见,这种方式会造成DDR缓存空间的极大浪费,同时压缩视频的丢帧率也比较高,会影响远程端的用户体验。

下面将参考附图并结合实施例来详细说明本申请。

图1是本申请一实施例提出的压缩视频的传输方法的流程图。如图1所示,该方法包括:

S1:在检测到待写入DDR缓存的当前视频帧的情况下,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估;

S2:根据预估结果,判断是否对当前视频帧执行丢帧操作;

S3:根据判断结果,对当前视频帧执行丢帧操作或执行写入操作。

本实施例中,在对当前视频帧进行压缩之前,先对DDR缓存的剩余空间进行预估。由于DDR缓存中同时存在数据写入和读取,数据写入会使DDR缓存的剩余空间变小,而DDR缓存内的数据被读取后会从闪存中移除,使DDR缓存的剩余空间变大,因此DDR缓存的剩余空间是动态变化的。本实施例中,在向DDR缓存写入每一帧数据之前,针对当前时刻的视频帧,对当前的DDR缓存的剩余空间进行预估,判断当前帧是否能够被完整写入DDR缓存。

对于判断结果为执行丢帧的情况,将当前视帧直接丢弃,无需再对当前视频帧进行压缩;对于判断结果为不执行丢帧(即写入)操作的情况,将当前视频帧通过视频压缩IP模块,并将压缩后的视频帧数据写入DDR缓存。

本实施例中,通过提前预估DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧,确定是否对当前视频帧执行丢帧操作,避免对DDR缓存写入无效数据,并且对DDR缓存的剩余空间进行了充分利用从而降低了丢帧率。

作为本申请的一种实施方式,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估,包括:

预估当前视频帧压缩后的数据量;

获取DDR缓存的当前剩余空间;

在当前剩余空间大于当前视频帧压缩后的数据量的情况下,判定不对不执行当前视频帧执行丢帧操作。

图4是本申请一实施例提出的BMC芯片的工作示意图。如图4所示,本实施例中,BMC芯片中色彩空间转换模块的输出除了连接到视频压缩IP模块之外,还连接到压缩视频输出控制模块。压缩视频输出控制模块获取当前视频帧的信息,并根据当前视频帧的信息预估该视频帧压缩后的数据量,以及读取当前DDR缓存内剩余空间的大小。

本实施例中,通过压缩视频输出控制模块获取当前待写入DDR缓存的视频帧的信息及DDR缓存当前的剩余空间信息,对当前帧是否需要丢帧操作进行判断。首先预估当前视频帧压缩后的数据量,然后将预估的压缩数据量与DDR缓存当前的剩余空间进行比较,当预估的当前帧压缩后的数据量大于当前视频帧压缩后的数据量的情况下,当前视频帧可以完整写入DDR缓存。

作为本申请的一种实施方式,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估,包括:

预估当前视频帧的写入速率;

预估当前视频帧压缩后的数据量;

预估DDR缓存内压缩视频帧的读取速率,压缩视频帧为基板控制芯片对视频帧进行压缩后存储到DDR缓存的;

获取DDR缓存的当前剩余空间;

根据写入速率、压缩后的数据量、读取速率及当前剩余空间,预估当前剩余空间是否足够缓存压缩后的当前视频帧。

在一种实施例中,如图4所示,压缩视频输出控制模块获取当前视频帧的信息,并根据当前视频帧的信息预估该视频帧压缩后的数据量,同时,压缩视频输出控制模块还根据读取到的当前DDR缓存内剩余空间的大小,预估压缩后的当前视频帧在写入DDR缓存的过程中,DDR缓存的剩余空间的大小是否足够写入完整的当前视频帧的压缩数据。

具体地,DDR缓存内剩余空间是否足够完整写入当前视频帧,受到当前视频帧的写入速率、当前视频帧压缩后的数据量以及DDR缓存内读取数据的读取速率影响。本实施例中,通过压缩视频输出控制模块对上述影响因素进行预估。并根据预估的写入速率、预估的压缩后的数据量、预估的读取速率及当前DDR缓存的剩余空间,预估当前剩余空间是否足够缓存压缩后的当前视频帧。

作为本申请的一种实施方式,根据写入速率、压缩后的数据量、读取速率及当前剩余空间,预估当前剩余空间是否足够缓存压缩后的当前视频帧,包括:

在当前剩余空间小于当前视频帧压缩后的数据量,且读取速率大于写入速率的情况下,判定不对当前视频帧执行丢帧操作;

在当前剩余空间小于当前视频帧压缩后的数据量,且读取速率小于写入速率的情况下,根据写入速率、压缩后的数据量、读取速率及当前剩余空间计算预估值,基于预估值判定是否对当前视频帧执行丢帧操作。

在一种实施例中,当DDR缓存的剩余空间小于当前视频帧压缩后的数据量时,需要考虑DDR缓存内读取数据的速率和向DDR缓存写入压缩后的当前视频帧的速率。当读取速率大于写入速率时,DDR缓存中的剩余空间大小会随着时间逐渐变大,即当前视频帧能够被完整写入,因此不对当前视频帧执行丢帧操作。

当DDR缓存的剩余空间小于当前视频压缩后的数据量,并且读取速率小于写入速率时,表示DDR缓存的剩余空间会随着时间变化而逐渐减小。在这种情况下,需要考虑DDR缓存中当前的剩余空间的是否足够抵消写入数据量和读取数据量之间的差值。本实施例中,根据写入速率、压缩后的数据量、读取速率及当前剩余空间,计算预估值,通过预估值进行具体判断。

作为本申请的一种实施方式,根据写入速率、压缩后的数据量、读取速率及当前剩余空间计算预估值,包括:

预估当前视频帧压缩后的数据量;

根据当前视频帧压缩后的数据量及写入速率,预估当前视频帧压缩后的写入时长;

根据写入时长、当前剩余空间、写入速率及读取速率计算预估值。

作为本申请的一种实施方式,基于预估值判定是否对当前视频帧执行丢帧操作,包括:

在预估值大于0的情况下,判定对当前视频帧执行丢帧操作;

在预估值小于0的情况下,判定不对当前视频帧执行丢帧操作。

在一种实施例中,当DDR缓存的剩余空间小于当前视频压缩后的数据量,并且读取速率小于写入速率时,通过下述表达式计算预估值:

预估值=预估写入时长﹣剩余空间÷(写入速率-读取速率)。

本实施例中,基于当前视频帧的预估写入时长、当前DDR缓存的预估剩余空间,向DDR缓存写入当前视频帧的速率,及当前DDR缓存内的数据被读取的速率,计算预估值,通过预估值的计算结果确定是否对当前视频帧执行丢帧操作。

由上述表达式可以看出,当预估值大于0时,表示当前视频帧还未写入完毕,DDR缓存的剩余空间就已经被消耗完,即当前视频帧无法被完整写入DDR缓存,因此,判定对当前视频帧进行丢帧操作;当预估值小于0时,表示当前视频帧写入完毕时,DDR缓存的剩余空间还未被消耗完,即当前视频帧能够被完整写入DDR缓存,因此,判定不对当前视频帧执行丢帧,将当前视频帧正常写入DDR。

本实施例中,根据DDR缓存内数据的写入和去取情况进行综合分析,最大化利用DDR缓存的剩余空间,通过计算预估值获取准确的预估结果,降低传输过程中的丢帧率。

作为本申请的一种实施方式,计算预估值,还包括:

获取写入时长、写入速率及读取速率各自对应的动态参数;

基于当前剩余空间、写入时长、写入速率、读取速率及所获取的动态参数,计算预估值。

在一种实施例中,在计算预估值时,为预估的写入时长、写入速率及读取速率设置了各自对应的动态参数,按照以下表达式计算预估值:

预估值=参数1×写入时长﹣剩余空间÷(参数2×写入速率-参数3×读取速率)。

由于影响预估值的计算结果的基础数据(例如,预估的写入时长)都是预估的结果,因此为了进一步提高预估值的计算结果的准确性,对每个预估的基础数据(例如,预估的写入时长)设置了对应的参数。本实施例中,各个预估的基础数据对应的参数为动态参数。具体地,参数1、参数2及参数3的默认值为1,在初次计算预估值时采用默认值进行计算,并在后续计算中,根据判断结果与验证结果进行动态迭代优化,对动态参数进行微调。

本实施例中,通过为计算预估值的基础数据添加动态参数,便于后续根据判断(是否丢帧)结果和实际执行的结果,对动态参数(参数1、参数2及参数3)进行微调,提高预估值计算结果的精度,进一步提高判断结果的准确性。

作为本申请的一种实施方式,预估当前视频帧的写入速率,包括:

获取第一时间段内已写入DDR缓存的视频帧的平均写入速率;第一时间段为当前时刻之前的相邻时间段;

将平均写入速率确定为当前视频帧的写入速率。

在上述实施例中,预估当前视频帧的写入速率,可采用获取当前时刻前一段时间内的平均写入速率。为了确保预估的写入速率尽量准确,选择与当前时刻相邻的一段时间,并基于该时间段内视频帧的写入情况,确定该时间段内的平均写入速率。本实施例中,第一时间段的时长通常设置在1-5秒的范围。

作为本申请的一种实施方式,获取第一时间段内已写入DDR缓存的视频帧的平均写入速率,包括:

读取第一时间段内已写入DDR缓存的视频帧的数据量;

根据数据量及第一时间段的时长,确定第一时间段的平均写入速率。

在上述实施例中,通过读取第一时间段已写入DDR缓存的压缩视频帧的数据量,确定第一时间段内的平均写入速率。具体地,可根据第一时间段内已写入DDR缓存的视频帧的总数据量,与第一时间段的时长,计算平均写入速率。

作为本申请的一种实施方式,预估当前视频帧压缩后的数据量,包括:

根据当前视频帧的分辨率,获取第二时间段内已完整写入DDR缓存的目标压缩视频帧的平均数据量;目标压缩视频帧的分辨率与当前视频帧的分辨率相同;

将目标压缩视频帧的平均数据量,确定为当前视频帧压缩后的数据量。

在一种实施例中,对当前时刻之前的一段时间(第二时间段)内完整写入DDR缓存的视频帧进行查找,获取与当前视频帧分辨率相同的视频帧对应的压缩后的数据量。例如,当前视频帧的分辨率为1920×1080,则获取当前时刻前一段时间内已完整写入DDR缓存的分辨率为1920×1080的视频帧,并获取视频帧对应的压缩后的数据量,计算这些视频帧压缩后的平均数据量:

平均数据量=当前分辨率对应的所有视频帧的压缩数据量总和÷帧数。

将计算得到的平均数据量作为当前视频帧预估的压缩后的数据量。本实施例中,第二时间段不一定为当前时刻的相邻时间段,但在设置第二时间段时,需要确保存在至少一个与当前视频帧的分辨率相同的视频帧在第二时间段内被完整写入DDR缓存中。

在一种实施例中,还可以设置视频帧的数量阈值,在确定第二时间段时,确保在第二时间段内完整写入DDR缓存的视频帧的数量达到该数量阈值,以此提高压缩后的数据量的预估结果的准确性。例如,设置数量阈值为60,则确定第二时间段时,需要保证第二时间段内传输的与当前帧的分辨率相同的视频帧的数量至少为60。

作为本申请的一种实施方式,预估当前视频帧压缩后的数据量,包括:

获取第二时间段内已完整写入DDR缓存的所有压缩视频帧的数据量;

在第二时间段内已完整写入DDR缓存的压缩视频帧的分辨率不止一个的情况下,将所有压缩视频帧的数据量按照分辨率大小进行划分;

计算每个分辨率对应的压缩视频帧的平均数据量;

构建映射表,将所有分辨率及对应的平均数据量存储到映射表中;

根据当前视频帧的分辨率,从映射表中获取对应的平均数据量,确定为当前视频帧压缩后的数据量。

在一种实施例中,在将视频数据写入DDR缓存的过程中,可能出现切换视频的情况,在这种情况下,待写入的视频帧的分辨率可能发生变化。为了方便快速确定当前视频帧压缩后的数据量,可对第二时间段内所有已经完整写入DDR的视频帧进行统计,将视频帧按照分辨率进行划分,计算每个分辨率对应的平均数据量,并基于计算得到的平均数据量和对应的分辨率生成映射表。当待写入的当前视频帧的分辨率发生变化时,可根据当前视频帧的分辨率,从映射表中直接获取对应的平均数据量,作为当前视频帧压缩后的数据量的预估值。

本实施例中,通过预先构建分辨率和对应的压缩后的平局数据量,使对当前视频帧进行压缩后的数据量的预估时,无需重新计算,从而提升预估的效率,同时也减少计算资源的占用。

作为本申请的一种实施方式,预估DDR缓存内压缩视频帧的读取速率,包括:

获取第三时间段内已读取DDR缓存内压缩视频帧的读取数据量;

根据读取数据量及第三时间段的时长,确定第三时间段内的平均读取速率;

将平均读取速率确定为DDR缓存内压缩视频帧的读取速率。

在一种实施例中,获取当前时刻之前一段时间内,DDR缓存中的数据被读取的数据量,并计算该段时间内的数据读取速率。本实施例中,为了预估的读取速率更加准确,需要将第三时间段尽量靠近当前时刻进行设置,通常情况下,直接设置于当前时刻相邻的一段时间作为第三时间段,第三时间段的时长通常设置在1-5秒的范围。

根据第三时间段内被读取的数据量和第三时间段的时长,计算平均读取速率,作为将当前帧写入DDR缓存的过程中,DDR缓存内预估的读取速率。

作为本申请的一种实施方式,该压缩视频的传输方法,还包括:

在SoC芯片上运行的程序数量增加的情况下,缩短第一时间段的时长。

在一种实施例中,受到BMC芯片上运行的程序数量增加的影响,当前时刻之前一段时间内的数据写入速率出现较大波动。在这种情况下,需要适当缩短数据第一时间段的时长,以获得更贴近当前时刻的预估结果。例如,在BMC芯片上运行的程序数量较少时,可设置相对较长的第一时间段的时长(例如,设置为4秒),当BMC芯片上运行的程序数量较多时,当前时刻前4秒内的写入速率拨动较大,因此适当缩短第一时间段的时长(例如,缩短至2秒),从而获得更贴近当前时刻的预估结果,进而获得更准确的预估值计算结果,提高对当前视频帧是否需要执行丢帧操作的判断结果的准确性。

同样地,对读取速率的预估过程中设置的第三时间段的时长,也适用于上述调整方式,当BMC芯片上运行的程序数量增加时,为避免写入速率的拨动造成预估结果的偏差过大,可适当缩短数据第收三时间段的时长。

作为本申请的一种实施方式,该压缩视频的传输方法,还包括:

验证判断结果是否准确;

根据验证结果,对动态参数进行调整。

在一种实施例中,当通过计算预估值获得是否对当前视频帧进行丢帧的判断结果后,对该判断结果进行验证。根据实际结果和判断结果,对计算预估值用到的动态参数进行调整。

作为本申请的一种实施方式,验证判断结果是否准确,包括:

在判断结果为对当前视频帧执行丢帧操作的情况下,对当前视频帧执行写入操作,并验证当前视频帧是否能够被完整写入DDR缓存;若当前视频帧能够被完整写入DDR缓存,则判断结果不准确;若当前视频帧不能被完整写入DDR缓存,则判断结果准确;

在判断结果为不对当前视频帧执行丢帧操作的情况下,对当前视频帧执行写入操作,并验证当前视频帧是否被完整写入DDR缓存;若当前视频帧能够被完整写入DDR缓存,则判断结果准确;若当前视频帧不能被完整写入DDR缓存,则判断结果不准确。

作为本申请的一种实施方式,根据验证结果,对动态参数进行调整,包括:

在验证结果为准确,且判断结果为对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向小于0的方向靠近;

在验证结果为准确,且判断结果为不对当前视频帧执行丢帧操作的情况下,维持当前的动态参数的值;

在验证结果为不准确,且判断结果为对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向小于0的方向靠近;

在验证结果为不准确,且判断结果为不对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向大于0的方向靠近。

本实施例中,根据验证结果和判断结果,对动态参数(参数1、参数2及参数3)进行微调。

具体地,如果是判定结果为丢帧,验证结果也是丢帧,则将动态参数向不丢帧的方向调整:调低参数1,调低参数2,调高参数3;

如果是判定结果为不丢帧,验证结果也是不丢帧,则保持当前的动态参数不变;

如果是判定结果为丢帧,验证结果为不丢帧,则将动态参数向不丢帧的方向调整:调低参数1,调低参数2,调高参数3;

如果是判定结果为不丢帧,验证结果为丢帧,则将动态参数向丢帧的方向调整:调高参数1,调高参数2,调低参数3。

值得注意的是,每次对动态参数进行调整时数值不易波动过大。例如,参数1、参数2及参数3的值可按照每次5%-10%的比例进行微调。本实施例中,通过根据验证结果对计算预估值用到的动态参数进行微调,以提高预估值计算结果的准确性,进而令对当前视频帧是否需要丢帧的判断更加准确。

作为本申请的一种实施方式,该压缩视频的传输方法,还包括:

根据第四时间段内的验证结果,对动态参数进行调整;第四时间段为当前时刻之后的时间段;

将调整完成的动态参数的值,确定为在第四时间段之后用于计算预估值的固定参数。

在一种实施例中,在指定时间段对动态参数进行优化。具体地,在第四时间段内对动态参数进行迭代微调,并将优化到一定程度的参数值进行固定。优化的迭代次数取决于设置的第四时间段的时长,本实施例中,第四时间段的时长可根据实际需要进行设置,本申请中对此不做限制。

本实施例中,将优化到一定程度的动态参数转换为固定参数,并在后续对于预估值的计算过程中采用固定的参数值,以此确保获得尽量准确的判断结果的同时减少对计算资源的占用。

基于同一发明构思,本申请一实施例提供一种压缩视频的传输装置。参考图2,图2是本申请一实施例提出的压缩视频的传输装置200的示意图。如图2所示,该装置包括:

综合调度分析模块,用于在检测到待写入DDR缓存的当前视频帧的情况下,对DDR缓存的剩余空间是否足够缓存压缩后的当前视频帧进行预估;根据预估结果,判断是否对当前视频帧执行丢帧操作;

写入模块,用于根据判断结果,对当前视频帧执行丢帧操作或执行写入操作。

图5是本申请一实施例提出的压缩视频输出控制模块的工作示意图。如图5所示,压缩视频输出模块包括:DDR写入速率统计模块301、帧信息统计模块302、当前帧写入时间预估模块303、DDR剩余空间获取模块304、DDR读取速率预估模块305、综合调度分析模块306及判定结果检测模块307。

本实施例中,压缩视频输出控制模块中各个子模块的功能如下:

(1)DDR写入速率统计模块301实现的功能是统计T0时间段内,BMC芯片写压缩视频至DDR缓存空间的平均速率DDR_wr_speed_ estimate。其中,T0可以是寄存器的默认值,也可以是由用户进行寄存器配置,该时间是可以实时调整的,其原则是:当BMC上运行的操作系统中运行的软件程序较多的时候,操作系统的状态不稳定的时候,T0时间可以设置的较短;当BMC上运行的操作系统中运行的软件程序较少的时候,操作系统的状态比较稳定的时候,T0时间可以设置的较长。

(2)帧信息统计模块302,该子模块的功能,统计已经完成完整写入到DDR的帧的分辨率以及对应的写入DDR中的数据量,进而得出分辨率与压缩倍数的关系,需要说明的是,在当前帧结束写入DDR之前,是无法得知当前帧的具体的数据量的,因为帧数据是经过压缩的,而压缩的比例每一帧又是不同的,有的可以是10倍的压缩,有的可以20倍甚至更高。因此帧数据具体压缩后是多少,只有完整的传输完成之后才能得知。

帧信息统计模块302同时会生成一张映射表,统计T1时间段内对应分辨率与实际压缩后的数据量的大小的平均值comp_data_size_average,其中T1是可以用默认值,也可以由用户进行寄存器配置和实时调整,其设置的原则与T0相同。

当前帧数据到来的时候,根据当前帧的分辨率(分辨率信息可以在当前帧压缩之前获知),到映射表中查找获取当前帧对应的平均值cur_frame_size_estimate,从而对当前帧要传输的数据量进行预估。

(3)当前帧写入时间预估模块303的功能是根据DDR写入速率统计模块301得到的平均速率DDR_wr_speed_estimate和帧信息统计模块302得到的当前帧要传输的数据量的预估值cur_frame_size_estimate,对当前帧写入DDR的时长进行预估:

cur_frame_wr_time_estimate=cur_frame_size_estimate/DDR_wr_speed_estimate。

DDR剩余空间获取模块304的功能是,基于DDR缓存的剩余空间进行预估和计算。该模块记录驱动读取的总线的读地址以及上一帧数据在DDR中的尾地址等信息,在将当前帧写入DDR前,对DDR缓存的剩余空间Space_use进行预估。

(5)DDR读取速率预估模块305的功能是,对T2时间段内驱动读取压缩视频数据的平均速率DDR_rd_speed_estimate进行预估。其中,T2可以用默认值,也可以由用户进行寄存器设置,其设置的方法和原则与T0相同。

(6)综合调度分析模块306对当前帧写入时间预估模块303、 DDR剩余空间获取模块304、 DDR读取速率预估模块305的预估结果进行综合分析,得出对当前帧执行写入DDR缓存或执行丢帧的判定。其中,当DDR剩余空间Space_use小于当前帧的压缩后数据量的预估值,但DDR_rd_speed_ estimate

如果Result>0,则判定结果:当前帧需要丢帧,不写入DDR;

如果Result<0,则判定结果:当前帧写入DDR,不需要丢帧。

(7)判定结果检测模块307的功能是,对综合调度分析模块306的判定结果进行跟踪分析,进而验证综合调度分析模块306的判断结果是否准确。

如果综合调度分析模块的判定结果是当前帧要丢帧,则该模块要写入当前帧,检测实际写入的过程中,该帧是否真的必须要丢弃,如果可以正常写入DDR,则综合调度分析模块的结果是不准确的;如果不能正常写入DDR,则则综合调度分析模块的结果是准确的。

如果综合调度分析模块的判定结果是当前帧不丢帧,则该模块也正常写入当前帧,如果可以正常写入DDR,则综合调度分析模块的结果是准确的;如果不能正常写入DDR,则综合调度分析模块的结果是不准确的。

根据验证结果微调动态参数PARAM0、PARAM1、PARAM2。在指定的实际T3段内完成参数调整,将动态参数调整到最优值,即将综合调度分析模块306的判断准确率提到最高。其中T3的值可以是用默认值,也可以由用户进行寄存器配置。

值得注意的是,完成T3时间段内的参数调整后,后续将直接按照综合调度分析模块306的判断结果进行写入DDR或丢弃当前帧的操作,不再进行参数调整,即已经找到了相对较优的参数值,后续判定为需要丢帧的视频帧将不再写入DDR,避免占用DDR带宽资源。

作为本申请的一种实施方式,该装置还包括:

帧信息统计模块,用于预估当前视频帧压缩后的数据量;

DDR剩余空间获取模块,用于获取DDR缓存的当前剩余空间;

综合调度分析模块,用于在当前剩余空间大于当前视频帧压缩后的数据量的情况下,判定不对不执行当前视频帧执行丢帧操作。

作为本申请的一种实施方式,该装置还包括:

DDR写入速率统计模块,用于预估当前视频帧的写入速率;

帧信息统计模块,用于预估当前视频帧压缩后的数据量;

DDR读取速率预估模块,用于预估DDR缓存内压缩视频帧的读取速率,压缩视频帧为基板控制芯片对视频帧进行压缩后存储到DDR缓存的;

DDR剩余空间获取模块,用于获取DDR缓存的当前剩余空间;

综合调度分析模块,用于根据写入速率、压缩后的数据量、读取速率及当前剩余空间,预估当前剩余空间是否足够缓存压缩后的当前视频帧。

作为本申请的一种实施方式,综合调度分析模块,具体用于执行以下步骤:

在当前剩余空间小于当前视频帧压缩后的数据量,且读取速率大于写入速率的情况下,判定不对当前视频帧执行丢帧操作;

在当前剩余空间小于当前视频帧压缩后的数据量,且读取速率小于写入速率的情况下,根据写入速率、压缩后的数据量、读取速率及当前剩余空间计算预估值,基于预估值判定是否对当前视频帧执行丢帧操作。

作为本申请的一种实施方式,综合调度分析模块,还用于根据当前视频帧压缩后的数据量及写入速率,预估当前视频帧压缩后的写入时长;根据写入时长、当前剩余空间、写入速率及读取速率计算预估值。

作为本申请的一种实施方式,综合调度分析模块,还用于获取写入时长、写入速率及读取速率各自对应的动态参数;基于当前剩余空间、写入时长、写入速率、读取速率及所获取的动态参数,计算预估值。

作为本申请的一种实施方式,综合调度分析模块,还用于在预估值大于0的情况下,判定对当前视频帧执行丢帧操作;在预估值小于0的情况下,判定不对当前视频帧执行丢帧操作。

作为本申请的一种实施方式,DDR写入速率统计模块,用于获取第一时间段内已写入DDR缓存的视频帧的平均写入速率;第一时间段为当前时刻之前的相邻时间段;将平均写入速率确定为当前视频帧的写入速率。

作为本申请的一种实施方式,DDR写入速率统计模块,用于读取第一时间段内已写入DDR缓存的视频帧的数据量;根据数据量及第一时间段的时长,确定第一时间段的平均写入速率。

作为本申请的一种实施方式,帧信息统计模块,用于根据当前视频帧的分辨率,获取第二时间段内已完整写入DDR缓存的目标压缩视频帧的平均数据量;目标压缩视频帧的分辨率与当前视频帧的分辨率相同;将目标压缩视频帧的平均数据量,确定为当前视频帧压缩后的数据量。

作为本申请的一种实施方式,帧信息统计模块,用于获取第二时间段内已完整写入DDR缓存的所有压缩视频帧的数据量;在第二时间段内已完整写入DDR缓存的压缩视频帧的分辨率不止一个的情况下,将所有压缩视频帧的数据量按照分辨率大小进行划分;计算每个分辨率对应的压缩视频帧的平均数据量;构建映射表,将所有分辨率及对应的平均数据量存储到映射表中;根据当前视频帧的分辨率,从映射表中获取对应的平均数据量,确定为当前视频帧压缩后的数据量。

作为本申请的一种实施方式,DDR读取速率预估模块,用于获取第三时间段内已读取DDR缓存内压缩视频帧的读取数据量;根据读取数据量及第三时间段的时长,确定第三时间段内的平均读取速率;将平均读取速率确定为DDR缓存内压缩视频帧的读取速率。

作为本申请的一种实施方式,该装置还包括:

判定结果检测模块,用于验证判断结果是否准确;

综合调度分析模块,还用于根据验证结果,对动态参数进行调整。

作为本申请的一种实施方式,判定结果检测模块,具体用于执行以下步骤:

在判断结果为对当前视频帧执行丢帧操作的情况下,对当前视频帧执行写入操作,并验证当前视频帧是否能够被完整写入DDR缓存;若当前视频帧能够被完整写入DDR缓存,则判断结果不准确;若当前视频帧不能被完整写入DDR缓存,则判断结果准确;

在判断结果为不对当前视频帧执行丢帧操作的情况下,对当前视频帧执行写入操作,并验证当前视频帧是否被完整写入DDR缓存;若当前视频帧能够被完整写入DDR缓存,则判断结果准确;若当前视频帧不能被完整写入DDR缓存,则判断结果不准确。

作为本申请的一种实施方式,综合调度分析模块,用于执行以下步骤:

在验证结果为准确,且判断结果为对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向小于0的方向靠近;

在验证结果为准确,且判断结果为不对当前视频帧执行丢帧操作的情况下,维持当前的动态参数的值;

在验证结果为不准确,且判断结果为对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向小于0的方向靠近;

在验证结果为不准确,且判断结果为不对当前视频帧执行丢帧操作的情况下,调整动态参数的值,使预估值的计算结果向大于0的方向靠近。

作为本申请的一种实施方式,综合调度分析模块,还用于根据第四时间段内的验证结果,对动态参数进行调整;第四时间段为当前时刻之后的时间段;将调整完成的动态参数的值,确定为在第四时间段之后用于计算预估值的固定参数。

基于同一发明构思,本申请一实施例提供一种非易失性可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例中提供的压缩视频的传输方法中的步骤。

基于同一发明构思,本申请一实施例提供一种电子设备。该电子设备包括:

存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行时实现本申请上述任一实施例中提供的压缩视频的传输方法中的步骤。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

以上仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和部件并不一定是本申请所必须的。

本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非易失性可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本申请所提供的压缩视频的传输方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

相关技术
  • 视频播放方法、视频传输方法、装置、设备及存储介质
  • 多路视频实时传输方法、装置、基站设备及存储介质
  • 基于非授权传输的数据传输方法、装置、设备和存储介质
  • 视频集合的视频消息推送方法、装置、设备及存储介质
  • 视频生成、视频播放方法、装置、电子设备及存储介质
  • 视频传输方法、装置、视频传输设备及存储介质
  • 一种视频压缩与传输方法、装置、网关及存储介质
技术分类

06120116481528