UVC(USB Video Class,USB 視頻類)協議

UVC(USB Video Class,USB 視頻類)協議并非專門僅用于相機,但其核心應用場景集中在視頻采集設備,相機是最典型的代表。

其適用設備除了常見的 USB 相機(包括 webcam、工業相機、監控攝像頭等),還包括其他具備視頻采集或處理功能的 USB 設備,例如:

  • 視頻采集卡:部分 USB 接口的視頻采集卡支持 UVC 協議,可將外部視頻信號(如 HDMI、SDI 信號)轉換為符合 UVC 標準的視頻流傳輸給主機。

  • 帶視頻功能的設備:一些集成了攝像頭的設備,如智能手機通過 USB 連接作為視頻源時(部分機型支持)、某些掃描儀的視頻預覽功能模塊等,也可能采用 UVC 協議進行視頻數據傳輸。

USB 接口的線路

USB 接口的線路數量根據版本和接口類型有所不同,核心是通過幾根線實現數據傳輸、供電等功能。以下是具體分類:

一、基礎線路構成(以常見的 USB 2.0 及以上為例)

無論接口類型(Type-A、Type-B、Type-C 等),USB 的核心線路包括 4 根基礎線(USB 2.0 及兼容版本必備):

  1. VCC(電源正極):紅色線,提供 + 5V 電壓(部分場景下可通過 PD 協議調整電壓)。

  2. GND(接地):黑色線,作為電路回路的負極。

  3. D+(數據正線):綠色線,用于高速數據傳輸(USB 2.0 及以上的高速模式)。

  4. D-(數據負線):白色線,與 D + 配合傳輸差分信號,確保數據抗干擾能力。

這 4 根線是 USB 實現供電基礎數據傳輸(USB 1.1/2.0 速率)的核心,早期的低速、全速設備僅依賴這 4 根線即可工作。

二、高速版本的額外線路(USB 3.0 及以上)

為了支持更高的傳輸速率(如 USB 3.0 的 5Gbps、USB 3.1 的 10Gbps 等),USB 3.0 及以上版本在基礎 4 根線之外,增加了4 根高速差分信號線,總線路數量達到 8 根:

  • SSTX+ / SSTX-:發送差分對(SuperSpeed Transmit),用于主機向設備發送高速數據。

  • SSRX+ / SSRX-:接收差分對(SuperSpeed Receive),用于設備向主機返回高速數據。

這些額外的線路專門負責超高速數據傳輸,與原有的 D+/D - 線路(兼容 USB 2.0)獨立工作,實現 “高速與兼容并存”。

三、Type-C 接口的線路特殊性

Type-C 接口為了支持可逆插拔和多功能(如視頻輸出、PD 供電),線路設計更復雜,但核心仍基于上述線路擴展:

  • 保留VCC、GND、D+、D-?4 根基礎線。

  • 保留SSTX+/-、SSRX+/-?4 根高速線(USB 3.0 及以上)。

  • 增加了CC1、CC2(Configuration Channel,配置通道):用于識別設備類型、協商供電方向和功率(PD 協議依賴)、判斷插入方向等。

  • 部分 Type-C 線纜還包含邊帶使用線(SBU1、SBU2):支持音頻、視頻信號傳輸(如 DisplayPort Alt Mode)。

因此,Type-C 線纜的總線路數量通常為12 根左右(含屏蔽線等輔助線路),但核心功能仍依賴上述基礎和高速數據 / 電源線。

總結

  • USB 2.0 及以下:4 根線(VCC、GND、D+、D-)。

  • USB 3.0 及以上(非 Type-C):8 根線(4 根基礎線 + 4 根高速差分線)。

  • USB Type-C(含 USB 3.0 及以上):約 12 根線(含基礎線、高速線、配置通道線等)。

端點

在 USB 協議中,端點(Endpoint)?是設備與主機進行通信的邏輯通道,是數據傳輸的最小單位。理解端點的概念對掌握 USB 通信機制至關重要,以下是詳細解析:

一、端點的基本概念

  1. 邏輯通道:端點是設備內部的虛擬 “管道”,每個端點有唯一編號(如 Endpoint 0、Endpoint 1 等)。

  2. 單向性:每個端點只支持一個方向的數據傳輸:

    • IN 端點:數據從設備流向主機(如攝像頭向電腦發送視頻幀)。

    • OUT 端點:數據從主機流向設備(如電腦向打印機發送打印任務)。

  3. 端點 0 的特殊性:所有 USB 設備必須實現 Endpoint 0,它是雙向的,用于設備枚舉和基本控制(如獲取設備描述符、配置設備)。

二、端點的關鍵屬性

每個端點通過端點描述符(Endpoint Descriptor)?向主機報告其能力,主要屬性包括:

  1. 端點號(Endpoint Number):0-15,其中 Endpoint 0 固定為控制端點。

  2. 方向(Direction):IN 或 OUT。

  3. 類型(Type)

    • 控制(Control):用于設備配置和命令傳輸(如 UVC 協議的參數設置)。

    • 批量(Bulk):用于大量數據可靠傳輸(如文件傳輸)。

    • 中斷(Interrupt):用于實時小數據(如鍵盤、鼠標輸入)。

    • 同步(Isochronous):用于實時流數據(如視頻、音頻)。

  4. 最大包大小(Max Packet Size):一次傳輸的最大數據量(如 64 字節、512 字節等)。

  5. 輪詢間隔(Polling Interval):主機查詢端點的頻率(僅對中斷和同步端點重要)。

三、端點的工作機制

  1. 設備枚舉階段

    • 主機通過 Endpoint 0 發送標準請求(如GET_DESCRIPTOR)。

    • 設備返回自身信息(如廠商 ID、產品 ID、支持的配置)。

  2. 數據傳輸階段

    • 主機根據設備描述符選擇合適的配置和端點。

    • 通過指定端點號和方向進行數據收發。

四、不同類型端點的應用場景

端點類型

特點

典型應用

控制端點

可靠、雙向、用于命令和配置

設備初始化、參數設置(如 UVC 亮度調整)

批量端點

高吞吐量、保證數據完整

打印機、存儲設備(如 U 盤)

中斷端點

低延遲、有響應時間保證

鍵盤、鼠標、游戲手柄

同步端點

定時傳輸、允許少量丟包

攝像頭視頻流、麥克風音頻流

五、端點與接口、配置的關系

  • 配置(Configuration):設備的一種工作模式(如低功耗模式、高性能模式),一個設備可支持多個配置。

  • 接口(Interface):配置中的功能單元(如攝像頭的視頻流接口、麥克風的音頻接口)。

  • 端點(Endpoint):接口的具體數據通道。

示例:一個 UVC 攝像頭可能包含:

  • 1 個配置(默認配置)。

  • 2 個接口(視頻流接口、麥克風音頻接口)。

  • 視頻接口包含:

    • 控制端點 0(雙向)。

    • 同步 IN 端點(傳輸視頻幀)。

  • 音頻接口包含:

    • 同步 IN 端點(傳輸音頻數據)。

六、端點的數量限制

  • 每個 USB 設備最多可支持32 個端點(16 個 IN + 16 個 OUT)。

  • 實際應用中,大多數設備僅使用少數端點(如 UVC 攝像頭通常使用 2-3 個端點)。

USB 標準請求字段

USB 標準請求是用在控制傳輸中的數據包,由 8 個字節構成,包含 5 個字段,分別是 bmRequestType、bRequest、wValue、wIndex 和 wLength。具體如下:

  • bmRequestType:占 1 個字節,是一個位圖,用于表示數據傳輸方向、請求類型和接收者。
    • D7 位:表示數據方向,0 為主機到設備,1 為設備到主機。
    • D6 - D5 位:表示請求類型,00 為標準請求命令,01 為類請求命令,10 為用戶定義的命令,11 為保留值。
    • D4 - D0 位:表示接收者,00000 為設備,00001 為接口,00010 為端點,其他值保留。
  • bRequest:占 1 個字節,為請求命令代碼。在標準的 USB 命令中,每一個命令都有對應的編號,該字段的值就是相應的編號。例如,獲取狀態(Get Status)命令的代碼為 00H,清除特性(Clear Feature)命令的代碼為 01H 等。
  • wValue:占 2 個字節,根據不同的命令,其含義也不同。例如在設置地址(Set Address)請求中,wValue 包含要設置的設備地址。
  • wIndex:占 2 個字節,主要用于傳送索引或偏移值。例如,當請求涉及特定端點時,bit3 - 0 表示端點號,bit7 表示方向(0 為 OUT,1 為 IN);當涉及接口時,bit7 - 0 表示接口號。
  • wLength:占 2 個字節,用于指定數據階段要傳輸的字節數。對于主機到設備的傳輸,該字段指定主機將傳輸的數據量;對于設備到主機的傳輸,該字段指定設備可以傳輸的最大數據量。如果沒有數據階段,該字段為 0。

Processing Unit(PU,處理單元)和 Camera Terminal(CT,攝像頭端點)

在 UVC(USB Video Class,USB 視頻類)設備中,Processing Unit(PU,處理單元)和 Camera Terminal(CT,攝像頭端點)是兩個重要的功能模塊,UVC 協議嚴格定義了這些功能單元的格式和描述符結構。具體如下:

  • Processing Unit(處理單元):是 UVC 設備中的一個功能單元,用于對輸入的數據進行處理。它可以接收來自 Selector Unit(選擇單元)的數據,經過一系列處理后,將結果輸出到 Output Terminal(輸出端點)。例如,對視頻數據進行編碼、解碼、降噪、色彩空間轉換等操作,以滿足不同的應用需求。
  • Camera Terminal(攝像頭端點):代表硬件上的數據采集源,通常對應攝像頭的傳感器。它主要用于控制視頻流傳輸中的設備特性,規定支持控制掃描模式(逐行掃描或隔行掃描)、自動曝光模式、自動聚焦、可變光圈、移動鏡頭、滾動、數字窗口等特性。

在 UVC 設備中,數據從 Sensor 和其他復合視頻設備流入,由輸入端點(Input Terminal)和 Camera Terminal 輸入,經過 Selector Unit 選擇后送到 Processing Unit 處理,再由 Output Terminal 綁定到指定的 USB 端點,最后與主機交互數據發送到 Host。

UVC 協議在規范文檔中明確定義了以下核心單元及其描述符格式:

  1. Camera Terminal (CT)

    • 功能:作為視頻輸入源(如攝像頭傳感器),負責捕獲原始圖像數據。
    • 描述符
      • VC_IN_TERMINAL:定義攝像頭端點的特性(如支持的分辨率、幀率范圍)。
      • 包含字段:
bTerminalType      // 終端類型(如0x0201表示Camera Terminal)
wObjectiveFocalLengthMin  // 最小焦距
wObjectiveFocalLengthMax  // 最大焦距
wOcularFocalLength        // 目鏡焦距
bControlSize              // 控制參數的大小
bmControls                // 支持的控制位(如曝光、增益控制)
  1. Processing Unit (PU)

    • 功能:處理原始視頻數據(如亮度、對比度調整,色彩空間轉換)。
    • 描述符
      • VC_PROCESSING_UNIT:定義處理單元的能力和控制接口。
      • 包含字段:
bUnitID               // 單元ID
bSourceID             // 源單元ID(連接的上游單元)
bmControls            // 支持的控制位(如亮度、對比度、飽和度)
wDefault             // 默認值
wMinimum             // 最小值
wMaximum             // 最大值
wStep                // 步進值

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

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

相關文章

如何使用 eBPF 監控 Linux 內存情況:Linux 內存調優之 eBPF 內存監控分析

寫在前面 博文內容整理自 《BPF Performance Tools》 書中 內存部分對書中提到BPF工具配合實際Demo進行說明,以及一些變體的輸出涉及下面一些內存問題的 BPF 觀測 Demo:為什么進程的物理內存占用(RSS)不停增長?哪些代碼路徑會導致缺頁錯誤的發生,缺頁錯誤來自哪些文件?大頁的…

SQL 表結構轉 Go、Java、TS 自定義實體類,支持自編模板

SQL 表結構一鍵轉自定義模型,支持 Golang Template 自由編寫! 有沒有想過 —— 一份 SQL 表結構,不止能轉成 Java 實體類、Go struct,甚至可以: ? 一鍵生成 TypeScript 接口? 輸出 Protobuf 定義文件? 輸出任意你…

新型BERT勒索軟件肆虐:多線程攻擊同時針對Windows、Linux及ESXi系統

趨勢科技安全分析師發現,一個代號為BERT(內部追蹤名Water Pombero)的新型勒索軟件組織正在亞洲、歐洲和美國展開多線程攻擊。該組織主要針對醫療保健、科技和會展服務行業,其活動范圍顯示其正成為勒索軟件生態中的新興威脅力量。攻…

Three.js搭建小米SU7三維汽車實戰(1)搭建開發環境

1.基本概念 ![](https://i-blog.csdnimg.cn/img_convert/a4676122e207e058f3a335df2c99d4f8.png)1) 場景 如何理解場景 場景就是一個三維的世界, 在這個世界中可以放置各種各樣的物體 可以理解成一個**空間**, 或者**容器** 2) 相機 如何理解相機 🤔**思考: *…

Selenium 原理【selenium】

Selenium 是什么?Selenium 是一個專門用于自動化操作網頁的工具集,它能夠模擬人類在瀏覽器中進行的各種操作,如點擊按鈕、填寫表單、滾動頁面等。借助 Selenium,開發者可以編寫腳本來控制瀏覽器,實現自動化測試、數據采…

【音視頻】HLS-m3u8協議介紹

參考文檔:https://datatracker.ietf.org/doc/html/rfc8216 一、m3u8協議概述 m3u8 協議是基于 M3U 格式擴展而來的一種多媒體播放列表協議,主要用于流媒體的索引和分發,尤其在 HLS(HTTP Live Streaming)技術中扮演核…

unity入門:動畫等不顯示問題——畫布設置

unity入門:動畫等不顯示問題——畫布設置動畫等不顯示問題大部分原因畫布Canvas總結動畫等不顯示問題大部分原因 1、畫布設置渲染模式不對,下文再講這個問題。 2、在層級雙擊動畫查看動畫大小,有些動畫創建完之后在場景大小實際很小需要在R…

【機器學習筆記 Ⅱ】3 前向傳播

前向傳播(Forward Propagation)實現詳解 前向傳播是神經網絡中數據從輸入層流向輸出層的過程,通過逐層計算每一層的輸出,最終得到預測結果。以下是其實現原理和步驟的完整解析:1. 前向傳播的核心步驟 (1) 線性變換&…

人體坐姿檢測系統開發實戰(YOLOv8+PyTorch+可視化)

本文將手把手教你構建智能坐姿檢測系統,結合目標檢測與姿態估計技術,實現不良坐姿的實時識別與預警 ### 一、項目背景與價值 現代人每天平均坐姿時間超過8小時,不良坐姿會導致: - 脊椎壓力增加300% - 頸椎病發病率提升45% - 腰椎間盤突出風險增加60% 本系統通過計算機…

卷積神經網絡經典架構演進

LeNet-5 網絡架構 #mermaid-svg-8VgsGVLusLXKY5lE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8VgsGVLusLXKY5lE .error-icon{fill:#552222;}#mermaid-svg-8VgsGVLusLXKY5lE .error-text{fill:#552222;stroke:#5…

mybatis/mybatis-plus添加數據,自增id的值為負數

1、問題概述?使用mybatis-plus的insert方法添加數據的時候,數據雖然添加成功了,但是返回值為false,提示添加失敗。當觀察數據的時候,發現數據的自增主鍵id的值盡然為-1,或者無規律的長串負數,如…

商業創業融資項目計劃書PPT模版

創業融資計劃書PPT模版,營銷模式分析PPT模版,創業計劃書PPT模版,互聯網電商創業推廣手冊PPT模版,商業項目計劃書PPT模版,高端商業計劃通用PPT模版,商業計劃書,科技商業PPT模版 商業創業融資項目…

新人如何入門學習 STM32?

作為一個在嵌入式領域摸爬滾打了近10年的老兵,看到這個問題時我的思緒瞬間回到了當年那個懵懂的自己。說實話,2014年那個夏天,24歲的我剛從機械專業畢業卻被調劑到了廈門某馬的電子部門,第一次聽到"STM32"這個詞的時候&…

clickhouse數據庫表和doris數據庫表遷移starrocks數據庫時建表注意事項總結

目錄零、前言一、clickhouse數據庫表在starrocks數據庫建表時問題總結1.1 數據類型類問題:1.2 數據導出階段:二、doris 數據庫表在starrocks數據庫建表時問題總結2.1 properties不支持的屬性(直接刪除):2.2 properties…

社區云管家 - 智慧生活新方式 ——仙盟創夢IDE

社區服務熱門推薦數字化時代的社區服務新形態?在數字化浪潮席卷日常生活的今天,一個集多功能于一體的綜合社區官網正成為連接居民與社區服務的核心紐帶。這類平臺以 “一站式解決生活需求” 為核心,將看房、外賣、物業、快遞、求職、生鮮、出行、文具打…

MongoDB GridFS

MongoDB GridFS 引言 MongoDB 是一種高性能、可擴展的文檔存儲系統,它提供了靈活的數據模型和豐富的查詢功能。在處理大量非結構化數據時,MongoDB 的 GridFS 功能尤為突出。GridFS 是一種用于存儲和檢索大文件的解決方案,它可以存儲任意大小的文件,并將其分解為多個較小的…

Linux中程序的limits中的Max open files的配置由哪些參數決定

在 Linux 中,程序的 Max open files(最大打開文件數,即 ulimit -n)由多個層級的參數共同控制,具體如下: 1. 內核級全局限制(系統默認上限) 由 /proc/sys/fs/file-max 控制&#xff0…

git clone xxx.git 提示報錯:fatal: Unable to find remote helper for ‘http‘

[rootroot /home]# git clone http://gitlab.xxx.qunar.com/xx/xxx.git Cloning into ‘xxx’… fatal: Unable to find remote helper for ‘http’ 我今天在Linux服務器上執行git clone一個倉庫的代碼到機器上,但是執行的時候提示上面的錯誤,我就很詫異…

【機器學習筆記Ⅰ】10 特征工程

特征工程(Feature Engineering)詳解 特征工程是機器學習和數據科學中的核心環節,旨在通過對原始數據的轉換、組合和提取,構建更適合模型的高質量特征。其質量直接決定模型性能上限(“數據和特征決定了模型的上限&#…

20250708-03-string結構及命令詳解_筆記

一、字符串操作1. set命令1)set命令詳解基本語法與參數命令格式:set key value [ex 秒數]/[px 毫秒數][nx]/[xx]有效期設置:ex參數:以秒為單位設置過期時間,如set a 1 ex 10表示1…