【音視頻】H265 NALU分析

1 H265 概述

H264 與 H265 的區別

  • 傳輸碼率:H264 由于算法優化,可以低于 2Mbps 的速度實現標清數字圖像傳送;H.265 High Profile 可實現低于 1.5Mbps 的傳輸帶寬下,實現 1080p 全高清視頻傳輸。

  • 編碼架構:H.265/HEVC 的編碼架構大致上和 H.264/AVC 的架構相似,主要也包含幀內預測 (intra prediction)、幀間預測 (inter prediction)、轉換 (transform)、量化 (quantization)、去區塊濾波器 (deblocking filter)、熵編碼 (entropy coding) 等模塊,但在 HEVC 編碼架構中,整體被分為了三個基本單位,分別是編碼單位 (coding unit, CU)、預測單位 (predict unit, PU) 和轉換單位 (transform unit, TU)。

  • 編碼單位:H.264 中每個宏塊 (macroblock/MB) 大小是 8x8 或者 16x16 像素,而 H.265 的編碼單位可以選擇從最小的 8x8 到最大的 64x64。

  • 幀內預測方式:H.265 的幀內預測模式支持 33 種方向 (H.264 只支持 8 種),并且提供了更好的運動補償處理和矢量預測方法。

  • 編碼視頻大小:在相同的圖象質量下,相比于 H.264,通過 H.265 編碼的視頻大小將減少大約 39 - 44%。由于質量控制的測定方法不同,這個數據也會有相應的變化。

  • 信噪比 PSNR:通過主觀視覺測試得出的數據顯示,在碼率減少 51 - 74% 的情況下,H.265 編碼視頻的質量還能與 H.264 編碼視頻近似甚至更好,其本質上說是比預期的信噪比 (PSNR) 要好。

  • 運算需求:由于 h265 比較 h264 壓縮率更高,編碼視頻更小,所以對機器的運算需求也要更大。

  • 預測塊大小:HEVC 將之前標準中定義的宏塊 (macroblocks) 用一種最大到 64x64 像素的并且可以進一步細分成可變大 小的塊。HEVC 把編碼樹單元 (coding tree units (CTUs)) 變成亮度和色度的編碼塊 (coding tree blocks (CTBs))。一個 CTB 可以大小為 64x64、32x32 或者 16x16。這樣幀內 (intra-picture) 和幀間 (inter-picture) 的預測塊 (prediction units,PU) 大小從 64x64 到 4x4 大小,只是對于雙向預測,只能到 8x4 到 4x8 大小。預測殘差編碼的變換塊大小可以是 32x32、16x16、8x8、4x4。

  • 內部色深的增加:內部色深增加 (Internal bit depth increase (IBDI)) 可以讓編碼器運行在色寬更高的內部狀態。IBDI 最多可以作用于 14-bit 位寬。

  • 并行處理工具 (Parallel processing tools):可以把圖像分成獨立編解碼的矩形塊和條帶,即條帶 slice 和 tile 瓷片的概念。條帶大部分可以單獨解碼,只是最終需要同步成一個視頻流。條帶可以編碼成條帶間沒有預測,互相獨立。當然條帶間可能還是需要環路濾波的。

  • 熵編碼 (Entropy coding):HEVC 采用基于上下文自適應的熵編碼算法 (context - adaptive binary arithmetic coding (CABAC)),和 H.264 類似。只不過 HEVC 只支持 CABAC 編碼。

  • 幀內預測 (intra prediction):HEVC 的幀內預測有 33 個方向模式,而 h.264 中只有 8 個,HEVC 還指定了 planar 和 DC 幀內預測模式。

  • 幀間預測模式:本質上 H.265 是在 H.264 基礎上增加插值的抽頭系數個數,改變抽頭系數值以及增加運動矢量預測值的候選個數,以達到減少預測殘差的目的。H.265 與 H.264 一樣插值精度都是亮度到 1/4,色度到 1/8 精度,但插值濾波器抽頭長度和系數不同。H.265 的增加了運動矢量預測值候選的個數,而 H.264 預測值只有一個。

  • 運動補償 (Motion compensation):HEVC 采用半像素或者 1/4 像素的精度運動補償,以及 7 抽頭或者 8 抽頭的濾波器。H.264 使用半像素精度和 6 抽頭的濾波器。對于 4:2:0 視頻的色度分量有 1/8 像素精度和 4 抽頭的濾波器。HEVC 中的加權預測可以是單向也可以是雙向的預測。

  • 運動矢量預測 Motion vector prediction:HEVC 定義了 16-bit 的水平和垂直運動矢量,支持范圍到 [-32768, 32767],即最多 - 8192 到 8191.75 個亮度像素點,H.264 只支持到 - 512 到 511.75 個像素點。HEVC 的 MV 模式有高級運動矢量預測 (Advanced Motion Vector Prediction (AMVP)) 和合并模式。合并模式運行從鄰近塊繼承 mv 向量值,從而有 skip 和 direct 模式。

  • 環路濾波器:HEVC 有兩個環路濾波器,解塊濾波器 (DBF, deblocking filter) 與樣本自適應偏移量 (SAO, sample adaptive offset) 濾波器 (DBF)。Deblocking 濾波器和 H.264/MPEG-4 AVC 中的類似,HEVC 中 的 DBF 只能用于 8x8 的塊 (提高并行處理性能),而 H.264 適用于 4x4 的塊。HEVC 中 DBF 的強度從 0 到 2,對垂直邊界做水平濾波,對水平邊界做垂直濾波。SAO 濾波器在 DBF 濾波器之后,為了更好的重建原始圖像。每個 CTB 的 SAO 濾波器可以使能或者禁止邊界偏移模式或者子段偏移模式。

  • 去塊濾波:本質上 H.265 的去塊濾波與 H.264 的去塊濾波及流程是一致的,做了如下最顯著的改變:濾波邊界,H.264 最小到 4x4 邊界濾波;而 H.265 適應最新的 CU、PU 和 TU 劃分結構的濾波邊緣,最小濾波邊界為 8x8 ;濾波順序,H264 先宏塊內采用垂直邊界,再當前宏塊內水平邊界;而 H.265 先整幀的垂直邊界,再整幀的水平邊界。

  • 內部比特深度增加:為了保證中間預測、變換以及量化過程中的內部比特精度,以達到更好的壓縮性能。

  • 并行化設計:當前芯片架構已經從單核性能逐漸往多核并行方向發展,因此為了適應并行化程度非常高的芯片實現,HEVC/H.265 引入了很多并行運算的優化思路。

2 H265 分層結構
  • 視頻編碼層(VCL):負責原始視頻數據壓縮。
  • 網絡抽象層(NAL):將壓縮數據封裝為 NALU 單元,適配網絡傳輸。

在這里插入圖片描述

3 H265 碼流結構
1. Start Code
  • 標識 NALU 開始,格式為0x00000001(4 字節)或0x000001(3 字節)。
2. NALU Header(2 字節)
字段位數描述
forbidden_zero_bit1禁止位,默認 0,錯誤時置 1。
nal_unit_type6NALU 類型(如 VPS=32,SPS=33,PPS=34,I 幀 = 16-21 等)。
nuh_layer_id6層 ID,預留擴展位,默認 0。
nuh_temporal_id_plus13時域 ID,值為實際 ID+1。

nal_unit_type 表

nal_unit_typeName of nal_unit_typeContent of NAL unit and RBSP syntax structureNAL unit type class
0TRAIL_NCoded slice segment of a non - TSA, non - STSA trailing picture slice_segment_layer_rbsp()VCL
1TRAIL_RCoded slice segment of a non - TSA, non - STSA trailing picture slice_segment_layer_rbsp()VCL
2TSA_NCoded slice segment of a TSA picture slice_segment_layer_rbsp()VCL
3TSA_RCoded slice segment of a TSA picture slice_segment_layer_rbsp()VCL
4STSA_NCoded slice segment of an STSA picture slice_segment_layer_rbsp()VCL
5STSA_RCoded slice segment of an STSA picture slice_segment_layer_rbsp()VCL
6RADL_NCoded slice segment of a RADL picture slice_segment_layer_rbsp()VCL
7RADL_RCoded slice segment of a RADL picture slice_segment_layer_rbsp()VCL
8RASL_NCoded slice segment of a RASL picture slice_segment_layer_rbsp()VCL
9RASL_RCoded slice segment of a RASL picture slice_segment_layer_rbsp()VCL
10RSV_VCL_N10Reserved non - IRAP SLNR VCL NAL unit typesVCL
12RSV_VCL_N12Reserved non - IRAP SLNR VCL NAL unit typesVCL
14RSV_VCL_N14Reserved non - IRAP SLNR VCL NAL unit typesVCL
11RSV_VCL_R11Reserved non - IRAP sub - layer reference VCL NAL unit typesVCL
13RSV_VCL_R13Reserved non - IRAP sub - layer reference VCL NAL unit typesVCL
15RSV_VCL_R15Reserved non - IRAP sub - layer reference VCL NAL unit typesVCL
16BLA_W_LPCoded slice segment of a BLA picture slice_segment_layer_rbsp()VCL
17BLA_W_RADLCoded slice segment of a BLA picture slice_segment_layer_rbsp()VCL
18BLA_N_LPCoded slice segment of a BLA picture slice_segment_layer_rbsp()VCL
19IDR_W_RADLCoded slice segment of an IDR picture slice_segment_layer_rbsp()VCL
20IDR_N_LPCoded slice segment of an IDR picture slice_segment_layer_rbsp()VCL
21CRA_NUTCoded slice segment of a CRA picture slice_segment_layer_rbsp()VCL
22RSV_IRAP_VCL22Reserved IRAP VCL NAL unit typesVCL
23RSV_IRAP_VCL23Reserved IRAP VCL NAL unit typesVCL
24 - 31RSV_VCL24 - RSV_VCL31Reserved non - IRAP VCL NAL unit typesVCL
32VPS_NUTVideo parameter set video_parameter_set_rbsp()non - VCL
33SPS_NUTSequence parameter set seq_parameter_set_rbsp()non - VCL
34PPS_NUTPicture parameter set pic_parameter_set_rbsp()non - VCL
35AUD_NUTAccess unit delimiter access_unit_delimiter_rbsp()non - VCL
36EOS_NUTEnd of sequence end_of_seq_rbsp()non - VCL
37EOB_NUTEnd of bitstream end_of_bitstream_rbsp()non - VCL
38FD_NUTFiller data filler_data_rbsp()non - VCL
39PREFIX_SEI_NUTSupplemental enhancement information sei_rbsp()non - VCL
40SUFFIX_SEI_NUTSupplemental enhancement information sei_rbsp()non - VCL
41 - 47RSV_NVCL41 - RSV_NVCL47Reservednon - VCL
48 - 63UNSPEC48 - UNSPEC63UnspecifiedVCL

控制數據流

  • VPS(視頻參數集)NALU的頭值為0x40(?六進制),取出2-7位(0x40 & 0x7E)>>1 =32(?進制)
  • SPS(序列參數集)NALU的頭值為0x42(?六進制),取出2-7位(0x42 & 0x7E)>>1 =33(?進制)
  • PPS(圖像參數集)NALU的頭值為0x44(?六進制),取出2-7位(0x44 & 0x7E)>>1 =34(?進制)
  • SEI(補充增強信息)NALU的頭值為0x4e(?六進制),取出2-7位(0x4e & 0x7E)>>1 =39(?進制)
  • I幀 NALU的頭值為0x26(?六進制),取出2-7位(0x26 & 0x7E)>>1 =19(?進制)
  • I幀 NALU的頭值為0x28(?六進制),取出2-7位(0x28 & 0x7E)>>1 =20(?進制)
  • P幀 NALU的頭值為0x02(?六進制),取出2-7位(0x02& 0x7E)>>1 =1(?進制)
  • B幀 NALU的頭值為0x00(?六進制),取出2-7位(0x00& 0x7E)>>1 =0(?進制)

VPS、SPS、PPS:三者的結構和關系如下圖所示:

在這里插入圖片描述

nuh_layer_id(6bit)

  • LayerId預留位,占?NALU Header的第?個字節的最后?位和第?個字節的前五位,默認全為0,?于未來擴展。

nuh_temporal_id_plus1(3bit)

  • TID時域層標號,占?NALU Header的第?個字節的最后三位,?般默認值為1,其值減1為該NALU時域層標號。

3.NALU Payload

NALU Payload 即視頻壓縮數據 RBSP,嚴格意義上來說,Payload 數據應該是 EBSP。

  • SODB(String Of Data Bits):原始數據比特流,由 VCL 層產生的原始數據流,由于數據長度不一定是 8 的倍數,為方便計算機進行處理,就用到了 RBSP。
  • RBSP(Raw Byte Sequence Payload):原始字節序列載荷,即在 SODB 的后面添加了 trailing bits,即一個 bit 1 和若干個 bit 0,以便字節對齊。
  • EBSP (Encapsulated Byte Sequence Payload):擴展字節序列載荷。NALU 單元是通過開始碼 “0x00 0x00 0x00 0x01” 或者 “0x00 0x00 0x01” 來表示一個 NALU 單元的開始,同時 H265 規定,當檢測到 “0x00 0x00 0x00” 時,也可以表示當前 NALU 的結束。在 h265 碼流中規定每有兩個連續的 “0x00 0x00”,就增加一個 “0x03”,從而預防壓縮后的數據與開始碼產生沖突,防止競爭。

4 重點 NAL TYPE

參考博客:https://blog.csdn.net/Dillon2015/article/details/104142144

VPS 參數集

  • HEVC 在 H.264/AVC 的基礎上引入了視頻參數集 (Video Parameter Set,VPS)。

  • 這樣 HEVC 共定義了 3 類參數集:視頻參數集 (Video Parameter Set,VPS);序列參數集 (SequenceParameter Set,SPS);圖像參數集 (Picture Parameter Set,SPS)。在一個 HEVC 碼流中,前三個 NALU 分別是 VPS NALU、SPS NALU、PPS NALU。這三類參數集的 NALU 可以獨立解碼而不需要參考碼流中其他 NALU。

  • 每一類參數集都包含擴展機制,允許在將來的 HEVC 版本中擴展這個參數集而不會破壞向后兼容性。

  • VPS 用于傳送應用于多層和子層視頻編碼所需的信息,提供了整個視頻序列的全局性信息。一個給定的視頻序列的每一層都參考同一個 VPS,無論它們 SPS 是否相同。

VPS 語法元素

HEVC 中定義了 VPS 的各個語法元素及描述子:

video_parameter_set_rbsp( )Descriptor
vps_video_parameter_set_idu(4)
vps_base_layer_internal_flagu(1)
vps_base_layer_available_flagu(1)
vps_max_layers_minus1u(6)
vps_max_sub_layers_minus1u(3)
vps_temporal_id_nesting_flagu(1)
vps_reserved_0xffff_16bitsu(16)
profile_tier_level( 1, vps_max_sub_layers_minusl )-
vps_sub_layer_ordering_info_present_flagu(1)
for (i=( vps_sub_layer_ordering_info_present_flag? 0 : vps_max_sub_layers_minus1); i<= vps_max_sub_layers_minus1; i++ ) { }-
vps_max_dec_pic_buffering_minus1[i]ue(v)
vps_max_num_reorder_pics[i ]ue(v)
vps_max_latency_increase_plus1[i]ue(v)
vps_max_layer_idu(6)
vps_num_layer_sets_minus1ue(v)
for (i=1 ; i<=vps_num_layer_sets_minus1; i++)-
for (j=0 ; j<= vps_max_layer_id; j++)-
layer_id_included_flag[i][j]u(1)
vps_timing_info_present_flagu(1)
if( vps_timing_info_present_flag) { }-
vps_num_units_in_ticku(32)
vps_time_scaleu(32)
vps_poc_proportional_to_timing_flagu(1)
if( vps_poc_proportional_to_timing_flag )-
vps_num_ticks_poc_diff_one_minus1ue(v)
vps_num_hrd_parametersue(v)
for (i=0 ; i<vps_num_hrd_parameters; i++){ }-
hrd_layer_set_idx[i (])ue(v)
if ((i>0))-
cprms_present_flag[i ]u(1)
hrd_parameters( cpms_present_flag[i ], vps_max_sub_layers_minusl)-
vps_extension_flagu(1)
if( vps_extension_flag )-
while( more_rbsp_data( ) )-
vps_extension_data_flagu(1)
rbsp_trailing_bits( )-
上表定義了VPS的語法元素,前7條語法元素采?定?編碼,共4個字節,?便解碼器讀取,這7條語法元素包括VPS識別符,相關可?層及可?時域?層的信息。

跟隨前4個字節后的語法元素包括:比特流中解碼器工作的可用操作點信息。一個操作點的特性由使用的Profile、tier和level刻畫。它定義了解碼比特流所需的編碼工具,以及對比特流尺寸或緩存容量的限制。跟在整個比特流操作點指標后的是比特流時域子層的操作點指標。

  • vps_video_parameter_set_id:當前VPS標識符,供PPS引用。

  • vps_base_layer_internal_flag 和 vps_base_layer_available_flag

    • 如果vps_base_layer_internal_flag = 1且vps_base_layer_available_flag = 1,碼流中存在base layer。
    • 否則,如果vps_base_layer_internal_flag = 0且vps_base_layer_available_flag = 1,base layer由本規范未規定的外部手段提供。
    • 否則,如果vps_base_layer_internal_flag = 1且vps_base_layer_available_flag = 0,不存在base layer,但是VPS中包含base layer的信息就像其存在于碼流中一樣。
    • 否則,如果vps_base_layer_internal_flag = 0且vps_base_layer_available_flag = 0,不存在base layer,但是VPS中包含base layer的信息就像其由本規范未規定的外部手段提供一樣。
  • vps_max_layers_minus1:該值加1表示參考這個VPS的CVS(Coded Video Sequence)的最多允許的層數。為了保持碼流的一致性,當vps_base_layer_internal_flag = 0時vps_max_layers_minus1應該大于0。在本規范中vps_max_layers_minus1應該小于63。vps_max_layers_minus1 = 63留給將來擴展使用。

  • vps_max_sub_layers_minus1:該值加1表示參考這個VPS的CVS的最多允許的時域子層數。vps_max_sub_layers_minus1 值應該在0~6間,即最多支持7個時域子層。

  • vps_temporal_id_nesting_flag:當vps_max_sub_layers_minus1 = 0時,該參數為1;當vps_max_sub_layers_minus1大于0時,這個參數用于指定是否對幀間預測進行額外限定。該參數用于指定時域子層升檔,即從低子層切換到高子層。

  • vps_reserved_0xffff_16bits:兩字節保留位,其值等于0xFFFF。

  • vps_sub_layer_ordering_info_present_flag

    • vps_sub_layer_ordering_info_present_flag = 1表示vps_max_dec_pic_buffering_minus1[ i ],vps_max_num_reorder_pics[ i ] 和vps_max_latency _increase_plus1[ i ]作用于vps_max_sub_layers_minus1 + 1 子層。

    • vps_sub_layer_ordering_info _present_flag = 0表示vps_max_dec_pic_buffering_minus1[ vps_max_sub_layers_minus1 ],vps_max_num_reorder_pics[ vps_max_sub_layers_minus1 ]和vps_max_latency_increase_plus1[ vps_max_sub_layers_minus1 ] 作用于所有子層。

    • 當vps_base_layer_internal_flag = 0時,vps_sub_layer_ordering_info _present_flag = 0且解碼器應該忽略該字段。

  • vps_max_dec_pic_buffering_minus1[ i ]:規定了HighestTid = i時,CVS的圖像存儲單元中解碼圖像所需的最大緩存。

  • vps_max_num_reorder_pics[ i ] :規定了HighestTid = i時,在CVS中解碼順序在某一幅圖像之后,而顯示順序在該圖像前的圖像最大數量。

  • vps_max_latency_increase_plus1[ i ] :當HighestTid = i時,該語法元素用于計算VpsMaxLatency Pictures[i]的值。當vps_max_latency_increase_plus1[ i ]不等于0時,VpsMaxLatencyPictures[ i ] =vps_max_num_reorder_pics[i]+vps_max_latency_increase_plus1[ i ]-1。

  • vps_max_layer_id:指定參考該VPS的所有CVS中的NALU的nuh_layer_id的最大值。

  • vps_num_layer_sets_minus1:指定VPS中層集(layer set)的數量,該值在0~1023間。

  • layer_id_included_flag[ i [ j]

    • 該語法元素為1時,表示圖層標識列表 LayerSetLayerIdList[ i ]中包含nuh_layer_id = j的情況;
    • 該語法元素為0時,表示圖層標識列表 LayerSetLayerIdList[ i ]中不包含nuh_layer_id = j的情況;
    • NumLayersInIdList[ 0 ] = 1且LayerSetLayerIdList[0][0] = 0,NumLayersInIdList[i]和 LayerSetLayerIdList[ i ]由下面方式生成:
n = 0
for(m = 0;m <= vps_max_layer_id;m++)if(layer_id_included_flag[i][m])LayerSetLayerIdList[i][n++] = m
NumLayersInIdList[i] = n
  • vps_timing_info_present_flag :

    • 該語法元素為1時,表示在VPS中語法元素vps_num_units_in_tick、vps_time_scale、vps_poc_proportional_to_timing_flag和vps_num_hrd_parameters存在;
    • 該語法元素為0時VPS中不存在這4個語法元素。
  • vps_num_units_in_tick:該語法元素規定當時鐘頻率為vps_time_scale Hz時所花的時間單位個數。以秒為單位時,一個時鐘周期等于vps_num_units_in_tick除以vps_time_scale 。例如,當一個視頻的幀率為25Hz時,vps_time_scale 等于27000000Hz,vps_num_units_in_tick就等于1080000,因此一個時鐘周期就是0.04秒。

  • vps_time_scale:一秒內時間單位的個數。

  • vps_poc_proportional_to_timing_flag:該語法元素為1時,表示CVS在每幅圖像(不包括第一幅圖像)的POC與它的顯示時間和第一幅圖像的顯示時間的比值成正比;否則,不成比例。

  • vps_num_ticks_poc_diff_one_minus1:表示POC之間差值為1時,時鐘周期的數目。

  • vps_num_hrd_parameters:指定VPS RBSP中語法結構體hrd_parameters()的數目。

  • hrd_layer_set_idx[ i ]:指定第i個語法結構體hrd_parameters()使用的圖層集的索引。

  • cprms_present_flag[ i ] :表示第i個hrd_parameters()中是否存在所有子層公用的HRD參數。

  • vps_extension_flag:該語法元素取0時,表示在VPS RBSP中沒有語法元素vps_extension_data_flag。

  • vps_extension_data_flag:可以為任意值。在該版本中,解碼器忽略該語法元素。

SPS參數集

參考博客:https://blog.csdn.net/Dillon2015/article/details/104148026

一段視頻包含一個或多個編碼視頻序列(CVS),每個CVS都有一個序列參數集(SPS),且這些SPS均引用同一個視頻參數集(VPS)。SPS包含CVS中所有編碼圖像的共享編碼參數,一個CVS內的所有圖像參數集(PPS)必須引用同一SPS,且SPS在被引用后直至CVS結束前均處于激活狀態。

SPS的語法元素主要分為以下七類:

1. 圖像格式信息

  • 采樣格式:如4:2:0、4:2:2、4:4:4等色度采樣模式。
  • 圖像分辨率:亮度分量的寬度(pic_width_in_luma_samples)和高度(pic_height_in_luma_samples)。
  • 量化深度:亮度(bit_depth_luma_minus8)和色度(bit_depth_chroma_minus8)的比特深度(如8bit、10bit)。
  • 裁剪參數:是否啟用裁剪(conformance_window_flag)及左/右/上/下偏移量(conf_win_left_offset等)。

2. 編碼參數信息

  • 塊尺寸設置
    • 編碼塊(CU)最小/最大尺寸(通過log2_min_luma_coding_block_size_minus3等參數推導)。
    • 變換塊(TU)最小/最大尺寸及劃分深度(log2_min_luma_transform_block_size_minus2等)。
  • 特殊模式開關
    • 4:4:4采樣的三通道單獨編碼(separate_colour_plane_flag)。
    • 幀內強濾波(strong_intra_smoothing_enabled_flag)。
    • 非對稱劃分模式(AMP,amp_enabled_flag)與時域MV預測(sps_temporal_mvp_enabled_flag)。
  • 編碼工具:量化矩陣使用(scaling_list_enabled_flag)、樣點自適應補償(SAO,sample_adaptive_offset_enabled_flag)、PCM模式(pcm_enabled_flag)及相關參數。

3. 參考圖像相關信息

  • 短期參考圖像:短期參考圖像集合的數量及配置(num_short_term_ref_pic_sets)。
  • 長期參考圖像
    • 長期參考圖像數目(num_long_term_ref_pics_sps)及其POC值(lt_ref_pic_poc_lsb_sps)。
    • 長期參考圖像是否可作為當前圖像參考的標志(used_by_curr_pic_lt_sps_flag)。

4. profile、tier和level相關參數

  • 檔次(Profile):如Main、Main 10、Main Still Picture。
  • 層(Tier):主層(Main Tier)或高層(High Tier)。
  • 級別(Level):限制分辨率、碼率等參數的等級(如Level 5.1支持4K分辨率)。

5. 時域分級信息

  • 時域子層:最大子層數(sps_max_sub_layers_minus1,06,對應17層)。
  • POC控制:通過log2_max_pic_order_cnt_lsb_minus4計算POC進位參數(MaxPicOrderCntLsb)。
  • 子層順序:子層順序標識開關(sps_sub_layer_ordering_info_present_flag)及緩存參數(如sps_max_dec_pic_buffering_minus1)。

6. 可視化可用信息(VUI)

  • 視頻寬高比、像素縱橫比、幀率信息。
  • 安全區域、音頻參數、立體圖像格式等輔助解碼的元數據。

7. 其他信息

  • 引用標識:引用的VPS編號(sps_video_parameter_set_id)。
  • SPS標識:自身標識符(sps_seq_parameter_set_id,0~15)。
  • 擴展信息:多層編碼擴展(sps_multilayer_extension_flag)、3D視頻擴展(sps_3d_extension_flag)等未來預留字段。

下表是SPS的語法結構:

在這里插入圖片描述

下表是SPS擴展部分語法結構:
在這里插入圖片描述

下表是SPS在SCC擴展部分語法結構:

在這里插入圖片描述

1. 基礎引用與標識參數
語法元素描述
sps_video_parameter_set_id指定當前激活的 VPS 的 ID 號。
sps_max_sub_layers_minus1參考當前 SPS 的 CVS 的時域子層最大數目(取值 0~6,對應 1~7 個子層)。
sps_temporal_id_nesting_flag- 當 sps_max_sub_layers_minus1 > 0:控制幀間預測是否受時域子層限制。
- 當 sps_max_sub_layers_minus1 = 0:強制為 1。
sps_seq_parameter_set_idSPS 自身標識號(0~15)。
2. 圖像格式參數
語法元素描述
chroma_format_idc色度采樣格式(0=mono,1=4:2:0,2=4:2:2,3=4:4:4)。
separate_colour_plane_flag- 1:對 4:4:4 格式三通道單獨編碼
- 0:不單獨編碼(默認)
pic_width_in_luma_samples解碼圖像亮度寬度(像素)。
pic_height_in_luma_samples解碼圖像亮度高度(像素)。
conformance_window_flag- 1:啟用圖像裁剪
- 0:不裁剪
conf_win_left/right/top/bottom_offset裁剪偏移量(僅當 conformance_window_flag=1 時有效)。
bit_depth_luma_minus8亮度像素比特深度(實際值 = 8 + 該值)。
bit_depth_chroma_minus8色度像素比特深度(實際值 = 8 + 該值)。
3. POC 與時域控制參數
語法元素描述
log2_max_pic_order_cnt_lsb_minus4計算 MaxPicOrderCntLsb = 2^(該值+4),用于 POC 進位控制。
sps_sub_layer_ordering_info_present_flag- 1:參數作用于 sps_max_sub_layers_minus1+1 子層
- 0:參數作用于所有子層
sps_max_dec_pic_buffering_minus1[i]HighestTid=i 時,解碼圖像緩存(DPB)的最大需求。
sps_max_num_reorder_pics[i]解碼順序在后、顯示順序在前的最大圖像數(范圍:[0, sps_max_dec_pic_buffering_minus1[i]])。
sps_max_latency_increase_plus1[i]計算延遲圖像數:SpsMaxLatencyPictures[i] = 前值 + 該值 - 1(非零時有效)。
4. 編碼塊與變換塊參數
語法元素描述
log2_min_luma_coding_block_size_minus3亮度編碼塊(CU)最小尺寸(單位:2^(該值+3) 像素,如 0 對應 8x8)。
log2_diff_max_min_luma_coding_block_size亮度 CU 最大/最小尺寸差值(推導最大尺寸:最小尺寸 × 2^該值)。
log2_min_luma_transform_block_size_minus2亮度變換塊(TU)最小尺寸(單位:2^(該值+2) 像素,如 0 對應 4x4)。
log2_diff_max_min_luma_transform_block_size亮度 TU 最大/最小尺寸差值(推導最大尺寸:最小尺寸 × 2^該值)。
max_transform_hierarchy_depth_inter幀間預測時 TU 最大劃分深度。
max_transform_hierarchy_depth_intra幀內預測時 TU 最大劃分深度。
5. 編碼工具與模式參數
語法元素描述
scaling_list_enabled_flag- 1:使用量化矩陣
- 0:不使用
sps_scaling_list_data_present_flag- 1:存在量化矩陣數據
- 0:不存在
amp_enabled_flag- 1:啟用非對稱劃分模式(AMP)
- 0:禁用
sample_adaptive_offset_enabled_flag- 1:去塊濾波后啟用 SAO
- 0:禁用
pcm_enabled_flag- 1:啟用 PCM 無損編碼模式
- 0:禁用
6. PCM 模式參數
語法元素描述
pcm_sample_bit_depth_luma_minus1PCM 模式下亮度樣點比特深度(實際值 = 1 + 該值,如 0 對應 1bit)。
pcm_sample_bit_depth_chroma_minus1PCM 模式下色度樣點比特深度(實際值 = 1 + 該值)。
log2_min_pcm_luma_coding_block_size_minus3PCM 編碼塊最小尺寸(單位同 CU 尺寸參數)。
log2_diff_max_min_pcm_luma_coding_block_sizePCM 編碼塊最大/最小尺寸差值(推導方式同 CU 參數)。
pcm_loop_filter_disabled_flag- 1:PCM 模式禁用環路濾波
- 0:啟用
7. 參考圖像參數
語法元素描述
num_short_term_ref_pic_sets短期參考圖像集合數目(0~64)。
long_term_ref_pics_present_flag- 1:使用長期參考圖像
- 0:不使用
num_long_term_ref_pics_sps長期參考圖像數目(0~32)。
lt_ref_pic_poc_lsb_sps[i]i 個長期參考圖像的 POC 低位值(模 MaxPicOrderCntLsb)。
used_by_curr_pic_lt_sps_flag[i]- 1:第 i 個長期參考圖像可用于當前圖像
- 0:不可用
8. 擴展與預留參數
語法元素描述
sps_temporal_mvp_enabled_flag- 1:非 IDR 圖像允許時域 MV 預測
- 0:禁止
strong_intra_smoothing_enabled_flag- 1:啟用幀內濾波雙向線性插值
- 0:禁用
vui_parameters_present_flag- 1:包含視頻可用信息(VUI)
- 0:不包含
sps_extension_present_flag- 1:存在擴展數據
- 0:無擴展
sps_range/multilayer/3d/scc_extension_flag- 1:啟用對應擴展語法結構(當前版本多忽略)。
sps_extension_4bits預留字段(值恒為 0)。
sps_extension_data_flag擴展數據標志(解碼器忽略)。

PPS參數集

參考博客:https://blog.csdn.net/Dillon2015/article/details/104204039/

一幅圖像可以劃分為一個或多個片(SS, Slice Segment),同一幅圖像中的所有SS共用同一個圖像參數集(Picture Parameter Set, PPS)。PPS中包含與SPS相同的部分參數,并會覆蓋SPS中的對應值,即SS解碼時優先使用PPS中的參數。解碼初始時所有PPS均處于非激活狀態,任意時刻最多僅有一個PPS激活,且該PPS的作用域持續至當前圖像解碼結束。

PPS的語法元素可分為以下六類:

1. 編碼工具可用性標志

  • 符號位隱藏(Sign Data Hiding):是否允許通過修改系數符號隱藏信息(sign_data_hiding_enabled_flag)。
  • 幀內預測受限(Constrained Intra Prediction):是否禁止跨幀間預測塊的幀內預測(constrained_intra_pred_flag)。
  • 去方塊濾波(Deblocking Filter):是否啟用去方塊濾波(pps_deblocking_filter_disabled_flag的反向控制)。
  • 加權預測(Weighted Prediction):P/B幀是否啟用加權預測(weighted_pred_flag/weighted_bipred_flag)。
  • 環路濾波跨越邊界:是否允許濾波操作跨越片(Slice)或瓷磚(Tile)邊界(pps_loop_filter_across_slices_enabled_flag/loop_filter_across_tiles_enabled_flag)。
  • 變換跳過模式(Transform Skip/Bypass):是否允許跳過變換和量化(transform_skip_enabled_flag/transquant_bypass_enabled_flag)。

2. 量化過程參數

  • 初始QP值:亮度分量的初始量化參數(init_qp_minus26,實際QP = 26 + 該值)。
  • 色度QP偏移:色度分量(Cb/Cr)相對于亮度的QP偏移量(pps_cb_qp_offset/pps_cr_qp_offset,范圍:-12~12)。
  • CU級QP調整:是否允許對CU的QP進行動態調整(cu_qp_delta_enabled_flag),涉及參數diff_cu_qp_delta_depth(調整范圍深度)。

3. Tile劃分相關參數

  • Tile模式開關:是否啟用Tile劃分(tiles_enabled_flag)。
  • Tile布局參數
    • 總列數/行數:num_tile_columns_minus1(列數 = 該值 + 1)、num_tile_rows_minus1(行數 = 該值 + 1)。
    • 均勻分布標志:uniform_spacing_flag(1=等寬/等高,0=自定義)。
    • 自定義尺寸:column_width_minus1[i]/row_height_minus1[i](非均勻分布時的列寬/行高)。

4. 去方塊濾波控制

  • 濾波開關:全局禁用去方塊濾波標志(pps_deblocking_filter_disabled_flag,1=禁用,0=啟用)。
  • 默認補償參數
    • pps_beta_offset_div2:亮度塊邊界補償值(beta)的偏移量(除以2,范圍:-6~6)。
    • pps_tc_offset_div2:色度塊邊界補償值(tC)的偏移量(除以2,范圍:-6~6)。
  • 片級濾波覆蓋:是否允許片頭參數覆蓋PPS的濾波設置(deblocking_filter_override_enabled_flag)。

5. 片頭控制信息

  • 依賴片標志:當前片是否為依賴片(dependent_slice_segments_enabled_flag)。
  • 額外片頭比特:片頭中包含的額外控制比特數(num_extra_slice_header_bits,0~2位)。
  • 解碼輸出順序:是否包含圖像輸出標志(output_flag_present_flag,影響解碼圖像的緩存和顯示順序)。
  • CABAC初始化:是否指定上下文變量初始化方法(cabac_init_present_flag)。

6. 其他公用信息

  • 標識參數
    • pps_pic_parameter_set_id:PPS自身ID(0~63)。
    • pps_seq_parameter_set_id:引用的SPS ID(對應sps_seq_parameter_set_id)。
  • 參考圖像數
    • P幀/B幀默認參考索引數(num_ref_idx_l0_default_active_minus1/num_ref_idx_l1_default_active_minus1)。
  • 并行處理參數:合并模式候選列表的并行生成等級(log2_parallel_merge_level_minus2,影響運動矢量預測效率)。
  • 變換矩陣覆蓋:是否存在覆蓋SPS的變換矩陣數據(pps_scaling_list_data_present_flag)。

PPS與SPS的關系

  • 層級覆蓋:PPS參數優先級高于SPS,例如QP偏移、Tile劃分等圖像級參數優先使用PPS設置。
  • 作用域:SPS作用于整個CVS(編碼視頻序列),而PPS僅作用于單幅圖像,支持動態調整編碼參數(如不同場景使用不同濾波或量化策略)。

通過PPS的靈活配置,H.265可針對單幅圖像優化編碼效率,平衡畫質與碼率,適應復雜場景的動態需求。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

PPS語法元素詳解

在這里插入圖片描述

1. 標識與引用參數
語法元素描述
pps_pic_parameter_set_idPPS標識符(0~63),唯一標識一個PPS。
pps_seq_parameter_set_id引用的SPS的ID(0~15),指向關聯的序列參數集。
2. 片(Slice)控制參數
語法元素描述
dependent_slice_segments_enabled_flag判斷當前片段是否為依賴片(存在依賴關系的slice segment)。
output_flag_present_flag片頭部是否包含pic_output_flag,影響圖像輸出順序和緩存管理。
num_extra_slice_header_bits片頭部額外比特數(0~2),預留未來擴展。
sign_data_hiding_enabled_flag是否允許符號位隱藏技術(用于數據隱藏或糾錯)。
cabac_init_present_flag是否存在CABAC初始化標志,控制熵編碼上下文初始化方式。
3. 參考圖像與預測參數
語法元素描述
num_ref_idx_l0_default_active_minus1P/B片默認參考索引數(L0方向,0~14)。
num_ref_idx_l1_default_active_minus1P/B片默認參考索引數(L1方向,0~14)。
weighted_pred_flagP片是否啟用加權預測(1=啟用,0=禁用)。
weighted_bipred_flagB片是否啟用雙向加權預測(1=啟用,0=禁用)。
4. 量化參數(QP)控制
語法元素描述
init_qp_minus26亮度分量初始QP值(實際QP=26+該值,范圍:-26~25)。
cu_qp_delta_enabled_flag是否允許CU級QP調整(1=允許,0=禁止)。
diff_cu_qp_delta_depthQP調整范圍深度,影響CTB與最小編碼塊的尺寸差。
pps_cb_qp_offset/pps_cr_qp_offset色度分量QP相對于亮度的偏移量(-12~12)。
pps_slice_chroma_qp_offsets_present_flag片頭部是否包含色度QP偏移參數。
5. 變換與濾波參數
語法元素描述
transform_skip_enabled_flag是否允許變換跳過模式(1=允許,0=禁止)。
transquant_bypass_enabled_flag是否允許跳過變換和濾波(1=允許,0=禁止)。
deblocking_filter_control_present_flag是否存在去方塊濾波控制信息。
pps_deblocking_filter_disabled_flag全局禁用去方塊濾波(1=禁用,0=啟用)。
pps_beta_offset_div2/pps_tc_offset_div2去方塊濾波補償參數(除以2,-6~6)。
6. Tile劃分參數
語法元素描述
tiles_enabled_flag是否啟用Tile劃分(1=啟用,0=單Tile)。
num_tile_columns_minus1Tile列數(列數=該值+1,范圍:0~PicWidthInCtbsY-1)。
num_tile_rows_minus1Tile行數(行數=該值+1,范圍:0~PicHeightInCtbsY-1)。
uniform_spacing_flagTile邊界是否均勻分布(1=均勻,0=自定義)。
column_width_minus1[i]第i列Tile寬度(CTB為單位,非均勻分布時有效)。
loop_filter_across_tiles_enabled_flag是否允許跨Tile邊界濾波(1=允許,0=禁止)。
7. 并行與擴展參數
語法元素描述
log2_parallel_merge_level_minus2并行合并等級,影響運動矢量預測效率(取值:0~CtbLog2SizeY-2)。
pps_scaling_list_data_present_flag是否存在縮放矩陣(1=存在,覆蓋SPS中的矩陣)。
pps_extension_present_flag是否存在擴展語法元素(如多層編碼、3D擴展等)。
8. 熵編碼與同步參數
語法元素描述
entropy_coding_sync_enabled_flag是否啟用熵編碼同步機制(1=啟用,提高抗誤碼能力)。
lists_modification_present_flag片頭部是否包含參考圖像列表修改信息。

關鍵邏輯關系

  1. 參數覆蓋規則:PPS參數優先級高于SPS,例如QP偏移、Tile劃分等圖像級配置會覆蓋序列級設置。
  2. 作用域限制:PPS僅作用于單幅圖像,解碼完成后其激活狀態終止,下一幅圖像可引用不同PPS。
  3. 碼流一致性:同一CVS內的PPS需保持tiles_enabled_flag等全局參數一致,避免解碼沖突。

通過PPS的精細化控制,H.265能夠針對不同圖像特性動態調整編碼策略,在畫質、碼率和復雜度之間實現優化平衡。

檔次、層、級別

參考博客:https://blog.csdn.net/Dillon2015/article/details/104311186?fromshare=blogdetail&sharetype=blogdetail&sharerId=104311186&sharerefer=PC&sharesource=Antonio915&sharefrom=from_link

5. 檔次、層、級別

檔次(Profile)

檔次規定了編碼器可使用的編碼工具集,決定了碼流的基本特性。H.265定義了以下三種檔次:

檔次名稱位深支持采樣格式典型應用場景
Main8bit4:2:0網絡流媒體、常規視頻存儲
Main 108bit/10bit4:2:0高清廣播、專業視頻制作(如10bit HDR)
Main Still Picture--單幀圖像編碼(如相機快照、視頻截圖)

特性說明

  • Main 10兼容性:支持Main 10的解碼器必須兼容Main檔次碼流。
  • 靜止圖像:Main Still Picture基于Main檔次,僅編碼單幀,優化靜態場景壓縮效率。
層(Tier)

層是H.265新增的概念,用于區分碼流的性能需求,分為兩類:

層名稱應用場景典型支持級別
主層(Main Tier)大多數常規應用(如1080p視頻)Level 1 ~ Level 3.1
高層(High Tier)高負載場景(如4K/8K、高幀率視頻)Level 4 ~ Level 6.2

關鍵區別

  • 高層支持更高的分辨率、碼率和采樣率,對解碼器性能要求更高。
級別(Level)

級別通過限制關鍵參數(如分辨率、碼率、緩存大小)確保解碼器兼容性,H.265定義了13個級別(1 ~ 6.2)。以下為部分級別關鍵參數對比:

級別最大亮度圖像尺寸(像素)主層最大碼率(Mbps)高層最大碼率(Mbps)最小壓縮比
136,8640.128-2
2122,8801.5-2
3.1983,04010-2
42,228,22412304
5.18,912,896401608
6.235,651,58424048008

核心規則

  • 向下兼容:支持某一級別的解碼器可解碼低于該級別或同級別、同層的碼流。
  • 參數限制:級別越高,允許的分辨率、碼率和壓縮比上限越高(如Level 6.2支持8K分辨率和4800 Mbps碼率)。
兼容性與應用建議
  1. 解碼器能力
    • 支持Main Tier的設備可處理Level 1~3.1的碼流(如手機、普通PC)。
    • 支持High Tier的設備需額外處理Level 4+的高帶寬需求(如專業顯卡、8K播放器)。
  2. 編碼策略
    • 通用場景選擇Main Profile + 主層 + Level 3.1(適配多數設備)。
    • 高清/超高清場景使用Main 10 Profile + 高層 + Level 5.1/6.2(需確認接收端支持)。

通過檔次、層、級別的組合,H.265實現了從低功耗設備到高端硬件的全場景覆蓋,平衡了編碼效率與設備兼容性。

三個檔次的關系如下圖:

在這里插入圖片描述

層(Tier)和級別(Level)

H.265/HEVC定義了2個層和13個級別。2個層分別是Main Tier和High Tier。4和4以上的8個Level?持High Tier。下表給出了不同檔次和級別的語法元素:

LevelMax Luma Picture Size (samples)Max Luma Sample Rate (samples/s)Main Tier Max Bit Rate (1000 bits/s)High Tier Max Bit Rate (1000 bits/s)Min Comp. Ratio
136864552960128-2
212288036864001500-2
2.124576073728003000-2
3552960165888006000-2
3.19830403317760010000-2
422282246684672012000300004
4.1222822413369344020000500004
58912896267386880250001000006
5.18912896534773760400001600008
5.289128961069547520600002400008
6356515841069547520600002400008
6.13565158421390950401200004800008
6.23565158442781900802400008000008

語法元素

下?是H.265/HEVC中定義的檔次、層和級別的語法元素。
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

相關語法元素說明

  • general_profile_space:取值固定為0,其他值預留作未來擴展用途。
  • general_tier_flag:用于規定當前檔次中所使用層的具體內容。
  • general_profile_idc:取值為0時,表示當前CVS(編碼視頻序列)編碼過程中所使用檔次的ID號 ,其他值留待未來擴展。
  • general_profile_compatibility_flag[ j ] :當general_profile_space等于0時,該語法元素取值為1,意味著當前CVS編碼過程中使用的檔次ID號為j。
  • general_progressive_source_flag和general_interlaced_source_flag:用于指定CVS的掃描方式,可表示逐行掃描、隔行掃描或者未明確指明掃描方式。
  • general_non_packed_constraint_flag:用于指明CVS中是否存在frame packing arrangement SEI messages(幀封裝排列補充增強信息消息 )。
  • general_frme_only_constraint_flag:用于指定field_seq_flag是否為0 。
  • general_level_idc:用于指明CVS中所使用level(級別)的ID號 。
  • sub_layer_profile_present_flag[ i ]:用于表明在TemporalId等于i的子層中,其profile_tier_level( )是否存在profile(檔次)信息 。
  • sub_layer_level_present_flag[ i ]:用于表明在TemporalId等于i的子層中,其profile_tier_level( )是否存在level(級別)信息 。

H265數據示例

利?UItraEdit?具打開?個H265?件進?數據分析,如下圖所示:

在這里插入圖片描述

如上圖所示,我們可以清晰的看到在H265碼流中,是以“0x00 0x00 x00 0x01”為開始碼的,找到開始碼后,后?的兩個字節表示NALU Header,上圖所示分別標注了VPS、SPS、PPS、IDR類型。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82268.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python訓練營打卡 Day26

知識點回顧&#xff1a; 函數的定義變量作用域&#xff1a;局部變量和全局變量函數的參數類型&#xff1a;位置參數、默認參數、不定參數傳遞參數的手段&#xff1a;關鍵詞參數傳遞參數的順序&#xff1a;同時出現三種參數類型時 ——————————————————————…

PH熱榜 | 2025-05-29

1. Tapflow 2.0 標語&#xff1a;將你的文檔轉化為可銷售的指導手冊、操作手冊和工作流程。 介紹&#xff1a;Tapflow 2.0將各類知識&#xff08;包括人工智能、設計、開發、營銷等&#xff09;轉化為有條理且可銷售的產品。現在你可以導入文件&#xff0c;讓人工智能快速為你…

GitHub 趨勢日報 (2025年05月30日)

&#x1f4ca; 由 TrendForge 系統生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日獲星趨勢圖 今日獲星趨勢圖 833 agenticSeek 789 prompt-eng-interactive-tutorial 466 ai-agents-for-beginn…

Cesium 8 ,在 Cesium 上實現雷達動畫和車輛動畫效果,并控制顯示和隱藏

目錄 ?前言 一、功能背景 1.1 核心功能概覽 1.2 技術棧與工具 二、車輛動畫 2.1 模型坐標 2.2 組合渲染 2.3 顯隱狀態 2.4 模型文件 三、雷達動畫 3.1 創建元素 3.2 動畫解析 3.3 坐標聯動 3.4 交互事件 四、完整代碼 4.1 屬性參數 4.2 邏輯代碼 加載車輛動畫…

相機--相機標定

教程 相機標定分類 相機標定分為內參標定和外參標定。 內參標定 目的 作用 原理 外參標定

JS手寫代碼篇---手寫類型判斷函數

9、手寫類型判斷函數 手寫完成這個函數&#xff1a;輸入一個對象(value)&#xff0c;返回它的類型 js中的數據類型&#xff1a; 值類型&#xff1a;String、Number、Boolean、Null、Undefied、Symbol引用類型&#xff1a;Object、Array、Function、RegExp、Date 使用typeOf…

量子物理:初步認識量子物理

核心特點——微觀世界與宏觀世界的差異 量子物理(又稱量子力學)是物理學中描述微觀世界(原子、電子、光子等尺度)基本規律的理論框架。它與我們熟悉的經典物理(牛頓力學、電磁學等)有根本性的不同,因為微觀粒子的行為展現出許多奇特且反直覺的現象。 簡單來說,量子物…

springboot配置cors攔截器與cors解釋

文章目錄 cors?代碼 cors? CORS&#xff08;跨域資源共享&#xff09;的核心機制是 由后端服務器&#xff08;bbb.com&#xff09;決定是否允許前端&#xff08;aaa.com&#xff09;的跨域請求 當瀏覽器訪問 aaa.com 的頁面&#xff0c;并向 bbb.com/list 發起請求時&#…

國芯思辰| 同步降壓轉換器CN2020應用于智能電視,替換LMR33620

在智能電視不斷向高畫質、多功能、智能化發展的當下&#xff0c;其內部電源管理系統的性能至關重要。同步降壓轉換器可以為智能電視提供穩定、高效的運行。 國芯思辰CN2020是一款脈寬調制式同步降壓轉換器。內部集成兩個功率MOS管&#xff0c;在4.5~18V寬輸入電壓范圍內可以持…

API 版本控制:使用 ABP vNext 實現版本化 API 系統

&#x1f680;API 版本控制&#xff1a;使用 ABP vNext 實現版本化 API 系統 &#x1f4da; 目錄 &#x1f680;API 版本控制&#xff1a;使用 ABP vNext 實現版本化 API 系統一、背景切入 &#x1f9ed;二、核心配置規則 &#x1f4cb;2.1 前置準備&#xff1a;NuGet 包與 usi…

Android高級開發第四篇 - JNI性能優化技巧和高級調試方法

文章目錄 Android高級開發第四篇 - JNI性能優化技巧和高級調試方法引言為什么JNI性能優化如此重要&#xff1f;第一部分&#xff1a;JNI性能基礎知識JNI調用的性能開銷何時使用JNI才有意義&#xff1f; 第二部分&#xff1a;核心性能優化技巧1. 減少JNI調用頻率2. 高效的數組操…

小白的進階之路系列之十----人工智能從初步到精通pytorch綜合運用的講解第三部分

本文將介紹Autograd基礎。 PyTorch的Autograd特性是PyTorch靈活和快速構建機器學習項目的一部分。它允許在一個復雜的計算中快速而簡單地計算多個偏導數(也稱為梯度)。這個操作是基于反向傳播的神經網絡學習的核心。 autograd的強大之處在于它在運行時動態地跟蹤你的計算,…

43. 遠程分布式測試實現

43. 遠程分布式測試實現詳解 一、遠程測試環境配置 1.1 遠程WebDriver服務定義 # Chrome瀏覽器遠程服務地址 chrome_url rhttp://localhost:5143# Edge瀏覽器遠程服務地址 edge_url rhttp://localhost:9438關鍵概念&#xff1a;每個URL對應一個獨立的WebDriver服務典型配置…

Python爬蟲(40)基于Selenium與ScrapyRT構建高并發動態網頁爬蟲架構:原理、實現與性能優化

目錄 一、引言二、技術背景1. 動態頁面處理痛點2. 架構設計目標 三、核心組件詳解1. Selenium Grid集群部署2. ScrapyRT服務化改造3. 智能等待策略 四、系統架構圖五、性能優化實踐1. 資源隔離策略2. 并發控制算法3. 監控體系 六、總結與展望&#x1f308;Python爬蟲相關文章&a…

【存儲基礎】SAN存儲基礎知識

文章目錄 1. 什么是SAN存儲&#xff1f;2. SAN存儲組網架構3. SAN存儲的主要協議SCSI光纖通道&#xff08;FC&#xff09;協議iSCSIFCoENVMe-oFIB 4. SAN存儲的關鍵技術Thin Provision&#xff1a;LUN空間按需分配Tier&#xff1a;分級存儲Cache&#xff1a;緩存機制QoS&#x…

TDengine 運維——巡檢工具(定期檢查)

背景 TDengine 在運行一段時間后需要針對運行環境和 TDengine 本身的運行狀態進行定期巡檢&#xff0c;本文檔旨在說明如何使用巡檢工具對 TDengine 的運行環境進行自動化檢查。 安裝工具使用方法 工具支持通過 help 參數查看支持的語法 Usage: taosinspect [OPTIONS]Check…

DHCP應用

一、DHCP介紹 在LAN(局域網)中我們常會遇到以下的情況&#xff1a; 1.不知道如何配置IP地址及相關信息的員工&#xff0c;無法上網&#xff1b;2.IP地址配置沖突&#xff0c;無法上網&#xff1b;3.來訪用戶因不熟悉公司網絡情況無法上網&#xff1b; 以上這些情況都是日常最…

LabVIEW多按鍵自動化檢測系統

LabVIEW開發一套高精度按鍵力與行程自動化檢測系統&#xff0c;針對傳統檢測設備自動化程度低、定位誤差大等痛點&#xff0c;實現多按鍵產品的全流程自動化測試。系統集成 6 軸工業機器人、高精度傳感器及實時數據處理模塊&#xff0c;滿足汽車電子、消費電子等領域對按鍵手感…

嵌入式硬件篇---蜂鳴器

蜂鳴器是一種常用的電子發聲元件&#xff0c;主要分為有源蜂鳴器和無源蜂鳴器兩類。它們在結構、工作原理、驅動方式、應用場景等方面存在顯著差異。以下是詳細介紹&#xff1a; 一、核心定義與結構差異 1. 有源蜂鳴器 定義&#xff1a; “有源” 指內部自帶振蕩電路&#x…

600+純CSS加載動畫一鍵獲取指南

CSS-Loaders.com 完整使用指南&#xff1a;600純CSS加載動畫庫 &#x1f3af; 什么是 CSS-Loaders.com&#xff1f; CSS-Loaders.com 是一個專門提供純CSS加載動畫的資源網站&#xff0c;擁有超過600個精美的單元素加載器。這個網站的最大特色是所有動畫都只需要一個HTML元素…