高级编码参数
1.跳帧机制
参考资料:frameskipping-hotedgevideo
跳帧机制用于优化视频质量和编码效率。它通过选择性地跳过某些帧并使用参考帧来预测和重建视频内容,从而减少编码所需的比特率,同时保持较高的视频质量。在视频编码过程中,如果检测到系统资源不足(如CPU或网络带宽),编码器可以选择跳过某些非关键帧(如P帧或B帧),只保留关键帧(I帧)和部分预测帧。

高级跳帧参考模式,用于改变帧间参考关系,涉及三个主要参数:
- Base:基础跳帧参考倍数,用于预测和重建视频内容。base=1 表示每一帧都是基础层帧,base=2 表示每两帧中有一帧是基础层帧
- Enhance:增强参考帧,提供额外的信息以提高预测精度。它定义了增强层帧的间隔。例如,enhance=1 表示每一帧都有一个增强层帧,enhance=2 表示每一帧中有2个增强层帧。
- RefBaseEn:基础层参考帧是否被基础层的其他帧用作参考。当 RefBaseEn设置为 1 时,基础层参考帧可以被其他基础层帧用作参考;当RefBaseEn设置为 0 时,基础层的参考帧只参考 IDR 帧。
下面介绍一下跳帧参考模式示意图:

当Base=N,Enhance=1,RefBaseEn=0时,每隔N帧中才有一帧作为基础帧;此时每一帧都有一帧增强层帧。

当Base=N,Enhance=1,RefBaseEn=1时,每隔N帧中才有一帧作为基础帧;此时每一帧都有一帧增强层帧;基础参考帧可以被其他帧用作参考。

当Base=1,Enhance=N,RefBaseEn=1时,此时每一帧可以作为基础参考帧;每帧都有N个增强参考帧;并且基础参考帧可以被其他帧用作参考。

当Base=N,Enhance=N,RefBaseEn=1时,此时每隔N帧都可以作为基础参考帧,每帧都有N个增强参考帧;并且基础参考帧可以被其他帧用作参考。
2.SVC分层视频编码
参考链接:
- [Scalable Video Coding (SVC) - What is it and how does it work? (getstream.io)](https://getstream.io/glossary/scalable-video-coding/#:~:text=How does Scalable Video Coding Work%3F 1 Temporal%3A,layer helps increase the quality of previous layers.)
- Overview of the Scalable Video Coding Extension of the H.264/AVC Standard
- scalablecoding(nyu.edu)
分层(可伸缩)视频编码(Scalable Video Coding,简称SVC)是一种视频压缩技术,允许将视频流分割为多个层级。每个层级可以独立解码,并且可以组合以提供不同级别的视频质量。SVC是H.264视频编码标准的一部分,并于2007年成为正式标准。
SVC技术将视频信号编码成基本层和增强层。当带宽不足时,只传输和解码基本层的码流,虽然此时视频质量较低,但能保证基本的观看体验。随着带宽的增加,可以逐步传输和解码增强层的码流,从而提升视频的解码质量和观看效果。

SVC分层策略:
1.每一层都会在前一层的基础上增加帧率,例如从每秒2帧或者5帧开始,下一层增加帧率到15帧,再下层增加到每秒30帧或60帧。

2.在前一层之上增加每一层的分辨率,例如基础层为360p,下一层提高到720p,再下一层变成1080p全高清。

SVC的特定如下:
-
分层结构:SVC 将视频流分割为多个层次,包括分辨率、质量和帧速率层。基础层提供最低的分辨率和质量,而增强层则提供更高的分辨率和质量。
-
时间、空间和质量的可扩展性:SVC 支持在时间轴上调整帧率、在空间上调整分辨率,以及在质量上调整图像的保真度。
-
带宽优化:通过分层结构,SVC 可以在低带宽条件下传输和解码视频,同时保持较高的视频质量。
-
误码恢复:SVC 的分层方法允许在较小的基础层上执行高级别的误码监测和校正,从而提高视频传输的可靠性。
SVC是一种先进的视频编码技术,通过分层结构来适应不同的网络条件和设备性能。它能够动态调整视频的质量和分辨率,从而在网络状况不佳时仍能保持流畅的视频传输。SVC 的分层方法还提高了视频传输的可靠性,因为基础层可以进行高级别的误码监测和校正。此外,SVC 优化了带宽使用,在低带宽条件下也能传输高质量的视频。它支持从移动设备到高分辨率显示器的各种终端设备,适用于视频会议、直播和视频点播等多种应用场景。
3.噪声抑制
视频的“噪声”是通常是“静态”的形式,它会在图像中表现为雾霾、斑点和模糊,使监控摄像头上的图像在弱光条件下变得模糊。如果想在弱光条件下获得高质量的清晰图像,那么市面上常用的两种降噪方法分别为:2D-DNR的时间降噪和3D-DNR的空间降噪。
3.1 2D降噪
2D Noise Reduction(2DNR)旨在减少图像中的噪声。它主要在二维空间域内对像素进行滤波处理。它会将一帧与下一帧进行比较,通过对每个像素及周围像素进行平均或者加权平均来减少噪声,并消除每帧中未出现的任何奇怪现象。
常用的2D降噪算法:

均值滤波通过简单的平均操作来平滑图像,中值滤波则通过选择邻域像素的中值来减少噪声,而高斯滤波则根据像素间的距离和权重进行平滑处理。
优点:这些算法都比较简单,且计算量小,适合实时处理,特点是单帧图像的降噪。
缺点:只能处理空间域的噪声,对于时间域的噪声效果有限。过强的滤波可能导致图像细节丢失和模糊。
虽然2D降噪可以消除图像中的一些颗粒感,但是还是无法得到所需的清晰图像,所以就需要使用3D降噪,它不仅考虑单帧图像中的噪声,还利用多帧图像之间的时间关联性进行降噪,效果更好,但计算复杂度也更高。
参数解析:
- 2dnr_en = 1: 2DNR使能开关。1表示开启,0表示关闭。
- 2dnr_strength_y = 127: 亮度(Y通道)降噪强度。值越大,降噪效果越强。取值范围是0到255。
- 2dnr_strength_c = 127: 色度(C通道)降噪强度。值越大,降噪效果越强。取值范围是0到255。
- 2dnr_threshold_y = 11: 亮度(Y通道)降噪阈值。值越大,降噪效果越明显。取值范围是0到15。
- 2dnr_threshold_c = 7: 色度(C通道)降噪阈值。值越大,降噪效果越明显。取值范围是0到15。
3.2 3D降噪
3D数字降噪(3D-DNR)用于减少视频中的噪声,从而提高图像质量。与2D数字降噪(2DNR)不同,3D-DNR不仅在空间域上进行降噪处理,还在时间域上进行处理。
工作原理:3D-DNR通过对比相邻的几帧图像,识别并滤除不重叠的信息(即噪声)。由于图像噪声是随机出现的,每一帧图像中的噪声位置和强度都不同。通过对比多帧图像,3D-DNR可以更准确地识别噪声并进行处理。

常用的3D数字降噪算法:
- 帧间差分法:通过对比相邻帧之间的差异来识别和去除噪声。这种方法简单且计算量小,但在处理快速运动的场景时效果有限。
- 运动补偿法:在帧间差分的基础上,考虑到物体的运动轨迹,通过运动估计和补偿来更准确地去除噪声。这种方法在处理动态场景时效果更好,但计算复杂度较高。
- 多帧融合法:利用多帧图像的信息,通过加权平均或其他融合技术来减少噪声。这种方法可以在保持图像细节的同时有效地去除噪声,但需要更多的存储和计算资源。
- 时空滤波法:结合空间域和时间域的信息,通过滤波器来去除噪声。这种方法可以在不同的噪声环境下提供较好的降噪效果。
参数解析:
- 3dnr_en = 1: 3DNR使能开关。1表示开启,0表示关闭。
- 3dnr_pix_level_en = 0: 像素级别降噪开关。0表示关闭,1表示开启。
- 3dnr_smooth_en = 1: 平滑处理开关。1表示开启,0表示关闭¹。
- 3dnr_pix_diff_th = 6: 像素差异阈值。用于判断相邻帧之间的像素差异,值越大,降噪效果越强。取值范围是0到31。
- 3dnr_max_mv_th = 8: 最大运动矢量阈值。用于判断运动物体的最大运动量,值越大,降噪效果越强。取值范围是0到63。
- 3dnr_max_mad_th = 11: 最大平均绝对差阈值。用于判断相邻帧之间的平均绝对差,值越大,降噪效果越强。取值范围是0到63。
- 3dnr_min_coef = 13: 最小系数。用于控制降噪强度的最小值,取值范围是0到3dnr_max_coef。
- 3dnr_max_coef = 16: 最大系数。用于控制降噪强度的最大值,取值范围是3dnr_min_coef到16。
4.感兴趣区域
ROI编码技术的核心思想是通过对图像中的关键区域(如人脸、车牌等)进行高质量编码,同时对背景等不重要区域进行低质量编码,从而优化整体视频质量和带宽使用。这种方法通过降低感兴趣区域的量化参数(QP),分配更多的码率资源,以确保这些区域的清晰度和细节保留。而对于背景区域,则应用较高的QP值,减少码率消耗。这种差异化处理方式不仅能够在不增加整体码率的情况下显著提升关键区域的图像质量,还能有效节省带宽和存储空间。

ROI编码技术广泛应用于视频监控、视频会议和流媒体等领域,能够根据具体应用需求动态调整感兴趣区域的位置和大小,提供更灵活和高效的视频编码解决方案。通过结合AI或其他算法检测图像中的重要区域,ROI编码技术实现了对视频资源的智能化管理和优化。
应用场景:
- 视频监控:在监控画面中,人们通常只关注特定区域(如人脸、车牌),ROI编码可以确保这些区域的高质量传输。
- 视频会议:在视频会议中,ROI编码可以确保发言者的图像质量,而减少背景的带宽消耗。
- 流媒体:在流媒体应用中,ROI编码可以优化带宽使用,提供更好的用户体验
实现步骤:
- 检测感兴趣区域:使用AI或其他算法检测图像中的重要区域。
- 调整编码参数:对检测到的感兴趣区域应用较低的QP值,提高编码质量;对其他区域应用较高的QP值,减少码率。
参数解析:
- roi_num = 0: 指定ROI区域的数量。取值范围是0到8,0表示没有指定ROI区域。
- roi_qp = 50: ROI区域的量化参数(QP,Quantization Parameter)。QP值越小,编码质量越高;QP值越大,编码质量越低。取值范围是0到51。
- roi_BgFrameRateEnable = 0: 背景帧率使能开关。0表示关闭,1表示开启。如果开启,将降低非ROI区域的编码帧率。
- roi_BgFrameRateAttenuation = 3: 背景帧率衰减系数。表示非ROI区域的目标帧率是ROI区域源帧率的1/n。这里的值为3,表示非ROI区域的帧率是ROI区域帧率的三分之一。
- Rect.X,Rect.Y,Rect.Width,Rect.Height:ROI区域的具体位置。
5.帧内刷新
帧内刷新(Intra Refresh)用于逐步更新视频帧中的帧内预测区域,以避免传统I帧带来的码率波动和传输延迟。
帧内刷新通过在每个P帧中逐步插入帧内预测块来替代传统的I帧。传统的视频编码通常使用I帧(全帧内预测)和P帧(帧间预测)结构。I帧由于包含完整的图像信息,通常会导致码率突增。而帧内刷新技术则通过在多个P帧中分散插入帧内预测块,逐步更新图像信息,从而避免了这种突增。

帧内刷新通常会设置一个刷新周期,在这个周期内会逐步更新帧内预测的区域,假设刷新的周期为10帧,那么在第一个P帧中更新第一部分,在第二个P帧中更新第二部分,以此类推,直到整个I帧刷新完成。
帧内刷新的优点:
- 码率稳定:由于每个P帧中都有一部分区域使用帧内预测模式,其他区域则通过率失真优化选择最优模式,因此每个P帧的大小波动不会太大,从而保持码率的稳定性。
- 降低时延:传统的I帧通常较大,需要分成多个包传输,解码端必须等所有包到达后才能解码,导致较高的传输时延。帧内刷新技术通过在P帧中逐步插入帧内预测块,避免了大I帧的存在,使得每个P帧的大小较为平稳,并且比I帧小很多,从而降低了传输时延。
- 错误恢复:在传输错误的情况下,帧内刷新可以更快地恢复视频质量。例如,如果某一帧丢失,后续帧中的帧内刷新块可以逐步恢复丢失的信息。即使在极端情况下,正常解码的块也会逐渐增多,从而慢慢恢复视频的正常播放。
6.VUI参数集
VUI(Video Usability Information)参数集是H.264和其他视频编码标准中的一部分,用于提供额外的信号信息,帮助解码器和显示设备更好地处理和显示视频流。
主要参数:
- 视频宽度和高度:定义视频帧的分辨率。
- 帧率信息:包括 vui_timing_info_present_flag、vui_num_units_in_tick 和 vui_time_scale,用于计算视频的帧率。
- 颜色空间和色度采样方式:定义视频的颜色特性和采样方式,如 i_colorprim、i_transfer 和 i_colmatrix。
- 显示方面比例:定义视频的显示宽高比,如 i_sar_height 和 i_sar_width。
- HRD(Hypothetical Reference Decoder)参数:用于描述解码器的缓冲模型,确保视频流的平滑播放。
具体参数示例:
- vui_timing_info_present_flag: 指示是否包含时间信息。
- vui_num_units_in_tick: 表示时间刻度的单位数。
- vui_time_scale: 表示时间刻度的频率(Hz)。
- i_colorprim: 定义原始色度格式。
- i_transfer: 设置光电传输特性。
- i_colmatrix: 设置从RGB转换时亮度和色度的矩阵系数。
7.超级帧
超级帧技术通过对视频流中的某些帧进行特殊处理,以优化整体编码效果。这些处理包括重新编码、丢弃或调整比特率等。超级帧的处理方式可以根据具体的编码需求和网络条件进行动态调整。
主要功能:
- 重新编码:对某些帧进行重新编码,以提高这些帧的质量或调整其比特率。
- 丢弃帧:在必要时丢弃某些帧,以减少带宽占用和存储需求。
- 比特率控制:通过调整帧的比特率,确保视频流的平稳传输和高质量显示。
主要参数:
- super_frm_mode = -1: 超级帧模式。取值范围如下:
- -1: 使用默认模式。
- 0: 不使用超级帧处理。
- 1: 丢弃超级帧。
- 2: 重新编码超级帧。
-
super_max_rencode_times = 3: 最大重新编码次数。表示超级帧可以被重新编码的最大次数,以提高编码质量。
-
super_max_p2i_frm_bitsratio = 0.33: P帧到I帧的最大比特率比例。用于控制P帧和I帧之间的比特率分配,值越小,P帧的比特率小,I帧比特率大。
-
super_i_frm_bits_thr = 0: I帧比特率阈值。0表示使用默认值,大于0表示用户指定的阈值。用于控制I帧的最大比特率。
-
super_p_frm_bits_thr = 0: P帧比特率阈值。0表示使用默认值,大于0表示用户指定的阈值。用于控制P帧的最大比特率。
8.比特率裁剪
比特率是指每单位时间内处理的数据量,通常以千比特/秒 (Kbps) 为单位。比特率越高,质量越好,但文件大小越大。相反,较低的比特率会导致文件变小但质量较差。
比特率裁剪(Bits Clipping)通过设置比特率阈值和裁剪系数,限制视频帧的比特率。这种方法可以防止某些帧的比特率过高,从而导致整体视频流的码率波动。
主要功能:
- 比特率控制:通过设置比特率阈值,确保每个帧的比特率在合理范围内,从而保持视频流的平稳传输。
- 质量优化:通过调整裁剪系数,可以在不显著降低视频质量的情况下,减少比特率。
- 资源管理:有效管理编码器的资源,避免因比特率过高导致的带宽和存储压力。
参数解析:
-
bits_clip_dis_default = 0: 比特率裁剪默认值开关。0表示使用默认值,1表示不使用默认值。 -
bits_clip_mode = 1: 比特率裁剪模式。0表示不使用比特率裁剪,1表示启用比特率裁剪。 -
bits_clip_en_gop_clip = 0: GOP(Group of Pictures)裁剪使能开关。0表示关闭,1表示开启。 -
bits_clip_gop_bit_ratio_th[0] = 0.58: GOP比特率比例阈值1。用于控制GOP内的比特率分配,值越小,表示比特率分配越严格。 -
bits_clip_gop_bit_ratio_th[1] = 0.64: GOP比特率比例阈值2。用于控制GOP内的比特率分配。 -
bits_clip_gop_bit_ratio_th[2] = 1.25: GOP比特率比例阈值3。用于控制GOP内的比特率分配。 -
bits_clip_coef[0][0] = -0.5: 比特率裁剪系数0的下限。用于调整比特率裁剪的强度,取值范围是-0.5到3。 -
bits_clip_coef[0][1] = 0.2: 比特率裁剪系数0的上限。用于调整比特率裁剪的强度。 -
bits_clip_coef[1][0] = -0.3: 比特率裁剪系数1的下限。 -
bits_clip_coef[1][1] = 0.3: 比特率裁剪系数1的上限。 -
bits_clip_coef[2][0] = -0.3: 比特率裁剪系数2的下限。 -
bits_clip_coef[2][1] = 0.3: 比特率裁剪系数2的上限。 -
bits_clip_coef[3][0] = -0.5: 比特率裁剪系数3的下限。 -
bits_clip_coef[3][1] = 0.5: 比特率裁剪系数3的上限。 -
bits_clip_coef[4][0] = 0.4: 比特率裁剪系数4的下限。 -
bits_clip_coef[4][1] = 0.7: 比特率裁剪系数4的上限。
对于比例阈值:在一个GOP内,I帧和P帧之间的比特率分配比例。阈值1对比特率的限制越严格,I帧和P帧之间的比特率分配更紧凑;阈值3对比特率分配最宽松。
对于裁剪系数:下限值和上限值决定了裁剪的强度,系数0的裁剪强度较小,系数4的裁剪强度较大
9.自适应增强
参考资料:Adaptive Video Encoding For Different Video Codecs)
自适应增强功能可以根据视频内容的变化动态调整编码参数,以提高视频质量和编码效率。自适应增强通过分析视频帧之间的差异,动态调整编码参数,如量化参数(QP)和比特率。这样可以在保持视频质量的同时,优化带宽和存储资源的使用。
主要功能:
- 动态调整:根据视频内容的变化,实时调整编码参数,以适应不同的场景和运动复杂度。
- 提高质量:在关键场景中提高视频质量,例如高运动场景或重要细节区域。
- 优化资源:通过智能调整编码参数,减少不必要的比特率消耗,优化带宽和存储资源。
参数解析:
-
ae_diff_dis_default = 0:-
含义: 自适应增强差异默认值开关。 -
值: 0表示关闭,1表示开启。
-
-
ae_diff_frames_th = 40:含义: 自适应增强差异帧阈值。用途: 用于判断帧间差异的阈值,超过该阈值时触发自适应增强。
-
ae_stable_frames_th[0] = 5:含义: 自适应增强稳定帧阈值。用途: 用于判断视频帧稳定性的阈值,低于该值时认为视频帧不稳定。
-
ae_stable_frames_th[1] = 100:含义: 自适应增强稳定帧阈值。用途: 用于判断视频帧稳定性的阈值,高于该值时认为视频帧不稳定。
-
ae_diff_th[0] = 0.1:含义: 自适应增强差异阈值。用途: 用于判断帧间差异的阈值,低于该值时认为帧间差异较小。
-
ae_diff_th[1] = 0.6:含义: 自适应增强差异阈值。用途: 用于判断帧间差异的阈值,高于该值时认为帧间差异较大。
-
ae_small_diff_step = 1:含义: 小差异步长。用途: 用于在帧间差异较小时调整编码参数的步长。
-
ae_small_diff_qp[0] = 20:含义: 小差异量化参数(QP)下限。用途: 用于在帧间差异较小时设置的量化参数下限。
-
ae_small_diff_qp[1] = 25:含义: 小差异量化参数(QP)上限。用途: 用于在帧间差异较小时设置的量化参数上限。
-
ae_large_diff_qp[0] = 35:含义: 大差异量化参数(QP)下限。用途: 用于在帧间差异较大时设置的量化参数下限。
-
ae_large_diff_qp[1] = 50:含义: 大差异量化参数(QP)上限。用途: 用于在帧间差异较大时设置的量化参数上限。
注意:帧间差异较大用大量化参数,帧间差异较小用小量化参数!!
10.比特率控制
比特率控制决定了在编码过程中如何分配比特率,以平衡视频质量和文件大小。比特率是指每秒钟处理的数据量,通常以比特每秒(bps)为单位。
参数解析:
- i_p_target_bits_ratio_enable: 这个参数决定是否启用I帧和P帧的目标比特率比例控制。设置为0表示禁用。
- i_p_target_bits_ratio_scene_coef: 这些系数用于调整场景变化时I帧和P帧的比特率比例。
i_p_target_bits_ratio_scene_coef[0] = 20: 场景变化较大时的比特率比例。i_p_target_bits_ratio_scene_coef[1] = 17: 场景变化中等时的比特率比例。i_p_target_bits_ratio_scene_coef[2] = 15: 场景变化较小时的比特率比例。
- i_p_target_bits_ratio_move_coef: 这些系数用于调整运动变化时I帧和P帧的比特率比例。
i_p_target_bits_ratio_move_coef[0] = 1: 运动变化非常大时的比特率比例。i_p_target_bits_ratio_move_coef[1] = 0.75: 运动变化较大时的比特率比例。i_p_target_bits_ratio_move_coef[2] = 0.5: 运动变化中等时的比特率比例。i_p_target_bits_ratio_move_coef[3] = 0.25: 运动变化较小时的比特率比例。i_p_target_bits_ratio_move_coef[4] = 0.25: 运动变化非常小时的比特率比例。
11.IDR帧
IDR帧(Instantaneous Decoder Refresh)属于I帧,使用IDR帧编码出来的码流文件后,解码器收到IDR帧时,将会把所有参考帧队列丢弃,之后的所有帧解码都不会再引用IDR帧之前的帧。

IDR帧特性:
- 即时解码刷新:IDR帧会使解码器立即刷新,丢弃所有之前的参考帧。这意味着在解码IDR帧之后,所有后续帧都不会再引用IDR帧之前的任何帧。
- 独立解码:IDR帧是完全独立的帧,不依赖于其他帧进行解码。这使得IDR帧成为一个可靠的同步点,确保解码器可以正确地解码视频流并恢复图像质量。
- GOP(Group of Pictures)边界:IDR帧通常用作GOP的起始帧。在一个GOP内,帧与帧之间可以相互引用,但不同GOP之间的帧不会相互引用。
12.LBC低比特率编码
LBC(Low-Bitrate Coding)压缩模式是在减少视频数据流的比特率,同时尽量保留图像质量。实现方式:
- 压缩算法优化:利用高效的编码算法,如预测编码和运动补偿,减少冗余数据。
- 分辨率和帧率调整:可能降低视频的分辨率和帧率,以进一步降低比特率。
- 量化和编码技术:应用更精细的量化方法和高效的编码技术,如H.264或HEVC,来减少数据量。

LBC模式通常有不同的压缩率选项,例如1.5倍、2.0倍和2.5倍压缩率,这些选项可以根据具体需求进行选择,以平衡压缩效率和处理性能。
压缩率越高,视频通常会变得越模糊。这是因为高压缩率会去除更多的图像细节,从而降低视频的清晰度!!
13.色度量化
色度量化(Chroma Quantization)用于压缩视频中的色度信息。色度信息指的是图像中的颜色数据,与亮度信息(表示图像的明暗程度)相对应。
在视频编码中,色度量化的主要目的是减少色度数据的大小,从而降低视频的整体数据量。具体来说,色度量化通过调整色度分量的量化参数(QP)来实现。量化参数决定了数据的压缩程度,数值越高,压缩率越高,但图像质量可能会有所下降。
色度量化通常与亮度量化分开处理,因为人眼对亮度变化更敏感,对色度变化相对不那么敏感。因此,色度数据可以在较高的压缩率下处理,而不会显著影响视觉质量。
参数介绍:
- chroma_qp_offset_enable = 0:这个参数表示色度量化偏移功能被禁用(0表示禁用,1表示启用)。
- chroma_qp_offset = -4:这个参数设置色度平面的量化参数偏移值为-4。量化参数(QP)决定了视频编码的压缩程度,数值越低,图像质量越高。偏移值范围为-12到12。
14.H264编码约束标志
H.264编码约束标志用于指示编码流是否遵循特定的约束条件,以确保兼容性和解码器的正确解码。这些标志位可以控制编码器在生成码流时遵循某些标准或限制,以提高解码器的兼容性和稳定性。
例如,某些标志位可以指示编码流是否符合特定的配置文件或级别,或者是否使用了某些高级编码特性。通过设置这些标志位,编码器可以生成更符合解码器预期的码流,从而减少解码错误和兼容性问题。
参数介绍:
-
h264_constraint_flag_enable = 0:这个参数表示约束标志功能被禁用(0表示禁用,1表示启用)。
-
h264_constraint_flag_bit0 = 1:这个标志位表示编码流遵循H.264标准附录A.2.1中的所有约束条件。
-
h264_constraint_flag_bit1 = 1:这个标志位表示编码流遵循附录A.2.2中的所有约束条件。
-
h264_constraint_flag_bit2 = 1:这个标志位表示编码流遵循附录A.2.3中的所有约束条件。
-
h264_constraint_flag_bit3 = 0:这个标志位目前未使用,通常保留为0。
-
h264_constraint_flag_bit4 = 0:这个标志位目前未使用,通常保留为0。
-
h264_constraint_flag_bit5 = 0:这个标志位目前未使用,通常保留为0。
15.ve到isp的D2D限制
在视频编码中,VE(Video Encoder)到ISP(Image Signal Processor)的D2D(Device-to-Device)限制通常指的是在视频编码过程中,直接在设备之间传输数据时所施加的限制。这些限制可以帮助优化数据传输的效率和质量,确保在不同设备之间传输视频数据时不会超出设备的处理能力。
D2D限制参数可以控制数据传输的速率和量,以避免过载和延迟。例如,设置不同的D2D级别限制可以确保在高负载情况下,数据传输仍然保持稳定和高效。
参数介绍:
-
ve2isp_d2d_limit_enable = 0:这个参数表示D2D限制功能被禁用(0表示禁用,1表示启用)。
-
ve2isp_d2d_limit_d2d_level0 = 768:这个参数设置D2D通信的第0级限制为768,范围在1到1024之间。
-
ve2isp_d2d_limit_d2d_level1 = 640:这个参数设置D2D通信的第1级限制为640,范围在1到1024之间。
-
ve2isp_d2d_limit_d2d_level2 = 512:这个参数设置D2D通信的第2级限制为512,范围在1到1024之间。
-
ve2isp_d2d_limit_d2d_level3 = 448:这个参数设置D2D通信的第3级限制为448,范围在1到1024之间。
-
ve2isp_d2d_limit_d2d_level4 = 384:这个参数设置D2D通信的第4级限制为384,范围在1到1024之间。
-
ve2isp_d2d_limit_d2d_level5 = 320:这个参数设置D2D通信的第5级限制为320,范围在1到1024之间。
相关文章:
高级编码参数
1.跳帧机制 参考资料:frameskipping-hotedgevideo 跳帧机制用于优化视频质量和编码效率。它通过选择性地跳过某些帧并使用参考帧来预测和重建视频内容,从而减少编码所需的比特率,同时保持较高的视频质量。在视频编码过程中,如果…...
gradio 合集
知识点 1:基本 Chatbot 创建 import gradio as gr 定义历史记录 history [gr.ChatMessage(role“assistant”, content“How can I help you?”), gr.ChatMessage(role“user”, content“What is the weather today?”)] 使用历史记录创建 Chatbot 组件 ch…...
Python NumPy(5):广播、迭代
1 NumPy 广播(Broadcast) 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。如果两个数组 a 和 b 形状相同,即满足 a.shape b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相…...
基于 AWS SageMaker 对 DeepSeek-R1-Distilled-Llama-8B 模型的精调与实践
在当今人工智能蓬勃发展的时代,语言模型的性能优化和定制化成为研究与应用的关键方向。本文聚焦于 AWS SageMaker 平台上对 DeepSeek-R1-Distilled-Llama-8B 模型的精调实践,详细探讨这一过程中的技术细节、操作步骤以及实践价值。 一、实验背景与目标 …...
git push到远程仓库时无法推送大文件
一、错误 remote: Error: Deny by project hooks setting ‘default’: size of the file ‘scientific_calculator’, is 164 MiB, which has exceeded the limited size (100 MiB) in commit ‘4c91b7e3a04b8034892414d649860bf12416b614’. 二、原因 本地提交过大文件&am…...
算法随笔_30: 去除重复字母
上一篇:算法随笔_29:最大宽度坡_方法3-CSDN博客 题目描述如下: 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: …...
【Rust自学】15.1. 使用Box<T>智能指针来指向堆内存上的数据
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.1.1. Box<T> box<T>可以被简单地理解为装箱,它是最简单的智能指针,允许你在堆内存上存储数据&am…...
简单的SQL语句的快速复习
语法的执行顺序 select 4 字段列表 from 1 表名列表 where 2 条件列表 group by 3 分组前过滤 having 分组后过滤 order by 5 排序字段列表 limit 6 分页参数 聚合函数 count 统计数量 max 最大值 min 最小值 avg 平均 sum 总和 分组查询使…...
Hive:复杂数据类型之Map函数
Map函数 是Hive里面的一种复杂数据类型, 用于存储键值对集合。Map中的键和值可以是基础类型或复合类型,这使得Map在处理需要关联存储信息的数据时非常有用。 定义map时,需声明2个属性: key 和 value , map中是 key value 组成一个元素 key-value, key必须为原始类…...
Matlab实现TCN-BiLSTM时间卷积神经网络结合双向长短期记忆神经网络多特征分类预测(附模型研究报告)
Matlab实现TCN-BiLSTM时间卷积神经网络结合双向长短期记忆神经网络多特征分类预测(附模型研究报告) 目录 Matlab实现TCN-BiLSTM时间卷积神经网络结合双向长短期记忆神经网络多特征分类预测(附模型研究报告)分类效果基本描述程序设…...
Midjourney中的强变化、弱变化、局部重绘的本质区别以及其有多逆天的功能
开篇 Midjourney中有3个图片“微调”,它们分别为: 强变化;弱变化;局部重绘; 在Discord里分别都是用命令唤出的,但如今随着AI技术的发达在类似AI可人一类的纯图形化界面中,我们发觉这样的逆天…...
NLP深度学习 DAY4:Word2Vec详解:两种模式(CBOW与Skip-gram)
用稀疏向量表示文本,即所谓的词袋模型在 NLP 有着悠久的历史。正如上文中介绍的,早在 2001年就开始使用密集向量表示词或词嵌入。Mikolov等人在2013年提出的创新技术是通过去除隐藏层,逼近目标,进而使这些单词嵌入的训练更加高效。…...
【Linux】 冯诺依曼体系与计算机系统架构全解
Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具Linux下进度条 冯诺依曼体系是现代计算机设计的基石,其统一存储和顺序执行理念推动…...
LLM - 大模型 ScallingLaws 的设计 100B 预训练方案(PLM) 教程(5)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145356022 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与…...
【最后203篇系列】005 -QTV200 Online
说明 借着春节休假,把这部分完工,然后2025年将正式的把量化研究的成果进行产品化输出。 首先,我会将策略的执行从脚本挪到服务。做法是将策略的逻辑放在微服务里,作为一个接口,而由sniffer来触发策略执行。我想这样策…...
Midjourney基础-常用修饰词+权重的用法大全
用好修饰词很关键 Midjourney要用除了掌握好提示词的写法,按照上一篇《做Midjourney最好图文教程-提示词公式以及高级参数讲解》画面主体 场景氛围 主体行为 构图方式 艺术风格 图像质量。 要画出有质感的内容我们必须要掌握好“修饰词”,这些修饰…...
Deepseek的RL算法GRPO解读
在本文中,我们将深入探讨Deepseek采用的策略优化方法GRPO,并顺带介绍一些强化学习(Reinforcement Learning, RL)的基础知识,包括PPO等关键概念。 策略函数(policy) 在强化学习中, a…...
神经网络和深度学习
应用 类型 为什么近几年飞速发展 数据增长,算力增长,算法革新 逻辑回归 向量化 浅层神经网络(Shallow neural network) 单条训练数据前向传播计算表达式 batch训练数据前向传播计算表达式 反向传播计算表达式 参数随机初始化 不能全部设为0 原因是同一…...
步进电机加减速公式推导
运动控制梯形速度曲线相关算法请参考下面系列文章 PLC运动控制基础系列之梯形速度曲线_三菱运动控制模块梯形加减速-CSDN博客文章浏览阅读3.1k次,点赞3次,收藏7次。本文是关于PLC运动控制的基础教程,重点介绍了梯形速度曲线的概念、计算和应用。讨论了梯形加减速在启动和停…...
python学opencv|读取图像(四十八)使用cv2.bitwise_xor()函数实现图像按位异或运算
【0】基础定义 按位与运算:两个等长度二进制数上下对齐,全1取1,其余取0。 按位或运算:两个等长度二进制数上下对齐,有1取1,其余取0。 按位取反运算:一个二进制数,0变1,1变0。 按…...
关联传播和 Python 和 Scikit-learn 实现
文章目录 一、说明二、什么是 Affinity Propagation。2.1 先说Affinity 传播的工作原理2.2 更多细节2.3 传播两种类型的消息2.4 计算责任和可用性的分数2.4.1 责任2.4.2 可用性分解2.4.3 更新分数:集群是如何形成的2.4.4 估计集群本身的数量。 三、亲和力传播的一些…...
CMAKE工程编译好后自动把可执行文件传输到远程开发板
# 设置 CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件,这里以项目名作为可执行文件的名称 add_executable(${PROJECT_NAME} main.cpp)# 设置开发板信息 set(DEVELOPMENT_BOARD_IP "192.168.1.10…...
【etcd】二进制安装etcd
由于生产服务器不能使用yum 安装 etcd ,或者 安装的etcd 版本比较老,这里介绍一个使用二进制安装的方式。 根据安装文档编写一个下载脚本即可 : 指定 etcd 的版本 提供了两个下载地址 一个 Google 一个 Github, 不过都需要外网 注释掉删除保…...
企业知识管理平台助力企业创新与竞争力提升的有效策略探讨
内容概要 在当今快速发展的商业环境中,企业知识管理平台的构建显得至关重要。它不仅为企业的知识资源提供了一个整合与分享的空间,还为企业的创新与竞争力提升提供了策略支持。本文将深入探讨企业知识管理平台的关键要素,包括知识获取、存储…...
Java多线程——线程安全性
线程安全性 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的 public class A {public void test(){//....} }无状态对象是线程安全的,其不包含任何域,也不包含任何对其他类中域的引用&#…...
Windows安装Miniconda和PySide6以及配置PyCharm
目录 1. 选择Miniconda 2. 下载Miniconda 3. 安装Miniconda 4. 在base环境下创建pyside6环境 5. 安装pyside6环境 6. 配置PyCharm环境 7. 运行第一个程序效果 1. 选择Miniconda 选择Miniconda而没有选择Anaconda,是因为它是一个更小的Anaconda发行版&#x…...
C++传送锚点的内存寻址:内存管理
文章目录 1.C/C内存分布回顾2.C内存管理2.1 内存申请2.2 operator new与operator delete函数2.3 定位new表达式 3.关于内存管理的常见知识点3.1 malloc/free和new/delete的区别3.2 内存泄漏 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 继C语…...
两种交换排序算法--冒泡,快速
目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序(Bubble Sort)是一种简单的排序算法,基本思想是通过反复交换相邻的元素,直到整个序列有序。它的名字来源于较大的元素像气泡…...
循序渐进kubernetes-RBAC(Role-Based Access Control)
文章目录 概要Kubernetes API了解 Kubernetes 中的 RBACRoles and Role Bindings:ClusterRoles and ClusterRoleBindings检查访问权限:外部用户结论 概要 Kubernetes 是容器化应用的强大引擎,但仅仅关注部署和扩展远远不够,集群的安全同样至…...
《从因果关系的角度学习失真不变表示以用于图像恢复》学习笔记
paper:2303.06859 GitHub:lixinustc/Causal-IR-DIL: Distortion invariant feature learning for image restoration from a causality perspective 2023 CVPR 目录 摘要 1、介绍 1.1 图像修复任务 1.2 失真不变表示学习 1.3 因果效应估计的挑战…...
