WebRTC(十一):RTCP和SRTCP

RTCP

基本概念

RTCP 是 RTP 的控制協議,用于監控媒體傳輸質量和參與者狀態,并與 RTP 一起工作。RTP 用于傳輸媒體數據(如音視頻),RTCP 則用于傳輸控制信息。

RTCP 通常和 RTP 同時使用,并通過 不同端口(通常 RTP 使用偶數端口,RTCP 使用其下一個奇數端口)

主要用于:

  • 傳輸質量反饋:丟包率、時延、抖動等統計信息。
  • 媒體源身份識別:包括 CNAME(Canonical Name)標識每個參與者。
  • 帶寬控制:用于避免 RTCP 消息對帶寬占用過大(典型限制為 5%)。
  • 多方會話控制:尤其適用于多點會議。

基本結構

每個 RTCP 包由一個公共頭部 + 特定類型的負載數據組成。基本的 RTCP 報文格式如下:

0               1               2               3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  RC   |   PT=SR=200     |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • V:版本,通常為2
  • P:填充位(padding)
  • RC:Reception Report Count,表示包含多少個 reception report block(在 SR/RR 包中)
  • PT:Payload Type,表明 RTCP 包類型
  • length:包長度(以 32 位字為單位,不包括頭部)

RTCP包類型(Payload Type)

類型名稱PT 值用途
SRSender Report200發送端統計信息
RRReceiver Report201接收端反饋信息
SDESSource Description202源描述(包括 CNAME)
BYEGoodbye203終止會話
APPApplication-defined204自定義擴展

Sender Report (SR) — PT=200

結構

一個完整的 RTCP SR 包結構如下:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  RC   |   PT=SR=200     |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SSRC of sender                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              NTP timestamp, most significant word            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             NTP timestamp, least significant word            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RTP timestamp                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     sender's packet count                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      sender's octet count                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 1                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 2                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解釋
字段說明
V (2 bits)RTP 版本,固定為 2
P (1 bit)填充位,最后是否有填充字節
RC (5 bits)下面附帶的 Reception Report 數量(最多 31 個)
PT = 200Payload Type,200 表示 SR
Length整個 RTCP 包長度(以 32 位字為單位,減1)
SSRC of sender當前發送者的同步源標識
NTP timestampNTP 格式的時間戳(64 位),用于同步
RTP timestamp與 NTP 時間同步的 RTP 時間戳(32 位)
Sender’s packet count發送的 RTP 包總數
Sender’s octet count發送的 RTP 字節總數
Report blocks針對接收端的報告,最多 31 個,每個包含丟包率、抖動、延遲等統計信息
Report Block 格式(每個 24 字節)

包含如下字段:

  • SSRC of source
  • Fraction lost
  • Cumulative number of packets lost
  • Extended highest sequence number received
  • Interarrival jitter
  • Last SR timestamp (LSR)
  • Delay since last SR (DLSR)

Receiver Report (RR) — PT=201

結構

RR 包結構和 SR 類似,但沒有發送者統計字段,僅包含一組或多組接收統計報告:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  RC   |   PT=RR=201     |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     SSRC of packet sender                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 1                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 2                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解釋
字段說明
V (2 bits)RTP 版本號,固定為 2
P (1 bit)填充標志
RC (5 bits)Report Count,表示下面有幾個 report block(最多 31 個)
PT = 201Payload Type,201 表示 RR
LengthRTCP 包長度(32bit 字為單位,減去1)
SSRC of sender當前報告者(接收端)的 SSRC
Report blocks一個或多個 24 字節的 report block,描述對應源的接收質量
Report Block 格式(每個 24 字節)

每個 Report Block 針對一個 RTP 源(發送者)統計信息:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 SSRC_1 (源 SSRC)                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| fraction lost |       cumulative number of packets lost      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           extended highest sequence number received          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      interarrival jitter                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         last SR (LSR)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   delay since last SR (DLSR)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段說明
SSRC_n被監視的發送者(源) SSRC
fraction lost自上次報告后丟失的 RTP 包比例(0-255)
cumulative number of packets lost接收到當前為止丟失的總包數
extended highest seq no received接收的最大序列號(擴展 32 位)
interarrival jitter包到達間隔抖動
last SR (LSR)上次收到的 SR 報告的 NTP 時間戳中間 32 位(即 SR 的發送時間)
delay since last SR (DLSR)自從收到上一個 SR 以來的時間(單位為 1/65536 秒)

SDES

結構
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  SC   |  PT=SDES=202    |            length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SSRC/CSRC_1                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SDES items (可變長)                  |
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SSRC/CSRC_n                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SDES items                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解釋
字段說明
V (2 bits)RTP 版本號,固定為 2
P (1 bit)填充位
SC (5 bits)Source Count,本包中包含多少個源(SSRC/CSRC)
PT = 202Payload Type,202 表示 SDES
lengthRTCP 包長度(單位是 32bit 字,減 1)
SSRC/CSRC與該描述項相關的源的 ID
SDES items描述此源的項
SDES Item

每個 SDES item 的格式如下:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   item type   |  length       | user data (variable length)   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

常見 item types(1 字節):

Type名稱說明
1CNAME參與者唯一標識(必選)
2NAME用戶名/顯示名
3EMAIL電子郵件地址
4PHONE電話號碼
5LOC地理位置
6TOOL使用的工具名(如 FFmpeg)
7NOTE備注
8PRIV私有擴展項
0END結束標記,標志該 SDES 項結束

示例:

| 1 (CNAME) | 9 | "user@host" |
| 2 (NAME)  | 4 | "John"      |
| 0 (END)   |   |             |

BYE

結構
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  SC   |   PT=BYE=203    |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC/CSRC                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                              ...                              :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     length    |       optional reason for leaving...          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解釋
字段說明
V (2 bits)RTP 協議版本,固定為 2
P (1 bit)填充標志
SC (5 bits)Source Count,本包中包含多少個 SSRC/CSRC
PT = 203Payload Type,203 表示 BYE
length包長度,以 32bit 字為單位(不含 header 自身)
SSRC/CSRC要離開的同步源(可以多個)
可選 Reason 字段一個字符串,表示離開原因(可選) 格式為:1字節長度 + UTF-8 字符串
示例

一個 BYE 包可能如下:

  • SSRC: 0x87654321
  • Reason: "stream ended"

在 Wireshark 中可看到:

RTCP: Goodbye (BYE)SSRC: 0x87654321Reason: stream ended

APP

結構
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P| Subtype |  PT=APP=204   |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC/CSRC                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          name (ASCII)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   application-dependent data                  |
|                               ...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解釋
字段含義
V (2 bits)RTP 版本號,固定為 2
P (1 bit)Padding 標志位
Subtype (5 bits)應用自定義子類型(0~31)
PT (8 bits)Payload Type,204 表示 APP 包
Length (16 bits)包長度(以 32bit 字為單位,減 1)
SSRC應用定義者的 SSRC
Name (32 bits)ASCII 字母組成的 4 字節標識符(如 "TEST"
Application-dependent data由應用定義的任意內容(可變長)

SRTCP(Secure RTCP)

基本概念

SRTCP 是 RTCP 的 安全擴展協議,用于 加密、消息認證(MAC)以及重放保護,與 SRTP(Secure RTP) 相對,主要用于保障 RTCP 報文的保密性和完整性。

功能描述
加密(可選)加密 RTCP payload(如 Sender Report)
完整性驗證使用 HMAC(通常為 HMAC-SHA1)
防重放攻擊使用 SRTCP Index(31 bit 計數器)

基本結構

原始的RTCP報文:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|    RC   |   PT=SR=200   |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SSRC of sender                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...  (RTCP payload)

SRTCP 的格式是在 RTCP 基礎上加入加密、認證和重放保護:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|E|                     SRTCP index                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Authentication tag (可選,MAC)                   |
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段說明:

字段長度描述
E(Encryption Flag)1 bit表示 RTCP payload 是否被加密(1 為加密)
SRTCP index31 bits單調遞增的計數器(防重放攻擊、同步)
Authentication tag可選,通常 10/20 字節用于認證的 HMAC,防止篡改

示例:SRTCP 報文結構圖(含加密)

+-------------------------------+
|     RTCP 原始報文(明文/密文) |
+-------------------------------+
| E |        SRTCP index        |
+-------------------------------+
|      Authentication tag      |
+-------------------------------+
  • 如果 E=0:RTCP payload 是明文;

  • 如果 E=1:RTCP payload 是密文;

  • Authentication tag 總是對前面部分進行 HMAC 計算,用于完整性校驗與認證。

標準文檔

https://datatracker.ietf.org/doc/html/rfc3711

WebRTC中的RTCP和SRTCP

WebRTC中的RTCP

  • 默認開啟 RTCP 復用(RTCP-MUX,RFC 5761):音視頻和控制數據共用同一個 UDP 端口
  • 使用 RTCP 擴展報文(如 RTP Feedback)實現自適應碼率與擁塞控制
  • 可以攜帶統計反饋,供算法調整使用(如 Google Congestion Control)

WebRTC中的SRTCP

  • 防止中間人查看控制信令(如 SSRC、網絡狀態)
  • 防止偽造控制指令(如虛假 NACK、PLI、BYE)
  • 防止重放攻擊干擾會話狀態

DTLS-SRTP

WebRTC 使用如下流程保護媒體:

[RTP/RTCP] -> SRTP/SRTCP 加密 -> 通過 UDP 發送↑DTLS 協議協商密鑰
  • DTLS 協議運行在媒體端口上(UDP),協商密鑰;

  • 協商結果用于派生 SRTP/SRTCP 的加密密鑰;

  • 然后媒體通過 SRTP 和 SRTCP 加密發送;

  • 不會單獨發送明文 RTP/RTCP

抓包示例

img

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

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

相關文章

將element-plus table背景改成透明色

方法一:全局修改(推薦) /* 全局透明表格樣式 */ .el-table, .el-table__header-wrapper, .el-table__body-wrapper, .el-table__row {background-color: transparent !important; }/* 可選:自定義表頭和斑馬紋行的透明度 */ .el-table__header th {background-color: rgba(…

安全運營中的漏洞管理和相關KPI

漏洞管理一直是企業網絡安全運維中的關鍵環節,但又是安全運維的痛點。不僅要投入大量的人力物力,還無法被其他運維團隊所理解。那么,向領導層和相關團隊反映出當前漏洞管理的現狀和挑戰便是一個急需解決的問題。 通過有效的數據講好故事,發現問題,或許是做好漏洞管理的突破…

機器學習框架(1)

以吳恩達的《機器學習》課程為藍本,整理課程框架,自己學習的簡單記錄。 課程講解很清楚,建議有空可以看看原課程。 01 單變量線性回歸 回歸偏向于連續屬性,分類偏向于離散屬性。 監督學習是給定標簽的學習;而無監督學…

AI Ready數據庫,OceanBase打了一個樣

大數據產業創新服務媒體 ——聚焦數據 改變商業 過去一年,企業對AI的興趣不減。從接入大模型,到部署RAG(檢索增強生成)系統、探索AI Agent,AI從“新技術”變成了“業務工具”的候選項。但一個技術能否真正落地&#x…

趣味數據結構之——鏈

記得數組嗎,一個蘿卜一個坑的想象。在數組的世界里我們就是第三視角,置身于坑外的。如果我們是二維平面上的生物,那數組就是一維的線,我們可以隨機訪問,增刪查改,也可以一眼看出數組大小。 那么對于鏈來說…

構建低代碼平臺的技術解析

低代碼平臺表單引擎與業務事件設計實踐 低代碼平臺表單引擎與業務事件設計實踐一、什么是低代碼?它能做什么?二、請假系統案例介紹2.1 主要功能2.2 業務流程 三、表單元數據、實例數據與業務事件聯動設計3.1 表單元數據(Meta)如何…

Hive SQL 快速入門指南

在大數據蓬勃發展的當下,處理海量數據成為企業面臨的關鍵挑戰。Hive SQL 作為一款強大的工具,為我們打開了高效處理大數據的大門。接下來,讓我們一起踏上 Hive SQL 的入門之旅。? 一、Hive SQL 是什么? Hive 是基于 Hadoop 的數據倉庫工具…

國內公司把數據湖做成了數據庫

在做多年的數據倉庫項目,數據湖也在做,但是做完發現,這個不是傳統數據庫里面的ODS嗎? 好多公司做數據湖,就是把數據湖做成了ODS層(貼源數據層),難道真的數據湖就是這樣等于ODS嗎&am…

Python 數據分析與可視化 Day 6 - 可視化整合報告實戰

🎯 今日目標 整合數據分析與可視化結果生成結構化報告用代碼自動生成完整的圖文分析文檔熟悉 Jupyter Notebook / Markdown 圖表 報告生成流程 🧩 一、項目背景:學生成績分析報告 數據來源:students_cleaned.csv(含姓…

服務器、樹莓派/香橙派部署HomeAssistant與小愛音箱聯動

HomeAssistant功能介紹與多平臺部署實戰:CentOS服務器、樹莓派、香橙派部署及小愛音箱聯動控制 一、HomeAssistant簡介 HomeAssistant是一款基于Python開發的開源智能家居自動化平臺,它最大的特點是高度集成和自定義。通過HomeAssistant,用…

內存泄漏系列專題分析之二十四:內存泄漏測試Camera相機進程內存指標分布report概述

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: 這一篇我們開始講: 內存泄漏系列專題分析之二十四:內存泄漏測試Camera相機進程內存指標分布report概述 目錄 一、問題背景 二、:內存泄漏測試Camera相機進程內存指標分布report概述 2.1:Camera領域相機進…

華為堆疊理論及配置

一,堆疊基本概念 1.1交換機角色 主交換機(Master):主交換機負責管理整個堆疊。**堆疊系統中只有一臺主交換機。**備交換機(Standby):備交換機是主交換機的備份交換機。堆疊系統中只有一臺備交換…

【數字經濟】數據即產品架構在數字經濟時代的應用

數據即產品架構在數字經濟時代的應用 在數字經濟中,數據已成為核心生產要素,“數據即產品”(Data-as-a-Product)架構通過系統化封裝原始數據,實現其可交易、可交付的產品化價值。以下是其架構設計與應用解析&#xff…

MySQL 中的時間序列數據分析與處理

在互聯網應用和企業業務系統中,特別是現在當下環境電商以及跨境電商火爆的情況下,時間序列數據無處不在,如電商訂單時間、用戶登錄日志、設備監控數據等。MySQL 作為主流數據庫,具備強大的時間序列數據處理能力。本文將結合電商訂…

STM32——MDK5編譯和串口下載程序+啟動模式

一、MDK5編譯 1.1 編譯中間文件 還可通過 .map文件計算程序大小 中間文件 > 下載到開發板中的文件 > .hex 二、串口下載 2.1 前提須知 2.2 串口硬件鏈接(M3、M4系列) M7無串口下載 PC端需安裝 CH340 USB 虛擬串口驅動:CH340 USB 虛…

HyperWorks仿真案例:拓撲優化與激光增材制造的完美結合挖掘輕量化結構的新潛力

許多技術創新都基于自然界中生物結構的設計。通過不斷進化,大自然在數百萬年間已學會根據各種形狀的功能對形狀進行調整,從而最大程度地提高效率。當工程師設法構建堅固而輕盈的結構時,這些自然界中的示例可以提供重要線索。在目前的研究項目…

在Windows系統部署本地智能問答系統:基于百度云API完整教程

引言 在人工智能時代,搭建私有化智能問答系統能有效保護數據隱私并提升響應效率。本教程將手把手教你在Windows環境中,通過百度云API構建專屬智能問答系統,全程無需服務器,僅需本地計算機即可運行! 一、環境準備 系統…

Vue的watch函數實現

<script setup> import { watch, ref, reactive, toRefs } from vue;const count ref(0); const obj reactive({name: 張三,age: 18 });// 我們可以使用toRefs&#xff0c;將reactive對象中的屬性轉換為ref對象&#xff0c;保持響應性&#xff01;&#xff01; const {…

Tomcat 安裝使用教程

&#x1f4cc; 什么是 Tomcat&#xff1f; Apache Tomcat 是一個開源的 Java Servlet 容器&#xff0c;也是運行 Java Web 應用最常用的服務器之一&#xff0c;支持 Servlet、JSP 等規范。 &#x1f9f0; 一、準備工作 1. 系統要求 操作系統&#xff1a;Windows / Linux / m…

【邀請】點擊邀請鏈接參加阿里云訓練營活動,完成學習送禮品+戶外折疊凳,一個小時就能完成

點擊邀請鏈接參加阿里云訓練營活動&#xff0c;完成學習送禮品戶外折疊凳&#xff0c;快的話一個小時就能完成。 7月28日23:59前完成。 OSS進階應用與成本優化訓練營 禮品如下&#xff1a; 包尖鋼筆/祈福小神仙積木/雨傘/不銹鋼餐具隨機發放 戶外折疊凳