视频自学笔记
一、视频技术基本框架
二、视频信号分类
2.1信号形式
2.1.1模拟视频
模拟视频是指由连续的模拟信号组成的视频图像,以前所接触的电影、电视都是模拟信号,之所以将它们称为模拟信号,是因为它们模拟了表示声音、图像信息的物理量。摄像机是获取视频信号的来源,早期的摄像机以电子管作为光电转换器件,把外界的光信号转换为电信号。摄像机前的被拍摄物体的不同亮度对应于不同的亮度值,摄像机电子管中的电流会发生相应的变化。模拟信号就是利用这种电流的变化来表示或者模拟所拍摄的图像,记录下它们的光学特征,然后通过调制和解调,将信号传输给接收机,通过电子枪显示在荧光屏上,还原成原来的光学图像。这就是电视广播的基本原理和过程。模拟信号的波形模拟着信息的变化,其特点是幅度连续(连续的含义是在某一取值范围内可以取无限多个数值)。其信号波形在时间上也是连续的,因此它又是连续信号。
模拟视频的特点如下:
优点:技术成熟、价格低、系统可靠性较高。
缺点:不适宜进行长期存放,不适宜进行多次复制。随着时间的推移,录像带上的图像信号强度会逐渐衰减,造成图像质量下降、色彩失真等现象。
来自 <https://zhuanlan.zhihu.com/p/54045642>
2.1.2数字视频
数字视频是对模拟视频信号进行数字化后的产物,它是基于数字技术记录视频信息的。模拟视频可以通过视频采集卡将模拟视频信号进行A/D(模/数)转换,这个转换过程就是视频捕捉(或采集过程),将转换后的信号采用数字压缩技术存入计算机磁盘中就成为数字视频。模拟视频一般采用分量数字化方式,先把复合视频信号中的亮度和色度分离,得到YUV或YIQ分量,然后用三个模/数转换器对三个分量分别进行数字化,最后再转换成RGB空间。
来自 <数字视频 - 知乎>
2.2传输方式划分
按传输方式,我们首先将视频分为复合视频(Composite Video)和分量视频(Component Video)。
复合视频只用一个通道(这也是为什么叫复合信号)进行视频传输,只传输模拟信号,传输的是480i或720i标清(480p或720p)的视频。复合视频不能携带音频信号。
分量视屏分为模拟分量视屏和数字分量视屏。
数字分量视频使用YCbCr颜色空间(或R'G'B'),它将视频信号分为多个分量进行传输(数字信号),当用于广播和录制时,将其调制为复合NTSC、PAL、SECAM信号。
模拟分量分频一般使用YPbPr颜色空间,它将视频信号分为多个分量进行传输(模拟信号),并且不携带音频信号。
2.3按分辨率划分
视屏的分辨率概念比较简单,就是组成视屏的每一帧图像的像素点数量,一般用行和列像素相乘来表示。视屏分辨率决定了视屏的清晰度,也决定了模拟视屏的带宽和数字视频的数据量大小。常见的有720×480,1280×720,1920×1080,现在还有3840x2160,7680x4320。
2.4扫描方式
视频是一系列静止图像组成,而每幅图像由扫描线(沿着显示器从上到下,一行一行的数据线)组成。如下图,
上方的就是一帧一帧的静止图像,下方的就是一帧图像的扫描线组成。视频(其实是图像)在显示器上按照一定时间刷新,显示器需要知道什么时候刷新,因此需要两个信号来告诉显示器如何显示。第一个是垂直同步信号,告诉显示器要显示下一幅图像了(否则一幅图像看到天亮);第二个是水平同步信号,告诉显示器要显示下一条扫描线了(否则一直刷新第一行,这能看?)。数据流大致是下图这样的,一直到视频结束。
注意:在视频中,扫描线是最小的处理单元;而图像中,像素点是最小的处理单元。
隔行扫描和逐行扫描
逐行扫描:以上讨论的其实都是逐行扫描。一帧图像从第一行扫描到最后一行,依次显示,这个很好理解,不多赘述。
隔行扫描:将图像显示在扫描式的显示设备上的方法,扫描设备交换扫描偶数行和奇数行。这样说并不直观,我们来看图。
从图中我们可以看到,对于静止图像,第一次我们扫描它的奇数行并且将他们显示到显示器中,第二次我们扫描它的偶数行并将他们显示到显示器中。扫描一次得到的一半图像,叫做场。那么,每次只扫描一半,是不是我们看到的图像也是一半呢?不是这样的。因为图像是一帧接一帧的,每次刷新一半,另一半其实是上一帧图像刷新的扫描线。
如帧1的场1,场2,帧2的场1,场2。第一次扫描帧1的场1,另一半没有,这个时候确实是半个图像,但是短到你不能发现,然后扫描帧1的场2,由于视觉暂留,你会看到场1和场2的结合,也就是完整的帧1,再之后就是帧2和场1和帧1的场2的结合,以此类推。
隔行扫描的优点就是对帧率的要求低,但是交错式的显示有时会出现闪烁效应(不具体解释,大家可以自行问度娘),显示效果不如逐行扫描。
将分辨率和扫描方式结合到一起就可以说明一下我们平常听到的1080p,720p,1080i 这些名词是什么意思了:
P:progressive,意思是逐行扫描,帧编码
I:interlace,意思是隔行扫描,场编码
1080i格式:1920×1080(水平1080线,隔行扫描)
1080p格式:1920×1080(水平1080线,逐行扫描)
720i格式:1280×720(水平720线,隔行扫描)
720p格式:1280×720(水平720线,逐行扫描)
其他分辨率类似。
2.5清晰度
视频清晰度可以如下分类:
标准清晰度:480i和576i。
增强清晰度:480p和576p。
高清晰度:720p和1080i。
超高清晰度:4K分辨率(3840×2160 像素)和8K分辨率 (7680×4320像素)
2.6按信号制式划分
视屏信号制式是指电视制式,即电视信号的标准,可以简单地理解为用来实现电视图像、声音信号所采用的一种技术标准。电视制式有很多种。对模拟电视,有黑白电视制式、彩色电视制式,伴音制式等;对于数字电视,有图像、音频信号压缩编码格式(信源编码)、TS流(Transport Stream)编码格式(信道编码)、数字信号调制方式,图像显示格式等。这里只讨论模拟电视制式。
黑白电视制式的主要内容有:图像和伴音的调制方式、图像信号极性、图像和伴音的载频差、频带宽度、频道间隔、扫描参数等。世界各国所采用的黑白电视制式有:A、B、C、D、E、G、H、I、K、K1、L、M、N等,共计13种(其中A、C、E已不采用),我国为其中的D、K制。
彩色广播电视制式需要与黑白电视制式兼容,即黑白电视能够接收彩色电视信号,彩色电视也能接收黑白电视信号,只不过画面全都变成黑白的。彩色电视根据三原色原理,同时为了压缩传输频带,将R、G、B三个基色信号转变为亮度(Y)和红、蓝两个色差信号(R-Y和B-Y)。其中亮度信号可以用来传输黑白图像,色度和亮度信号组合可以恢复出R、G、B三个信号。因此,兼容制彩色电视除传送与黑白电视相同的亮度和伴音信号外,还在同一视频频带内同时传送色度信号。色度信号是由两个色差信号对视频频带高频端的色副载波进行调制而成的。为防止色差信号的调制过载,需要将红、蓝色差信号进行压缩,压缩后的红、蓝色差信号用V、U表示。
除了包括与黑白电视相同的扫描、信道等以拉丁字母来区别的制式内容外,根据发、收端对三基色信号的不同编、解码方式构成不同的彩色电视制式。今世界流行的彩色电视制式有三种: NTSC、PAL和SECAM。这三种制式不能互相兼容。在不支持某种制式的电视机上播放该种制式的信号,画面将变为黑白色。
https://blog.csdn.net/hit_wzj/a
三、色彩空间
人类有三种视杆细胞,可以分辨三种波长的光,因此我们能看到彩色的世界。视屏技术也需要至少三个维度来量化色彩,才能保证人类对彩色画面的需求,这就构成了一个三维的色彩空间。颜色空间有多种表示方式,在视屏技术里面有下面几种比较常用。
3.1RGB
目前的显示设备大都是采用了RGB色彩空间,RGB是从颜色的原理来设计定的,它的颜色混合方式就如有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,亮度等于两者亮度之总和,即加法混合。
屏幕上的不同颜色,都由这红色,绿色,蓝色三种基本色光按照不同的比例(权重)混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。RGB的所谓“多少”就是指亮度,并使用整数来表示。在用8位表示时,RGB各有256级亮度,用数字量化表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。
使用这种方式表示彩色图像的方式为RGB颜色空间。RGB颜色空间常用于显示器系统。通过这种形式表示的图像,每个像素的每一个颜色分量用1个字节表示,则可以表示256×256×256种不同的颜色。在常见的图像格式中,如位图(bmp)格式以RGB形式保存数据。
3.2YUV
YUV是编码true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。
“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度(Chrominance、Chroma),包含了色调和饱和度。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
在实际的编解码等视频处理的过程中,YUV格式比RGB格式更为常用。在YUV格式中,一个像素由亮度分量和色度分量表示,每一个像素由一个亮度分量Y和两个色度分量U/V组成。亮度分量可以与色度分量一一对应,也可以对色度分量进行采样,即色度分量的总量少于亮度分量。
3.2.1YPbPr
YPbPr是用在模拟系统的,并且RGB和YPbPr的转换在SDTV和HDTV中是不同的。
来自 <https://zhuanlan.zhihu.com/p/28766366>
3.2.2YCbCr
YCbCr颜色空间用于数字视频系统中。
YCbCr是被ITU定义在标准ITU-R BT.601(标清SDTV),ITU-R BT.709(高清HDTV),ITU-R BT.2020(超高清)中的一种色彩空间。
YCbCr (SDTV)是在世界数字组织视频标准研制过程中作为ITU - R BT.601 建议的一部分, 其实是YUV经过Gamma的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG,H264均采用此格式。
其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异,而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异,此即所谓的色差信号。
在视频通信系统中(特别是视频编解码)的“YUV”图像就是YCbCr。在平常的工作交流中,所称的YUV也是YCbCr。
3.2.3YUV的色度采样
因为人的感官对亮度信息的敏感度远高于对色度信息。因此相对于其他像素格式,YUV的最大优势是可以适当降低色度分量的采样率,并保证不对图像造成太大影响,这可以有效降低视屏数据量。而且,使用这种方式还可以兼容黑白和彩色显示设备。对于黑白显示设备,只需要去除色度分量,只显示亮度分量即可。
在YUV中常见的色度采样方式有4:4:4、4:2:2和4:2:0等,其中4:2:2如下图所示:
来自 <https://zhuanlan.zhihu.com/p/28766366>
3.3HSI
HSI颜色空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation)和亮度(Intensity)来描述色彩。HSI颜色空间可以用一个圆锥空间模型来描述。用这种描述HSI色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。
上图是HSI的双圆锥模型。模型中双圆锥的上顶点对应I=1,即白色;下顶点对应I=0,即黑色。色调(色相)用角度表示,0°表示红色,互补色相差180°。饱和度的取值范围从0到1,0对应于垂直轴的中心线(也就是说这条线上没有色彩,只有灰度),I=0.5时红色的饱和度为1,颜色空间中的点到I轴的距离即是其饱和度。
来自 <https://zhuanlan.zhihu.com/p/28859125>
3.4色彩空间变换
不同的色彩空间最终要表达的都是人类视觉系统能够正常识别的颜色,它们其实只是使用了不同的坐标系,就像直角坐标系和极坐标系之间的关系。它们之间可以相互转换。RGB和YUV转换关系如下:
RGB格式转为YUV格式
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
YUV格式转为RGB格式
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
四、视屏编码技术
对于视频数据而言,视频编码的最主要目的是数据压缩。这是因为动态图像的像素形式表示数据量极为巨大,存储空间和传输带宽完全无法满足保存和传输的需求。例如,图像的每个像素的三个颜色分量RGB各需要一个字节表示,那么每一个像素至少需要3字节,分辨率1280×720的图像的大小为2.76M字节。
如果对于同样分辨率的视频,如果帧率为25帧/秒,那么传输所需的码率将达到553Mb/s!如果对于更高清的视频,如1080P、4k、8k视频,其传输码率更是惊人。这样的数据量,无论是存储还是传输都无法承受。因此,对视频数据进行压缩称为了必然之选。
4.1标准化组织
在国际组织的独立和联合开发中,产生了很多重要的视频编解码标准。主要国际组织包括ISO/IEC MPEG、ITU-T、Google、Microsoft、AVS工作组和AOM联盟等。
ITU-T,全称International Telecommunications Union - Telecommunication Standardization Sector,即国际电信联盟——电信标准分局。该组织下设的VECG(Video Coding Experts Group)主要负责面向实时通信领域的标准制定,主要制定了H.261/H263/H263+/H263++等标准。
ISO,全称International Standards Organization,即国际标准化组织。该组织下属的MPEG(Motion Picture Experts Group),即移动图像专家组主要负责面向视频存储、广播电视、网络传输的视频标准,主要制定了MPEG-1/MPEG-4等。
实际上,真正在业界产生较强影响力的标准均是由两个组织合作产生的。比如MPEG-2、H.264/AVC和H.265/HEVC等。
主要标准包括:JPEG、MJPEG、JPEG2000、H.261、MPEG-1、H.262/MPEG-2、H.263、MPEG-4 (Part2/ASP)、H.264/MPEG-4 (Part10/AVC)、H.265/MPEG-H (Part2/HEVC)、H.266/VVC、VP8/VP9、AV1、AVS1/AVS2、SVAC1/SVAC2等。
4.2主流视屏编码标准
主流视屏编码的发展历程如下图
接下来我们主要摘录下面接种影响较大的编码技术。
4.2.1 H.261
H.261视频编码标准诞生于1988年,可谓是视频压缩编码发展的第一个里程碑。因为从H.261开始,视频编码方法采用了沿用至今的基于波形的混合编码方法。H.261标准主要目标是用于视频会议和可视电话等高实时性、低码率的视频图像传输场合。
在H.261标准产生的时代,由于各国的电视制式不一致,因此不能直接互通。为了解决数据源格式不兼容的问题,H.261定义了一种公共中间格式CIF(Common Intermediate Format)。编码的目标格式首选转换为CIF格式进行编码和传输,接收端进行解码后再转换为各自的格式。H.261规定的CIF格式视频的亮度分辨率为352×288,QCIF格式的亮度分辨率为176×144。
4.2.2 MEPG-2/H.262
MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性。MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定,编码码率从每秒3兆比特~100兆比特,标准的正式规范在ISO/IEC13818中。MPEG-2不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加详细的规定和进一步的完善。MPEG-2特别适用于广播级的数字电视的编码和传送,被认定为SDTV和HDTV的编码标准。
MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。这两种相关性使得图像中存在大量的冗余信息。如果我们能将这些冗余信息去除,只保留少量非相关信息进行传输,就可以大大节省传输频带。而接收机利用这些非相关信息,按照一定的解码算法,可以在保证一定的图像质量的前提下恢复原始图像。一个好的压缩编码方案就是能够最大限度地去除图像中的冗余信息。
MPEG-2的编码图像被分为三类,分别称为I帧,P帧和B帧。 I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。P帧和B帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧内编码。B帧图像采用双向时间预测,可以大大提高压缩倍数。
4.2.3 H.264/AVC
H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。在ISO/IEC中该标准命名为AVC (Advanced Video Coding),作为MPEG-4标准的第10个选项;在ITU-T中正式命名为H.264标准。
4.2.4 H.265/HEVC
H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H264由于算法优化,可以低于1Mbps的速度实现标清数字图像传送;H265则可以实现利用1~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。
4.3视屏压缩编码技术
视频信息之所以存在大量可以被压缩的空间,是因为其中本身就存在大量的数据冗余。其主要类型有:
时间冗余:视频相邻的两帧之间内容相似,存在运动关系
空间冗余:视频的某一帧内部的相邻像素存在相似性
编码冗余:视频中不同数据出现的概率不同
视觉冗余:观众的视觉系统对视频中不同的部分敏感度不同
以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:
13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s
如此大的数据量如果直接进行存储或传输将会遇到很大困难,因此必须采用压缩技术以减少码率。
数字化后的视频信号能进行压缩主要依据两个基本条件:
- 数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。
- 视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。
数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。一般的数字视频压缩编码方法都是混合编码,即将变换编码,运动估计和运动补偿,以及熵编码三种方式相结合来进行压缩编码。通常使用变换编码来消去除图像的帧内冗余,用运动估计和运动补偿来去除图像的帧间冗余,用熵编码来进一步提高压缩的效率。下文简单介绍这三种压缩编码方法。
五、视屏接口
5.1模拟视屏接口
根据传输方式,模拟视屏的接口有以下三类:
5.1.1复合视屏接口
1.消费类接口RCA
RCA端子(RCA jack,或RCA connector),俗称梅花头、莲花头,是一种应用广泛的端子,可以应用的场合包括了模拟视频/音频(例:AV端子(三色線))、数字音频(例:S/PDIF)与色差分量(例:色差端子)传输等。
下图是AV端子(是不是很眼熟,小时候家里的VCD用的就是这个东西)
2.专业接口BNC
专业视屏领域会使用BNC接头,使用同轴电缆来传输视屏信号,有效提升信号质量、抗干扰能力和传输距离。
5.1.2分量视屏接口
1.SDTV/HDTV
针对有RGB和YUV两种色彩的信号SDTV/HDTV定义了两种接头
RGB Interface:
SDTV RGB接口使用三个RCA梅花连接头,传输模拟R'G'B'信号。
注意:这里使用的RCA连接头的颜色分别似乎红、绿、蓝,而我们最开始介绍的RCA端子使用的是黄、白、红,它们是完全不同的接口,传输不同的信号,注意区分。
YPbPr Interface:
SDTV YPbPr接口使用三个RCA梅花连接头,传输模拟YPbPr信号。
因为人眼对绿色最敏感,因此Y一般用绿色表示(我是这么理解的),也可以理解成PbPr分别是蓝色色差分量、红色色差分量,所以分别用蓝色和红色表示,剩下的亮度就用绿色表示了。
上图的仪器就支持S-Video,YPbPr,CVBS(复合同步视频广播信号,也叫RCA视频)。
2. D-Connector Interface
在日本和新加坡,某些高端消费类设备上,14针母D型连接头是可用的。它们主要用于转换EIA 770.2或EIA 770.3模拟YPbPr数据。
来自 <https://zhuanlan.zhihu.com/p/28944235>
3.VGA接口
VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。
VGA线的母头如下图。
各个引脚功能
来自 <https://zhuanlan.zhihu.com/p/28944235>
5.1.3分离视屏接口
S-Video(separate video)信号是Y、C分离信号。传输亮度信号Y和色度信号C。S-Video用于传输标清视频信号,尤其是480i和576i视频。由于亮度信号和色度信号分离,因此它的视频效果要比composite video要好,但是比component video差。
S-Video主要在美国、日本等NTSC制国家中使用。
5.2
数字视屏接口
5.2.1 SDI:
串行数字接口(SDI,Serial Digital Interface),SD/HD/3G/6G/12G-SDI;
SDI理论上传输距离可达100m,而HDMI的传输距离一般在30m以内。
5.2.2 HDMI
高清晰度多媒体接口(英文:High Definition Multimedia Interface,HDMI)
HDMI接口的线20米要400到600RMB,如果按照这个计量标准,SDI要使用几百米估计得破产了。然而实际上SDI的线1米才几块钱,就算是200米也才不到1000块钱。所以SDI比HDMI的成本更低!
5.2.3 DVI
DVI(Digital Visual Interface),即数字视频接口。
5.2.4 DisplayPort
DisplayPort也是一种高清数字显示接口标准,简称DP,比HDMI更先进的是,DisplayPort在一条线缆上还可实现更多的功能。
5.2.5 雷电
Intel“Thunderbolt”(雷电)接口。融合了PCIExpress数据传输技术和DisplayPort显示技术,可以同时对数据和视频信号进行传输,并且每条通道都提供双向10Gbps带宽。
本文主要参考来源:视屏技术自学笔记 - 知乎
相关文章:

视频自学笔记
一、视频技术基本框架 二、视频信号分类 2.1信号形式 2.1.1模拟视频 模拟视频是指由连续的模拟信号组成的视频图像,以前所接触的电影、电视都是模拟信号,之所以将它们称为模拟信号,是因为它们模拟了表示声音、图像信息的物理量。摄像机是获…...

easyexcel 导出日期格式化
1.旧版本 在新的版本中formate已经被打上废弃标记。那么不推荐使用这种方式。 2.推荐方式 推荐使用另外一种方式【 Converter 】代码如下,例如需要格式化到毫秒【yyyy-MM-dd HH:mm:ss SSS】级别 创建一个公共Converter import com.alibaba.excel.converters.Conv…...

02-开发环境搭建
02-开发环境搭建 鸿蒙开发环境的准备主要分为以下环节: 注册开发者实名认证创建应用下载安装开发工具新建工程 注册开发者 在华为开发者联盟网站上,注册成为开发者,并完成实名认证。 打开华为开发者联盟官网,点击“注册”进入…...

DBeaver导入csv到数据库
DBeaver的图标是一只小浣熊,查了下Beaver确实是浣熊的意思,看起来还是蛮可爱的。 业务上有需要导入csv到数据库的需求,试用了下,发现挺好用的。有很多属性可以定制。 导入步骤: 1.建表,表字段与待导入cs…...

React第十一节 组件之间通讯之发布订阅模式(自定义发布订阅器)
组件之间通讯常用方案 1、通过props 2、通过context 3、通过发布订阅模式 4、通过Redux 后面会有专栏介绍 什么情况下使用发布订阅模式 a、当我们想要兄弟组件之间通讯,而共同的父组件中又用不到这些数据时候; b、当多个毫无相关的组件之间想要进行数据…...

tcpreplay/tcpdump-重放网络流量/捕获、过滤和分析数据包
tcpdump 是一个网络数据包分析工具,通过捕获并显示网络接口上传输的数据包,帮助用户分析网络流量。 原理:用户态通过 libpcap 库控制数据包捕获,内核态通过网卡驱动获取数据包。 核心功能包括:捕获、过滤和分析数据包…...

ASPICE评估体系概览:对象、范围与参考标准解析
ASPICE(汽车软件过程改进和能力确定)是一个框架,它被广泛应用于汽车行业的软件开发和维护过程的改进。 它类似于软件工程领域的CMMI(能力成熟度模型集成),但专门针对汽车行业,考虑了该行业特有…...

力扣92.反转链表Ⅱ
题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head [1,2,3,4,5], left …...

Java设计模式之适配器模式:深入JDK源码探秘Set类
在Java编程中,Set类作为一个不允许存储重复元素的集合,广泛应用于数据去重、集合运算等场景。然而,你是否曾好奇Set类是如何在底层实现元素唯一性判断的?这背后隐藏的力量正是适配器模式。 适配器模式简介 适配器模式࿰…...

java八股-流量封控系统
文章目录 请求后台管理的频率-流量限制流量限制的业务代码UserFlowRiskControlFilter 短链接中台的流量限制CustomBlockHandler 对指定接口限流UserFlowRiskControlConfigurationSentinelRuleConfig 请求后台管理的频率-流量限制 根据登录用户做出控制,比如 x 秒请…...

【WebRTC】Android SDK使用教学
文章目录 前言PeerConnectionFactoryPeerConnection 前言 最近在学习WebRTC的时候,发现只有JavaScript的API文档,找了很久没有找到Android相关的API文档,所以通过此片文章记录下在Android应用层如何使用WebRTC 本篇文章结合:【W…...

基于单片机的智能晾衣控制系统的设计与实现
摘要:本文是以 AT89C52 单片机为核心来实现智能晾衣控制系统。在这个系统中,雨水检测传感器是用来检测出雨的,而控制器将检测信号的变换,根据变换后的信号自动驱动直流电机将被风干 的棒收回,以便随时控制直流电机来实现晾衣;在光敏模块中检测昼夜的环境,自动控制晾衣杆…...

多人聊天室 NIO模型实现
NIO编程模型 Selector监听客户端不同的zhuangtai不同客户端触发不同的状态后,交由相应的handles处理Selector和对应的处理handles都是在同一线程上实现的 I/O多路复用 在Java中,I/O多路复用是一种技术,它允许单个线程处理多个输入/输出&…...

三、使用 Maven:命令行环境
文章目录 1. 第一节 实验一:根据坐标创建 Maven 工程1.1 Maven 核心概念:坐标1.2 实验操作1.3 Maven核心概念:POM1.4 Maven核心概念:约定的目录结构 2. 实验二:在 Maven 工程中编写代码2.1 主体程序2.2 测试程序 3. 执…...

Blender导入下载好的fbx模型像的骨骼像针戳/像刺猬
为什么我下载下来的骨骼模型和我自己绑定的模型骨骼朝向完全不一样 左边是下载的模型 右边是我自己绑定的模型 左边的模型刚刚感觉都是像针一样往外戳的,像刺猬一样那种。 解决方法勾选自动骨骼坐标系...

如何高效搭建智能BI数据分析系统
作为当今信息化时代,数据资产已经成为企业最为核心倚重的,自然企业也就面临来自于对内部这些数据的处理和分析。如何在大批量的数据当中提取有用信息,帮助企业做出智慧决策,是不少企业面临的问题。作为国内知名的BI数据分析系统服…...

第 6 章 Java 并发包中锁原理剖析Part one
目录 6.1 LockSupport 工具类 6.2 独占锁 ReentrantLock 的原理 获取锁 1.void lock() 方法 2.void lockInterruptibly() 方法 3.boolean tryLock() 方法 4.boolean tryLock(long timeout, TimeUnit unit) 方法 释放锁 6.1 Lo…...

使用 Canvas 绘制一个镂空的圆形区域
如果要实现一个类似人脸识别的界面,要求使用 canvas 进行绘制,中间镂空透明区域,背景是白色的画布。 技术方案: 首先,使用 canvas 绘制一个白色画布其次,使用 context.globalCompositeOperation 合成属性进…...

【Notepad++】---设置背景为护眼色(豆沙绿)最新最详细
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Notepad】---设置背景为护眼色…...

2024 数学建模国一经验分享
2024 数学建模国一经验分享 背景:武汉某211,专业:计算机科学 心血来潮,就从学习和组队两个方面指点下后来者,帮新人避坑吧 2024年我在数学建模比赛中获得了国一(教练说论文的分数是湖北省B组第一࿰…...

安全见闻2
安全见闻,犹如一座庞大而深邃的知识宝库,其中涵盖了形形色色的网络安全知识与错综复杂的网络技术体系。在当今数字化时代,这些领域的重要性不言而喻,它们不仅关乎个人信息的保护与隐私安全,更是支撑着整个互联网世界以…...

Web游戏开发指南:在 Phaser.js 中读取和管理游戏手柄输入
前言 Phaser.js 是一个广受欢迎的 HTML5 游戏框架,为开发者提供了创建跨平台 2D 游戏的强大工具。在现代游戏开发中,支持游戏手柄已成为提升玩家体验的重要方面。本文将详细介绍如何在 Phaser.js 中监听和处理游戏手柄的输入,帮助开发者为他…...

代码随想录32 动态规划理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯。
1.动态规划理论基础 动态规划刷题大纲 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的…...

记录一个Flutter 3.24单元测试点击事件bug
哈喽,我是老刘 这两天发现一个Flutter 3.24版本的单元测试的一个小bug,提醒大家注意一下。 老刘自己写代码十多年了,写Flutter也6年多了,没想到前两天在一个小小的BottomNavigationBar 组件上翻了车。 给大家分享一下事件的经过。…...

使用Python将 word文档转pdf文档
第一步:我们需要导入支持包 >pip install pywin32 如果下载速度比较慢的话,可以考虑使用国内镜像源。 第二步:我们需要导入文件,这里采用 input,用户填入路径后,直接获取路径下的word文档,实现批量转换…...

基于C#+SQLite开发数据库应用的示例
SQLite数据库,小巧但功能强大;并且是基于文件型的数据库,驱动库就是一个dll文件,有些开发工具 甚至不需要带这个dll,比如用Delphi开发,用一些三方组件;数据库也是一个文件,虽然是个文…...

Vue基本语法
Options API 选项式/配置式api 需要在script中的export default一个对象对象中可以包含data、method、components等keydata是数据,数据必须是一个方法(如果是对象,会导致多组件的时候,数据互相影响,因为对象赋值后&…...

芯片发展史
芯片的发展史可分为几个重要的阶段,从早期的真空管到现代的集成电路,反映了技术进步和创新的历程: 1. 真空管时代 (1904 - 1950年代) 真空管是20世纪初的电子元件,用于放大信号和开关,广泛应用在早期的收音机、电视机…...

我的知识图谱和Neo4j数据库的使用
知识图谱概述 知识图谱的含义 RDF与RDFS RDF(Resource Description Framework,资源描述框架)和RDFS(RDF Schema,RDF模式)是构建知识图谱的基础技术之一。它们提供了一种标准的方式来表示信息,…...

ASP.NET CORE API 解决跨域问题
环境 vs2022 .net 8 创建ASP.net Core API项目 配置跨域 编写ApiController 启动项目 得到服务器运行的 地址 在Hbuiler中创建web项目,编写代码 【运行】-【运行到浏览器】-选择一个浏览器,查看结果 正常显示 问题 如果允许所有源访问,有安全风险方…...