视频编解码发展历程(从AVC到HEVC再到VVC)(一)

2023-10-27

视频编解码发展历程(从AVC到HEVC再到VVC)(一)

概述

在过去的17年里,自2003年确定现在仍占主导地位的 H.264/运动图像专家组 (MPEG-4) 高级视频编码 (AVC) 标准的第一个版本以来,已经又开发了两个主要的新一代视频编码标准,即称为高效视频编码标准(HEVC) 和多功能视频编码 (VVC)标准。与AVC一样保持了10年的开发周期,HEVC于2013年完成,并且与AVC相比,HEVC完成了约50%的比特率降低。 VVC 项目的周期缩短了三年,该项目于2020年7月完成,再次实现比其前身 (HEVC) 降低约50%的比特率。本文总结了AVC及之后视频编码标准化的这些发展。当然本文特别侧重于提供VVC第一个版本的概述,以及与HEVC的比较。正如在之前的开发周期中一样,除了混合视频压缩方面的进一步提升之外,VVC标准还诠释了其命名中所突出的视频应用领域的广泛多功能性。VVC标准包含了对更加广泛的应用程序的支持,除了对典型的标准和高清摄像机捕获的内容编码支持外,还包括了对计算机生成/屏幕内容、高动态范围内容、多层和多视图编码的功能,以及沉浸式媒体(如 360° 视频)的支持。

2013年,高效视频编码(HEVC)标准的第一个版本最终确定,与之前的H.264/MPEG-4高级视频编码 (AVC) 标准相比,比特率降低了约50%。 这两个标准都是由 ITU-T 视频编码专家组 (VCEG) 和 ISO/IEC 运动图像专家组 (MPEG) 共同制定的。与十年前制定的 H.262/MPEG-2 视频标准相比,AVC 本身提供了大约50%的比特率降低,该标准也是同一组织的联合项目。 现在,截至2020年7月,VCEG和MPEG还完成了通用视频编码 (VVC) 标准的制定,该标准旨在将比特率再降低50%并提供一系列附加功能。VVC标准伴随着一个关联的元数据规范,称为通用补充增强信息 (VSEI) 标准。

目前,随着宽带互联网服务覆盖范围和速度的大幅提升,视频在全球数据流量中的份额已经达到80%左右,并且该数据还在继续增长。此外,4k(3840×2160)分辨率的家用电视机比例也在稳步增长,这些更高分辨率的电视机需要更高质量的视频内容才能充分发挥其潜力。 尽管几乎每台4k电视都配备了HEVC解码器来播放高质量的4k视频,但提供该内容所需的数据速率仍然相当高,从而扩展了宽带容量的极限。这说明需要比当前HEVC标准可以提供的更有效的压缩——现在VVC进一步解决了这一需求。
除了其高压缩性能外,VVC 还旨在促进对各种视频内容和应用程序的高效编码,包括以下内容:

  1. 超标清和超高清视频,包括更高分辨率(高达8k或更大)、高动态范围(HDR)和宽色域;
  2. 计算机生成或屏幕内容,尤其是在计算机桌面屏幕共享和在线游戏应用程序中;
  3. 用于沉浸式和增强现实的360°视频

此外,VVC 的第一个版本包括用于分辨率自适应、基于区域的访问、分层编码可扩展性、各种色度采样格式的编码以及灵活的比特流处理(例如从不同编码的视频比特流中提取和合并区域)的灵活机制。

视频编码标准介绍

现代视频编码标准已被开发用于对比特率、图像质量、延迟、随机可访问性、复杂性等具有多种要求的数字视频的有效传输和存储。因此对以下应用程序的支持尤为重要。

  1. 实时对话服务,例如视频电话、视频会议、屏幕共享和云游戏,其中低延迟/延迟和合理的复杂性是关键要求(最近因 COVID-19 大流行,该应用成为最前沿的应用程序) ;
  2. 直播,例如通过卫星、有线和地面传输频道的电视,重点是图像质量、恒定或适度变化的频道比特率、适度的延迟以及用于频道调谐和频道切换的频繁随机接入点 ;
  3. 视频点播,例如通过互联网协议(IP)的视频流,其中图像质量、比特率和对传输通道的适应最重要;
  4. 数码相机的捕捉、流式传输和存储,例如用于智能手机、无人机、动作、安全摄像头和专业摄像系统。

在这里插入图片描述

端到端视频压缩技术在源头涉及将视频压缩为比特流的编码器,在接收器涉及解码器以解压缩比特流以供消费。编码器和解码器的组合通常称为编解码器。然而,该术语有些误导,因为编码器和解码器通常作为完全独立的产品实现,并且在大多数应用中,编码器的数量与解码器的数量非常不同。如图1所示,视频编码标准只规定了编码数据的格式和解码器的操作。这包括比特流的结构和语法,以及从中重建解码视频所需的过程,但不包括编码器执行的操作。

使解码器标准化可确保与所有兼容解码器设备的互操作性,同时允许在效率、计算复杂性、功耗、延迟和其他考虑因素的特定应用限制下设计和操作编码器。例如,在实时通信场景中,任何特定的编码器都不可能有时间或计算资源来测试所有可能的编码模式,因此可能会牺牲一些编码效率来降低延迟和/或复杂性。此类算法优化的类型和程度被故意置于标准范围之外。

自 1988 年 H.261 以来的所有视频编码标准都基于所谓的混合视频编码原理,如图2所示。混合是指减少视频信号中冗余的两种方法的组合,即预测和变换编码以及预测残差的量化。 尽管预测和变换通过去除相关性减少了视频信号中的冗余,但量化通过降低其精度来减少变换系数表示的数据,理想情况下是通过仅去除难以察觉的细节;在这种情况下,它有助于减少数据的不相关性。这种混合视频编码设计原则也用于两个最新的标准HEVC和VVC。要更详细地回顾以前的标准,从 H.120 到 AVC,还包括 H.261、MPEG-1 视频、H.262/MPEG-2 视频、H.263 和 MPEG-4 视频,读者可参考论文Video compression—From concepts to the H.264/AVC standard。

参考上图,现代混合视频编码器的特征在下面介绍。

块划分用于将图像划分为更小的块,用于预测和变换过程的操作。第一个混合视频编码标准使用固定块大小,通常16×16的块大小被用于亮度预测区域,8×8用于变换。从H.263开始,尤其是从AVC开始,块划分成为设计重点的主要部分。在随后的几代中,通过添加更多不同的块大小和形状来适应局部区域统计数据,块划分已经变得更加灵活。在预测阶段,这允许编码器在预测的高精度(使用小块)与要发送的侧边或预测信息(使用大块)的低数据速率之间进行权衡。对于残差的编码,小块可以对细节进行编码,而大块可以非常有效地对平滑区域进行编码。随着将图片分割成块的可能性增加,与固定大小或有限分割集相比,需要测试可能的块划分组合并决定选择哪种块划分种类的选择也变多,从而导致编码器的复杂性随之增加。不过,幸运的是快速划分算法和计算能力的进步使最近的标准能够提供高度的灵活性。AVC、HEVC和VVC都采用具有多个深度级别和块作为叶节点的基于树的划分结构,并且VVC还提供了使用非矩形划分块的能力。

运动补偿或图片间预测用于消除已编码视频序列(CVS)的(因此称为inter)图片之间存在的冗余。一个关键概念是基于块的运动补偿,其中图片被划分为块,对于每个块,来自先前解码图片的对应区域,即参考图片,被用作当前块的预测。假设块的内容在具有平移运动的图片之间移动,当前块与参考图片中的相应区域之间的位移通常由二维平移运动向量(MV)来指代。寻找当前块最佳的帧间预测块通常在编码器处通过运动估计的块匹配搜索来完成。然后编码器将预测得到的MV数据用信号发送给解码器。H.261仅使用整数值MV,此平移运动补偿的概念后来通过使用带插值的分数样本MV精度(MPEG-1和MPEG-2视频的半采样精度和MPEG-4 Visual的四分之一采样精度)进行了推广,对来自一张时间前一张和一张后一张图片(MPEG-1和MPEG-2视频中的双向预测)或来自具有任意相对时间位置的多个参考图片(在AVC之后的标准中)的两个预测进行平均。此外,使用来自不同时间位置的多个参考图片可以实现图片组(GOP)内部的分层预测结构,这进一步提高了编码效率。然而,当使用后续图片时,由于需要不同的图片排序以进行编码和显示,从而引入了结构延迟。最新的标准VVC通过近似仿射运动并在解码器端使用另一个运动估计过程进行运动细化,甚至超越了平移运动模型。

帧内预测通过从已编码/解码的空间相邻参考样本中导出块的预测来利用图片内存在的空间冗余(因此称为intra)。 空间样本域中的这种预测是通过AVC引入的,而以前的标准使用的是简化的变换域预测。在AVC中,采用了三种不同类型的预测模式,DC、平面(planar)和角度模式,所有这些模式都使用在要预测的块左侧和/或上方的已解码块的相邻样本。第一种,即所谓的DC模式,对相邻参考像素进行平均,并使用该值作为对整个块(即每个像素)的预测。第二种,即平面plannar模式,通过参考像素的位置相关线性组合将要预测的像素建模为平面。作为第三个选项,角度模式沿特定方向/角度对参考像素进行插值。例如,垂直角度模式只是沿每一列复制上述参考像素。HEVC扩展了这些模式,例如,通过将角度数量从8增加到33,而最新的VVC标准不仅进一步扩展了模式的数量,而且还结合了新方法,例如基于矩阵的帧内预测(MIP),这是使用机器学习设计的。与帧间预测中的运动信息类似,编码器将估计的预测信息,即帧内预测模式,发送给解码器。

变换通过使用合适的变换方式将信号从空间域变换到变换域(通常是频域)来去除信号的相关性。混合视频编码标准对预测残差(无论是来自帧间预测还是帧内预测)进行变换,即预测与原始输入视频信号之间的差值,如图2所示。 在变换域中,基本信息通常集中在少量系数中。在解码器处,需要应用逆变换来重建残差样本。变换方式的一个例子是Karhunen-Loève 变换 (KLT),它被认为是一种最佳去相关变换方法,但取决于输入信号的相关特性,而解码器通常不知道这些特性。另一个例子是离散余弦变换 (DCT),它自H.261以来一直被用于混合视频压缩,也用于著名的 JPEG图像压缩标准(与H.261大约在同一时间设计)。对于高度相关的自回归源,DCT与KLT具有相同的效果,并且DCT更容易计算。在从H.263第3版和 AVC 开始的后续标准中,使用基于整数的降低复杂度变换,通常非正式地称为DCT,尽管真正的DCT使用涉及无理数的三角基函数并支持额外的因式分解。为了考虑源信号中的不同统计数据,在HEVC和VVC中的多个变换之间进行选择可能是有益的。此外,如在VVC中那样对变换系数应用附加变换可以进一步去除相关性。

量化旨在降低输入值或一组输入值的精度,以减少表示这些值所需的数据量。在混合视频编码中,量化通常应用于单独的变换残差样本,即变换系数,从而产生整数系数级别。从图2中可以看出,该过程应用于编码器。在解码器处,相应的过程称为逆量化或简称为缩放,它在不恢复精度的情况下恢复原始值范围。精度损失使量化成为引入失真的混合视频编码框图的主要元素。量化和缩放可以看作是一个舍入操作,步长控制精度。在最近的视频编码标准中,步长源自控制保真度和比特率的所谓量化参数 (QP)。较大的步长(较大的QP)会降低比特率,但也会降低质量,例如,这会导致视频图片出现块伪影和模糊细节。

通常,每个样本都是独立量化的,这称为标量量化。与此相反,矢量量化联合处理一组样本,例如,通过将块映射到来自码本的矢量。至少从解码器的角度来看,在HEVC之前的所有最新视频编码标准都仅采用标量量化。HEVC包括一种称为符号数据隐藏的技巧,可以将其视为矢量量化的一种形式,而VVC引入了相关量化 (DQ),这可以解释为一种滑动块矢量量化,因为样本的量化取决于先前样本的状态。使用先前标准优化编码的高级技术也可以被视为矢量量化,而从解码器的角度来看似乎是标量量化。

熵编码通过考虑源符号的统计特性,即相对频率,将码字分配给一组离散值的源符号。 所有最近的视频编码标准都使用可变长度编码 (VLC) 表,这些表将较短的码字分配给出现频率较高的符号,以便接近熵。早期标准中设计码字表的方法是基于霍夫曼编码(稍作调整)。VLC通常用于编码和解码绝大多数数据,包括控制数据、运动数据和系数级别。AVC通过使用上下文自适应VLC (CAVLC) 进一步改进了系数级编码的VLC方案。上下文由先前符号的值或值的组合确定,可用于切换到为该上下文设计的VLC表。此外,AVC是第一个引入上下文自适应二进制算术编码 (CABAC)作为第二种更有效的熵编码方法的视频编码标准。CABAC仍然使用VLC表来映射符号,例如系数级别到二进制字符串(码字)。然而,二进制串不是直接写入比特流,而是二进制串中的每个比特使用具有上下文自适应概率模型的二进制算术编码进一步编码。由于其高效率,CABAC已成为后续HEVC和VVC标准中唯一的熵编码方法。

环路滤波是应用于重构图像的滤波过程(或这些过程的组合),如图2所示,其中重构图像是重构残差信号(包括量化误差)和预测。环路滤波后的重构图片可以存储起来,作为后续图片的帧间预测的参考。环路滤波这个名称的来历是对混合视频编码预测环路内的其他图片的这种影响。过滤的主要目的是减少视觉伪影并减少重建错误。H.263第2版是第一个使用去块环路滤波器的标准,它成为AVC第1版的核心功能。该滤波器旨在适应量化保真度,因此它可以衰减由基于块的预测残差的量化引入的块伪影,同时保留图片内容中的锐利边缘。

HEVC添加了第二个环路滤波阶段,称为样本自适应偏移滤波(SAO),这是在去块后应用的非线性滤波器,以衰减振铃效应和带状伪影。在新兴的VVC标准中,引入了自适应环路滤波器(ALF)作为第三个滤波器,其中,滤波器系数通常是通过使用维纳滤波器优化方法最小化重构误差来确定的。此外,在VVC中,另一个称为带色度缩放的亮度映射(LMCS)的过程也可以先于其他过程应用在环内处理阶段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视频编解码发展历程(从AVC到HEVC再到VVC)(一) 的相关文章

  • moviepy 生成的视频只有声音没有图像

    问题描述 PDF转成视频 用moviepy 将图片生成视频的时候 生成的视频 有些播放器 播放只有声音没有图像 解决方案 查看源码后发现在 ffmpeg writer py 文件里面有一段这样的代码 if codec libx264 and
  • 为什么从 avi 容器解码帧并将其编码为 h264/mp​​4 不起作用?

    我开始使用 ffmpeg 我想将 avi 文件转换为 mp4 h264 文件 我读过很多帖子 包括this 但我找不到任何好的示例如何将帧保存到 mp4 文件 下面的代码是简化的代码 它从 avi 文件中解码帧并将其编码为 H264 mp
  • AVSampleBufferDisplayLayer 如何显示 H.264

    我想分享我几天来学到的知识 没有太多可找到的 我仍然对声音感到困惑 欢迎提出意见和建议 这是我的代码片段 声明一下 property nonatomic retain AVSampleBufferDisplayLayer videoLaye
  • FFmpeg 无需解码视频即可获取运动向量

    我想访问 h264 视频流的运动向量而不解码视频 我知道这显示了视频和运动矢量 ffplay i myvideo avi flags2 export mvs vf codecview mv pf bf bb 如何避免解码整个视频以节省 CP
  • H264视频起始码的使用

    我对 H264 视频的起始代码 0x00 0x00 0x00 0x01 的使用有一般性问题 我不清楚这个起始代码的用法 因为在与 H264 视频相关的 RTP RFC 中没有参考 但我确实在网上看到了很多参考资料 特别是在 stackove
  • 通过 rtp 流发送 Android h264 捕获

    我正在为 android 编写一个 rtp 视频流媒体 它从 Android 本地套接字读取 h264 编码数据并将其打包 问题是我做到了 但我在客户端 Voip 不断收到黑框 通信过程如下 Android gt Asterisk gt J
  • Color_FormatSurface 实现

    是否有关于 Color FormatSurface AndroidOpaque 颜色格式的可用文档 我的视频编码器目前不支持这种格式 我应该添加该功能 但我找不到任何有关它的信息 任何帮助 将不胜感激 没有关于它的文档 因为它是不透明的 这
  • 通过 ICodecAPI 为 H.264 IMFSinkWriter 编码器设置属性

    我试图通过检索 ICodecAPI 接口来调整通过 ActivateObject 创建的 H 264 编码器的属性 虽然我没有收到错误 但我的设置没有被考虑在内 代码在 Windows 10 下运行 我复制用于创建 IMFSinkWrite
  • Mediacodec 解码器在解码 H264 文件时总是超时

    我一直在努力decode编码的视频文件H264编码与安卓的媒体编解码器并尝试将解码器的输出放入surface 但是当我运行应用程序时 它显示黑色表面 并且在 DDMS logcat 中我看到解码器超时 我已将文件解析为有效frames首先
  • 如何设置 VTCompressionSession 的 MaxH264SliceBytes 属性

    iOS VTCompressionSession有一个属性是kVTCompressionPropertyKey MaxH264SliceBytes 但是 我无法设置kVTCompressionPropertyKey MaxH264Slice
  • android mediacodec:实时解码h264 nals

    我正在尝试使用 android 低级媒体 api 实时解码 h264 nals 每个 nal 包含一个完整的帧 所以我希望在用我的 nal 提供输入并调用之后dequeueOutputBuffer它会 立即 当然有一点延迟 显示我的框架 但
  • 如何在iOS上通过硬件解码来解码H.264帧?

    我已经使用 ffmpeg 来解码从 ip cam 收到的每一帧 简短的代码如下所示 void decodeFrame unsigned char frameData frameSize int frameSize AVFrame frame
  • H264 帧查看器

    您知道有什么应用程序可以向我显示单个 H264 帧的所有标头 参数吗 我不需要解码它 我只是想看看它是如何构建的 我想到了三种方法 如果您正在寻找免费的东西 否则谷歌 h264分析 以获取付费选项 下载h 264解析器 http www w
  • iOS 上通过 RTMP 的 H264 视频流

    经过一番挖掘 我发现了一个库 可以在写入 mp4 文件时从该文件中提取 NAL 单元 我正在尝试使用 RTMP 将此信息打包为 flvlibavformat and libavcodec 我使用以下方法设置视频流 void setupVid
  • 将 FFMPEG 编码为 MPEG-DASH – 或使用关键帧簇的 WebM – 用于 MediaSource API

    我目前正在将视频流发送到 Chrome 以通过 MediaSource API 进行播放 据我了解 MediaSource 仅支持使用 MPEG DASH 编码的 MP4 文件 或具有以关键帧开头的簇的 WebM 文件 否则会引发错误 媒体
  • 解析 mdat MP4 中的 H264

    我有一个仅包含 MP4 容器中的 mdat 原子的文件 mdat中的数据包含AVC数据 我知道数据的编码参数 该格式似乎不是附件 B 字节流格式 我想知道我将如何解析这个 我尝试过搜索切片标题 但运气不佳 是否可以在没有 NAL 的情况下解
  • MFCreateFMPEG4MediaSink 不生成 MSE 兼容的 MP4

    我正在尝试将 H 264 视频源流式传输到网络浏览器 Media Foundation 用于编码分段的 MPEG4 流 MFCreateFMPEG4MediaSink with MFTranscodeContainerType FMPEG4
  • ffmpeg 用于将视频编码为 H264 编解码器格式

    我有一个 mp4 视频文件 MPEG4 视频编解码器 我试图在 Linux 上使用 ffmpeg 将其转换为 H264 视频编解码器格式 原始 h 264 格式 版本 FFmpeg 版本 SVN r0 5 1 4 0 5 1 1ubuntu
  • 使用 libavformat API 读取 H264 SPS 和 PPS NAL 字节

    如何使用 libavformat API 读取 H264 SPS 和 PPS NAL 字节 我尝试使用 av read frame input avFormatContext avPkt API 从 mp4 视频 编解码器为 h264 文件
  • 如何使用Java将h.264直播流编码为RTP数据包

    我正在为 Android 操作系统开发一个应用程序 我需要来自摄像机的实时解码视频流 该视频流使用 h 264 编解码器进行编码 将帧数据转换为 RTP 数据包并将数据包发送到服务器 首先 可以尝试在 PC 上实现从 HDD 中预先录制的视

随机推荐

  • Electron-vue环境配置,打包报错问题解决

    Electron vue 项目构建过程 1 搭建Electron vue框架 参照网址 https electron org cn 2 执行npm install npm 在国内比较慢 所以采用淘宝镜像代理 执行以下命令 安装cnpm np
  • Android初级到高级视频教程全套 百度网盘下载

    百度网盘视频资源下载 https pan baidu com s 1MVYKj4L8 1nU7Er3z5UGRA https pan baidu com s 1ewu5bDpuggEu9y KCZC bg 入门级 中级 高级 进阶级 更多资
  • shell脚本——正则表达式,grep,awk

    目录 正则表达式 1 元字符 字符匹配 2 表示次数 3 位置锚定 4 分组或其他 grep awk的用法 1 基础用法 2 awk常见的内置变量 FS 指定输出的每行文本的字段分隔符 OFS 输出时的分隔符 NF 当前处理的行的字段个数
  • chromeOS介绍

    目录 概述 支持程序 功能 概述 chromeOS 是由Google设计基于Linux核心的作业系统 并使用Google Chrome浏览器作为其主要使用者介面 因此 Chrome OS主要支持Web应用程式 2016年起开始陆续相容And
  • 每日一题系列:不要二

    二货小易现有一个W H的网格盒子 网格的行编号为0 H 1 网格的列编号为0 W 1 每个格子可放1块蛋糕 任意两块蛋糕的欧几里得距离不能等于2 对于两个格子坐标 x1 y1 x2 y2 的欧几里得距离为 x1 x2 x1 x2 y1 y2
  • ModuleNotFoundError: No module named ‘scipy.misc.pilutil‘

    python 3 8 pillow 6 0 0 scipy 1 7 3 报错后 有老哥说 pip scipy 1 1 0 原理是scipy中没有imread了 原语句 from scipy misc pilutil import imrea
  • [人工智能-深度学习-41]:开发环境 - GPU进行训练安装与搭建(Pytroch、TensorFlow、Nvidia CUDA)详细过程

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121241620 目录 第1章 英伟达
  • wireshark抓包筛选固定流并转发

    wireshark抓包筛选固定流并转发 1 筛选固定ip或端口 2 复制数据 在弹框中选择原始数据 全选数据并粘贴保存成txt 3 发送数据 打开网络调试助手 点击发送文件 选择保存的文件并发送 即可实现数据转发
  • Windows 10中的Docker实践

    题记 微软在人们的心目中就是商业化的代名词 操作系统 Office 数据库 Azure等可能是我们耳熟能详的 当然微软也在布局更多的技术王国 开源界对微软一直嗤之以鼻 指责其闭源行为影响技术的发展 不过微软现在也在积极改变以往的傲慢态度 慢
  • 若依系统基于nacos注册中心搭建

    目录 nacos问题 项目内部问题 MySQL的问题 redis的问题 操作流程https blog csdn net maitian 2008 article details 118579638 ops request misc 257B
  • Quartus II 13.0波形仿真

    先放结论 Quartus II 13 0有自带的仿真工具 能实现波形仿真 之前一直找不到关于Quartus II 13 0的波形仿真 然后百度的都是说quartus ii 9 0之后的版本就没有这个功能了 只能再下一个modelsim之类的
  • unity 第四期

    1 在Unity里3个update FixedUpdate Update LateUpdate 的用法和区别 9ria游戏开发社区的黄祖祥的文章 关于Unity3D中的Update LateUpdate FiexdUpdate http b
  • 《Python数据分析基础教程:NumPy学习指南:第二版》读书笔记

    内容 主要介绍了NumPy库中的函数 组成方式 用非常零散的知识点串联成章节 内容摘要 极简地展示了章节中所运用的函数 第一章 arrange函数创建NumPy数组 第二章 NumPy特性 在NumPy中 复数的虚部是用j表示的 如果数组中
  • go基础详解2-go run & test

    一 go run 编译运行一个main 包 package 常用的运行方式如下 go run go run hello go run 后面接路径 该路径 不含子路径 下所有的go源文件都属于main包 go run filename1 fi
  • Jmeter性能综合实战 —— 签到及批量签到

    提取性能测试的三个方面 核心 高频 基础功能 签 到 请 求 步 骤 1 准备工作 签到线程组n HTTP请求默认值n HTTP cookie 管理器n 首页访问请求n 登录请求n 查看结果树n 调试取样器l HTTP代理服务器 1 创建线
  • docker查看日志方式

    docker查看日志方式 docker logs tail 1000 lt 容器id 名称 gt 查看容器前多少行的日志 docker compose f docker compose app yml logs f 查看所有容器的运行日志
  • Dubbo Main启动方式浅析

    服务容器是一个standalone的启动程序 因为后台服务不需要Tomcat或JBoss等Web容器的功能 如果硬要用Web容器去加载服务提供方 增加复杂性 也浪费资源 服务容器只是一个简单的Main方法 并加载一个简单的Spring容器
  • Latex:公式输入序号及多个公式一起编号

    begin equation begin split a b c 说明 这里双斜杠表示换行 在等号前面加 符号表示上下公式等号对齐 m h g label 公式1 说明 label 表示这组公式的记号 方便后续引用 end split en
  • 内网穿透的应用-Cloudreve搭建云盘系统,并实现随时访问

    文章目录 1 前言 2 本地网站搭建 2 1 环境使用 2 2 支持组件选择 2 3 网页安装 2 4 测试和使用 2 5 问题解决 3 本地网页发布 3 1 cpolar云端设置 3 2 cpolar本地设置 4 公网访问测试 5 结语
  • 视频编解码发展历程(从AVC到HEVC再到VVC)(一)

    视频编解码发展历程 从AVC到HEVC再到VVC 一 概述 视频编码标准介绍 概述 在过去的17年里 自2003年确定现在仍占主导地位的 H 264 运动图像专家组 MPEG 4 高级视频编码 AVC 标准的第一个版本以来 已经又开发了两个