技术领域
[0001] 本发明涉及视频编码技术领域,尤其涉及一种超高清8k视频的智能编码传输方法及传输系统。
相关背景技术
[0002] 随着视频技术的飞速发展,超高清(Ultra‑High Definition, UHD)视频,尤其是8K视频,已成为未来视频传输的主流方向。8K视频以其极高的分辨率(7680x4320像素)和细腻的画质,为观众带来了前所未有的视觉体验。然而,这种高质量的视觉享受也伴随着巨大的数据量挑战,对视频编码、传输和存储技术提出了更高的要求。
[0003] 现有技术不足在传统的视频编码传输方法中,通常采用固定的量化步长或基于简单规则的动态量化步长调整策略。这些方法在处理超高清8K视频时存在明显不足:
量化步长固定:固定的量化步长无法根据视频内容的复杂性和网络传输条件的变化进行灵活调整,容易导致视频质量波动较大,尤其是在网络带宽有限或视频内容复杂多变的情况下。
[0004] 规则简单:基于简单规则的量化步长调整策略往往无法全面考虑视频内容特性、缓冲区状态及网络条件等多种因素,难以实现视频质量和传输效率的最优平衡。
[0005] 缺乏智能性:传统方法缺乏智能学习机制,无法从大量数据中学习并优化量化步长的选择策略,难以适应复杂多变的实际应用场景。
[0006] 因此,有必要提供一种超高清8k视频的智能编码传输方法及传输系统解决上述技术问题。
具体实施方式
[0022] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以互相组合。
[0023] 另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0024] 实施例一本发明提供了一种超高清8k视频的智能编码传输方法,参考图1所示,编码传输方法包括以下步骤:
S1:在编码前,针对视频流初始化缓冲区并设置目标比特率。
[0025] 在视频编码传输的过程中,初始化阶段至关重要。这一阶段涉及编码流程的起始配置,包括初始化缓冲区和设定目标比特率。对于超高清8K视频而言,由于其分辨率高、数据量大,因此在编码前进行合理的初始化设置可以显著影响到后续编码的质量和效率。缓冲区的初始化决定了视频流编码后的数据暂存地点,而目标比特率的设置直接影响到视频的压缩程度以及最终视频的质量。
[0026] 具体的,在编码之前,需要先初始化一个缓冲区来存储编码后的视频数据。这个缓冲区的作用类似于一个临时的数据仓库,它在编码过程中暂时存放已经编码好的视频帧数据,直到这些数据被打包并通过网络传输给接收方。初始化缓冲区时需要确定其大小,这取决于预期的视频长度、比特率以及可能的网络状况。缓冲区过大可能会浪费资源,过小则可能导致数据溢出。
[0027] 目标比特率是指视频编码时计划使用的平均比特率,较高的比特率意味着更好的视频质量,但同时也会产生更大的文件体积,这不适合带宽受限的网络环境。在设置目标比特率时,需要考虑视频的内容类型(如动画、电影、直播等)、预期的观看设备(如电视、电脑、移动设备等)以及当前网络环境的状况。
[0028] 在本发明中,目标比特率的设置是一个动态的过程,它可以根据编码过程中监测到的缓冲区饱和度和网络带宽波动情况进行调整。这种动态调整机制有助于保持视频传输的流畅性,同时尽可能保证视频的质量不受影响。
[0029] 具体来说,在编码过程中,需要实时监测目标缓冲区的饱和度以及网络传输的带宽波动值。根据目标缓冲区的饱和度以及带宽波动值,动态调整预设的目标比特率,以平衡视频传输的流畅性和视频质量。具体调整规则如下:当目标缓冲区饱和度低于预设的饱和度阈值时,且网络带宽高于预设的带宽阈值时,提高目标比特率。这样可以在网络状况良好时提高视频质量。
[0030] 反之,当目标缓冲区饱和度不低于预设的饱和度阈值,或者网络带宽不高于预设的带宽阈值时,降低目标比特率。这样可以在网络状况不佳或缓冲区接近满载时减少数据量,避免缓冲区溢出或网络拥塞。
[0031] S2:获取视频流中当前帧的SATD值和帧类型,并将当前帧对应的目标缓冲区的饱和度、SATD值、帧类型及设置的目标比特率作为输入,通过预训练的强化学习模型输出当前帧的第一量化步长,其中,当前帧为视频流中的任一帧。
[0032] 视频编码过程中,量化步长的选择直接影响到视频的压缩效果和最终质量。对于超高清8K视频,由于其高分辨率的特点,合理选择量化步长对于保持视频质量的同时减少数据量尤为重要。传统的编码方法通常使用固定的量化步长或简单的自适应量化步长,这可能无法充分应对视频内容的复杂性和变化性。因此,本发明提出了一种通过强化学习模型动态调整量化步长的方法,以适应视频流中每一帧的具体特点,从而达到优化视频质量和编码效率的目的。
[0033] 在步骤S2中,获取视频流中当前帧的SATD(Sum of Absolute Transformed Differences)值和帧类型,并将当前帧对应的目标缓冲区的饱和度、SATD值、帧类型以及设置的目标比特率作为输入,通过预训练的强化学习模型输出当前帧的第一量化步长。
[0034] 具体的实施步骤如下:从视频流中提取当前帧的SATD值和帧类型(如I帧、P帧、B帧)。SATD值是一种衡量帧内变化量的指标,可用于评估当前帧的复杂程度。
[0035] 实时监测目标缓冲区的饱和度,以了解当前缓冲区内的可用空间。
[0036] 将当前帧的SATD值、帧类型、目标缓冲区的饱和度以及预设的目标比特率作为输入,送入预训练的强化学习模型中。
[0037] 强化学习模型根据输入信息输出当前帧的第一量化步长,这个量化步长反映了对当前帧整体编码质量的一个初步估计。
[0038] 其中,强化学习模型的训练过程为;收集超高清8k视频样本作为训练数据集,并对每个视频样本进行预处理,其中,预处理包括帧提取和特征提取。
[0039] 在本实施例中,为了训练强化学习模型,首先需要收集大量的超高清8K视频样本作为训练数据集。这些视频样本应该涵盖各种场景和内容,以确保模型能够泛化到多种视频类型。例如,可以从不同的来源获取视频,包括但不限于电影、电视剧、自然风光、体育赛事等,以覆盖广泛的视觉特征和动态范围。
[0040] 预处理步骤包括帧提取和特征提取:帧提取:从每个视频样本中抽取多个帧,特别是关键帧(如I帧),以及其他类型的帧(如P帧、B帧)。这些帧将用于后续的特征提取和模型训练。
[0041] 特征提取:从提取的帧中提取有用的特征,例如SATD值(Sum of Absolute Transformed Differences)、帧类型、亮度、色彩分布、纹理复杂度和运动矢量等。这些特征将作为强化学习模型的输入。
[0042] 定义强化学习的状态空间,其中,状态空间包括当前帧的SATD值、帧类型、目标缓冲区的饱和度以及设置的目标比特率。
[0043] 状态空间定义了强化学习模型在每个决策点所处的环境状态。在本实施例中,状态空间包括以下几个方面:当前帧的SATD值:衡量当前帧的复杂度。
[0044] 帧类型:当前帧属于I帧、P帧还是B帧。
[0045] 目标缓冲区的饱和度:反映当前缓冲区内的数据量与总容量的比例。
[0046] 设置的目标比特率:指导编码过程的目标比特率。
[0047] 定义强化学习的动作空间,其中,动作空间为量化步长的取值范围。
[0048] 在本实施例中,动作空间定义了强化学习模型可以采取的所有可能行动。在这个案例中,动作空间为量化步长的取值范围。量化步长决定了视频编码的精度,较大的量化步长会导致更低的视频质量但更高的压缩率,反之亦然。
[0049] 设计奖励函数,根据编码后的视频质量SSIM指标、缓冲区状态以及比特率使用情况综合评估。
[0050] 在本实施例中,奖励函数用于评价模型采取某一动作后的表现,奖励函数应综合考虑以下几个因素:编码后的视频质量(SSIM指标):评估视频的主观视觉质量。
[0051] 缓冲区状态:确保缓冲区不会因为数据过多而溢出,也不会因为空闲空间过多而浪费资源。
[0052] 比特率使用情况:确保实际使用的比特率与预设的目标比特率相匹配,避免过高或过低的比特率使用导致的视频质量下降或网络拥堵。
[0053] 初始化强化学习模型的参数,并利用Q‑learning学习算法进行模型训练,并在训练过程中,不断迭代更新强化学习模型的参数,以通过试错学习找到最优的量化步长策略,使得强化学习模型能够根据不同输入动态调整量化步长。
[0054] 在训练开始之前,需要初始化强化学习模型的参数。这些参数包括但不限于模型权重和偏置项。初始化参数是为了给模型提供一个起点,以便开始学习过程。
[0055] 使用Q‑learning算法进行模型训练,Q‑learning是一种基于价值的强化学习方法,通过学习状态‑动作对的价值(即Q值)来决定下一步的最佳行动。训练过程中,模型通过不断地试错学习,逐步更新Q值表,以找到最优的量化步长策略。具体步骤包括:在每个决策点,根据当前状态选择一个动作。
[0056] 执行所选动作,并观察下一个状态和获得的即时奖励。
[0057] 根据即时奖励和下一个状态的预期奖励更新当前状态‑动作对的Q值。
[0058] 重复上述过程,直到模型收敛于一个稳定的策略。
[0059] 在训练过程中,模型会不断地迭代更新其参数,通过试错学习找到最优的量化步长策略。每次迭代都会根据当前状态下采取的动作和获得的结果来调整模型参数,从而使模型能够根据不同输入动态调整量化步长,达到优化视频编码质量的目的。
[0060] S3:在编码时,获取当前帧中每个编码单元的第二量化步长,并结合当前帧的第一量化步长,计算得到每个编码单元的最终量化步长。
[0061] 在本实施例中,第二量化步长的获取方式分为两种,以下进行详细说明:第一种第二量化步长的获取方式为:基于当前帧的多尺度特征图预测当前帧中每个编码单元的第二量化步长。
[0062] 在这种方式中,第二量化步长的获取方式具体包括以下步骤:首先,提取当前帧的多尺度特征图,多尺度特征图包括当前帧的亮度、色彩分布、纹理复杂度和运动矢量。
[0063] 在本实施例中,提取多尺度特征图的具体方法包括:使用卷积神经网络(CNN)来提取不同尺度的特征图,这些特征图反映了不同层次的信息,包括低层次的边缘检测、中间层次的纹理特征和高层次的内容识别。
[0064] 对原始帧进行多尺度处理,通过包括但不限于下采样或使用不同大小的滤波器来获取不同尺度的特征。
[0065] 其次,基于所提取的多尺度特征图,采用预训练的深度学习模型预测当前帧中每个编码单元的第二量化步长,其中深度学习模型是通过视频数据训练得到的,且学习到根据特征图的不同属性分配量化步长。
[0066] 在本实施例中,输入多尺度特征图到预训练的深度学习模型中,模型通过内部的多层神经网络结构学习特征之间的关系。
[0067] 模型输出每个编码单元对应的第二量化步长,这些量化步长是根据当前帧的内容特性动态调整的,以达到最佳的压缩效果和视频质量。
[0068] 通过上述步骤,可以基于当前帧的多尺度特征图预测出每个编码单元的第二量化步长。这种方式的优点在于能够根据当前帧的具体内容进行精细化调整,从而提高编码效率和视频质量。
[0069] 第二种第二量化步长的获取方式为:根据目标缓冲区的饱和度及前一帧中相应位置的编码单元的编码量化步长,计算当前帧中每个编码单元的第二量化步长。
[0070] 在这种方式中,第二量化步长的获取方式具体包括以下步骤:首先,监测并获取当前目标缓冲区的饱和度,其中,饱和度反映了缓冲区内剩余空间相对于总容量的比例。
[0071] 在编码过程中,持续监测目标缓冲区的状态,记录当前已使用的缓冲区空间和总容量。
[0072] 使用以下公式计算缓冲区的当前饱和度:示例性的,如果缓冲区总容量为100MB,当前已使用70MB,则饱和度为70%。
[0073] 预设一个饱和度阈值,当缓冲区的饱和度超过此阈值时,表明缓冲区接近满载,需要采取措施减少数据量。
[0074] 其次,对于当前帧中的每个编码单元,查找并获取其在前一帧中对应位置编码单元的编码量化步长。
[0075] 为了获取当前帧中每个编码单元的第二量化步长,需要参考前一帧中相同位置编码单元的编码量化步长。具体步骤如下:定位前一帧的编码单元:对于当前帧中的每一个编码单元(如宏块或编码树单元),确定其在前一帧中的对应位置。
[0076] 获取前一帧的量化步长:从前一帧中对应的编码单元获取其编码时使用的量化步长。
[0077] 记录量化步长:将获取到的前一帧的量化步长记录下来,作为当前帧中相应编码单元的参考量化步长。
[0078] 最后,根据当前目标缓冲区的饱和度调整策略,并结合获取的前一帧的编码量化步长和饱和度调整策略,计算得到当前帧中每个编码单元的第二量化步长,其中,饱和度调整策略为:如果缓冲区饱和度较高,倾向于减小第二量化步长以减少数据量,反之则适当增加第二量化步长以平衡编码效率和视频质量。
[0079] 在本实施例中,根据当前目标缓冲区的饱和度调整策略,结合前一帧的编码量化步长,计算当前帧中每个编码单元的第二量化步长。具体步骤如下:制定调整策略:根据当前缓冲区的饱和度制定调整策略。如果缓冲区饱和度较高,倾向于减小第二量化步长以减少数据量;反之,则适当增加第二量化步长以平衡编码效率和视频质量。
[0080] 计算第二量化步长:使用以下公式计算当前帧中每个编码单元的第二量化步长。
[0081]其中, 表示第二量化步长,表示前一帧中对应位置编码单元的编码量化
步长,表示调整因子,表示当前目标缓冲区的饱和度,表示阈值。
[0082] 调整因子 的计算可以基于以下规则:如果当前缓冲区的饱和度较高(高于预设阈值),则 <1,以减小第二量化步长。
[0083] 如果当前缓冲区的饱和度较低(低于预设阈值),则 >1,以增加第二量化步长。
[0084] 最后将计算得到的第二量化步长应用于当前帧中的每个编码单元,以确保在不同的缓冲区饱和度下都能达到较好的编码效果在获取到第一量化步长和第二量化步长后,结合二者并根据下列公式计算出最终量化步长,具体的计算公式为:
其中, 表示第 帧中第 编码单元的最终量化步长, 表示第 帧中第
编码单元的第二量化步长, 表示第 帧的第一量化步长,和 分别为第二量化步长和第一量化步长的权值,且 。
[0085] S4:使用最终量化步长对当前帧中相应的编码单元进行量化,并将量化后的量化结果进行熵编码生成比特流,将生成的比特流存储至目标缓冲区。
[0086] 在本实施例中,使用最终量化步长对当前帧中的每个编码单元进行量化。量化过程将原始像素值转换为更少的离散级别,从而减少数据量。量化步长越大,转换后的数据越粗糙,压缩比越高,但视频质量会下降。
[0087] 对量化后的数据进行熵编码。熵编码是一种无损压缩方法,用于进一步减少数据量而不损失信息。熵编码方法包括但不限于霍夫曼编码(Huffman Coding)和算术编码(Arithmetic Coding)。这些方法利用符号出现的频率来分配编码长度,频繁出现的符号使用较短的编码,较少出现的符号使用较长的编码,从而达到压缩的目的。
[0088] 将经过熵编码的数据转换为比特流格式。比特流包含了当前帧的所有编码信息,包括量化后的数据和其他必要的元数据(如帧头信息、量化参数)。
[0089] 将生成的比特流存储到之前初始化的目标缓冲区中。这个缓冲区作为临时存储空间,用于暂存编码后的数据,直到这些数据被打包并通过网络传输给接收端。
[0090] S5:将存储后的比特流数据打包成数据包,并发送给接收端,以实现视频流的编码传输。
[0091] 在本实施例中,从目标缓冲区中读取存储的比特流数据,并将其打包成数据包。数据包通常包含一个或多个连续的比特流片段,以及必要的控制信息(如序列号、同步标记),以确保数据包在传输过程中能够正确排序和重组。
[0092] 将打包好的数据包通过网络发送给接收端。发送过程中,需要考虑网络带宽、延迟等因素,确保数据能够高效、可靠地传输。如果网络带宽波动较大,还需要根据当前网络状况动态调整发送速率,以防止数据包丢失或延迟过大。
[0093] 使用适合视频传输的协议,包括但不限于TCP/IP或UDP,来发送数据包。TCP提供可靠的传输服务,但可能导致更高的延迟;UDP提供更快的传输速度,但可靠性较差。根据应用场景的不同,可以选择适合的传输协议。
[0094] 接收端接收到数据包后,会发送确认消息回传给发送端,以确认数据包已成功接收。发送端可以根据接收确认消息来判断数据包是否需要重传,从而确保数据的完整性。
[0095] 本发明提供的一种超高清8k视频的智能编码传输方法的工作原理如下:首先,初始化缓冲区与目标比特率:在编码开始前,系统首先初始化一个用于存储编码后数据的缓冲区,并设置一个初始的目标比特率。这个目标比特率是根据网络条件、设备性能以及用户需求等因素预设的,用于指导后续的编码过程。
[0096] 收集训练数据并训练强化学习模型:通过收集大量的超高清8K视频样本作为训练数据集,并对这些视频进行预处理(如帧提取、特征提取等),以训练一个强化学习模型。该模型能够学习如何根据当前视频帧的特性(如SATD值、帧类型、缓冲区饱和度等)动态调整量化步长,以优化编码效率和视频质量。
[0097] 其次,在编码过程中,首先获取当前视频帧的SATD值(Sum of Absolute Transformed Differences,一种衡量帧内变化量的指标)、帧类型(如I帧、P帧、B帧)以及目标缓冲区的饱和度等关键信息。
[0098] 将当前帧的特性作为输入,通过预训练的强化学习模型预测出当前帧的第一量化步长。这个量化步长是基于全局视角对编码质量的初步估计。
[0099] 通过两种途径预测当前帧中每个编码单元(如宏块或编码树单元)的第二量化步长。一种途径是基于当前帧的多尺度特征图(包括亮度、色彩分布、纹理复杂度和运动矢量等),通过深度学习模型进行预测;另一种途径则是根据目标缓冲区的饱和度及前一帧中相应位置编码单元的编码量化步长进行计算。
[0100] 将第一量化步长和第二量化步长结合,通过加权计算得到每个编码单元的最终量化步长。这个步骤综合考虑了全局和局部的编码需求,以实现更精细的量化控制。
[0101] 使用最终量化步长对当前帧中的每个编码单元进行量化,并将量化后的结果进行熵编码以生成比特流。这些比特流随后被存储到目标缓冲区中。
[0102] 接着,将存储在缓冲区中的比特流数据打包成数据包,并通过网络发送给接收端,在发送过程中,根据网络带宽的波动情况动态调整发送速率,以确保数据传输的流畅性。
[0103] 最后,在编码和传输过程中,实时监测目标缓冲区的饱和度以及网络带宽的波动情况,根据这些信息,动态地调整预设的目标比特率。当缓冲区饱和度较低且网络带宽充足时,提高目标比特率以提升视频质量;反之,则降低目标比特率以避免缓冲区溢出或网络拥塞。
[0104] 综上所述,本发明的方法通过结合强化学习、多尺度特征分析以及动态比特率调整等技术手段,实现了对视频流的高质量、低延迟编码与传输。
[0105] 实施例二本发明提供了一种超高清8k视频的智能编码传输系统,用于执行一种超高清8k视频的智能编码传输方法,参考图2所示,编码传输系统包括:
初始化模块100,用于在编码前,针对视频流初始化缓冲区并设置目标比特率。
[0106] 第一量化步长获取模块200,用于获取视频流中当前帧的SATD值和帧类型,并将当前帧对应的目标缓冲区的饱和度、SATD值、帧类型及设置的目标比特率作为输入,通过预训练的强化学习模型输出当前帧的第一量化步长,其中,当前帧为视频流中的任一帧。
[0107] 最终量化步长计算模块300,用于在编码时,获取当前帧中每个编码单元的第二量化步长,并结合当前帧的第一量化步长,计算得到每个编码单元的最终量化步长。
[0108] 视频编码模块400,用于使用最终量化步长对当前帧中相应的编码单元进行量化,并将量化后的量化结果进行熵编码生成比特流,将生成的比特流存储至目标缓冲区。
[0109] 视频传输模块500,用于将存储后的比特流数据打包成数据包,并发送给接收端,以实现视频流的编码传输。
[0110] 本申请是参照根据本申请实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框,以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0111] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一种计算机可读存储介质中,存储介质包括只读存储器(Read‑Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read‑only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、i次可编程只读存储器(One‑time Programmable Read‑Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically‑Erasable Programmable Read‑Only Memory,EEPROM)、只读光盘(CompactDisc Read‑Only Memory,CD‑ROM)或其他光盘存储器、磁盘存储器、磁带存储器,或者能够用于携带或存储数据的计算机可读的任何其他介质。
[0112] 还需要说明的是,术语“包括”“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。