H264視頻編碼中Annex B 格式介紹

Annex B 格式是 H.264 (也稱為 AVC) 視頻編碼標準中的一種數據表示格式,用于將視頻數據從編碼器傳輸到解碼器。它主要用于流媒體傳輸和文件存儲。

文章目錄

      • Annex B 格式的定義
      • Annex B 格式的主要特點
      • Annex B 與其他格式的對比
      • Annex B 格式示例
      • 將 H.264 數據從 MP4 格式轉換為 Annex B 格式
      • 附加信息
        • H.264 標準
        • MP4 容器格式

Annex B 格式的定義

在 H.264 標準中,Annex B 是一種數據格式規范,定義了如何將 H.264 碼流以適合網絡傳輸和文件存儲的方式進行編碼。Annex B 格式以一系列 NAL (Network Abstraction Layer) 單元組成,每個單元以特定的起始碼分隔。

Annex B 格式的主要特點

  1. 起始碼

    • 在 Annex B 格式中,每個 NAL 單元以一個或多個起始碼 (start code) 開始。起始碼是一個 3 字節或 4 字節的字節序列,常用的有:
      • 3 字節起始碼:0x000001
      • 4 字節起始碼:0x00000001
    • 這些起始碼用于標識 NAL 單元的開始位置。
  2. NAL 單元

    • NAL 單元是 H.264 視頻數據的基本傳輸單元,每個 NAL 單元包含一個完整的編碼視頻數據塊。
    • NAL 單元可以有不同的類型,如 IDR 幀、P 幀、B 幀、SPS、PPS 等。
  3. NAL 單元類型

    • 每個 NAL 單元的第一個字節包含了 NAL 單元的類型信息。常見的類型包括:
      • SPS (Sequence Parameter Set):序列參數集,包含解碼視頻流所需的全局配置信息。
      • PPS (Picture Parameter Set):圖像參數集,包含解碼視頻流的圖像參數信息。
      • IDR (Instantaneous Decoder Refresh):關鍵幀,用于刷新解碼器的狀態。
      • Non-IDR Frames:包括 I 幀、P 幀、B 幀等其他類型的幀。

Annex B 與其他格式的對比

特性Annex B 格式AVC/MPEG-4 Part 10MP4 格式
起始碼使用 0x0000010x00000001不使用起始碼不使用起始碼
數據組織NAL 單元以起始碼分隔NAL 單元前有長度字段NAL 單元前有長度字段
用途流媒體傳輸、文件存儲編碼標準容器格式

Annex B 格式示例

假設有以下 H.264 NAL 單元數據:

0x000001 0x65 0x88 0x84 0x21 0x00 0x00 0x00 0x01 0x41 0xC8 0x00 0x00 0x00 0x01 0x68 0xEB 0x21 0x00 0x00 0x00 0x01 0x65 0x88 0x84 0x21

這里的 0x0000010x00000001 是起始碼,后面的字節是 NAL 單元的內容。

將 H.264 數據從 MP4 格式轉換為 Annex B 格式

MP4 格式中,NAL 單元前有一個 4 字節的長度字段,而 Annex B 格式中則使用起始碼來分隔 NAL 單元。

附加信息

H.264 標準

H.264 標準是由 ITU-T H.264 和 ISO/IEC 14496-10(MPEG-4 Part 10)定義的,用于視頻編碼的標準。它提供了高效的視頻壓縮技術,廣泛應用于視頻流媒體、高清視頻存儲等領域。

MP4 容器格式

MP4 是一種常用的多媒體文件容器格式,可以包含視頻、音頻、字幕等多種媒體數據。MP4 文件中的視頻數據通常以 AVCC 格式存儲,其中 NAL 單元前面會有一個 4 字節的長度字段。

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

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

相關文章

查詢(q_proj)、鍵(k_proj)和值(v_proj)投影具體含義

查詢(q_proj)、鍵(k_proj)和值(v_proj)投影,這些投影是自注意力機制的核心組件,特別是在Transformer架構中。 讓我們通過一個簡化的例子來說明: import numpy as np# 假設輸入維度是4,注意力頭數是2 input_dim 4 num_heads 2 …

每天一道Java面試題系列之--Spring如何解決循環依賴問題

面試題:Spring如何解決循環依賴問題? 問題背景: 在Spring框架中,循環依賴通常發生在單例(Singleton)作用域的bean之間。當兩個或多個bean在它們的構造函數中相互引用時,Spring容器在創建這些b…

電腦32位和62位是什么意思

在現代計算機世界中,32位和64位是兩個常見的術語,但許多用戶可能不太清楚它們的確切含義以及它們之間的區別。本文將詳細介紹32位和64位計算機的基本概念、如何查看您的計算機是32位還是64位,以及它們對用戶的實際影響。 32位與64位的基本概…

算法之工程化內容(1)—— Linux常用命令

目錄 1. cd 命令 2. pwd 查看當前工作目錄路徑 3. SSH遠程登錄 4. ln -s 軟鏈相關 5. mkdir 新建空目錄 6. cp 復制 7. chown 權限改寫 8. 進程相關(nohup/ ps/ kill) 9. tar -czvf/ tar -xzvf,zip/ unzip解壓縮文件 10. df/ du/ free 11. hi…

MySQL篇七:復合查詢

文章目錄 前言1. 基本查詢回顧2. 多表查詢3. 自連接4. 子查詢4.1 單行子查詢4.2 多行子查詢4.3 多列子查詢4.4 在from子句中使用子查詢4.5 合并查詢4.5.1 union4.5.2 union all 前言 前面我們講解的mysql表的查詢都是對一張表進行查詢,在實際開發中這遠遠不夠。 1.…

【高中數學/指數函數】比較a=0.6^0.9 b=0.6^1.5 c=1.5^0.6的大小

【問題】 比較a0.6^0.9 b0.6^1.5 c1.5^0.6的大小 【解答】 指數函數y0.6^x是減函數&#xff0c;因為0.9<1.5,所以0.6^0.9>0.6^1.5,即a>b; 指數函數y1.5^x是增函數&#xff0c;1.5^0.6>1.5^01>0.6^0.9,即c>a; 綜上&#xff0c;得出c>a>b的結論。 …

【運維】docker批量刪除臨時鏡像(兩種方式)

docker批量刪除Tag<none>的臨時鏡像 在開發的時候&#xff0c;需要經常發布開發包&#xff0c;在使用docker build構建鏡像的時候&#xff0c;同一個版本經常會使用相同tag&#xff0c;頻繁打包一段時間后&#xff0c;本地會出現很多Tag<none>的臨時鏡像&#xff…

【MySQL】MySQL中的字段類型和區別

文章目錄 前言一、說明舉例1. 數值類型2. 字符串類型3. 日期和時間類型 二、總結 前言 在設計數據庫和創建表時&#xff0c;理解MySQL中的各種字段類型及其區別是非常重要的。每種類型都有其特定的用途和存儲需求。在本文中&#xff0c;我們將詳細討論MySQL中的各種字段類型&a…

uniapp如何發送websocket請求

方法1&#xff1a; onLoad() {uni.connectSocket({url: ws://127.0.0.1:8000/ws/stat/realTimeStat/,success: (res) > {console.log(connect success, res);}});uni.onSocketOpen(function (res) {console.log(WebSocket連接已打開&#xff01;);uni.sendSocketMessage({d…

Xinstall揭秘:APP推廣數據背后的真相,讓你的營銷更精準!

在這個移動互聯網時代&#xff0c;APP如同雨后春筍般涌現&#xff0c;但如何在這片紅海中脫穎而出&#xff0c;成為每一個開發者與運營者面臨的共同難題。其中&#xff0c;APP推廣統計作為衡量營銷效果、優化推廣策略的關鍵環節&#xff0c;更是不可忽視的一環。今天&#xff0…

[GDOUCTF 2023]Tea writeup

通過strings找到關鍵函數 int __fastcall main_0(int argc, const char **argv, const char **envp) {char *v3; // rdi__int64 i; // rcxchar v6; // [rsp20h] [rbp0h] BYREFint v7; // [rsp24h] [rbp4h]int v8; // [rsp44h] [rbp24h]int four_key[12]; // [rsp68h] [rbp48h]…

你知道滾筒式高速視覺檢測機外觀怎么“看”出產品質量嗎?

點火線圈膠套是一種用于保護點火線圈絕緣部分的膠質套管。這種膠套通常由高溫耐磨的橡膠或硅膠材料制成&#xff0c;具有良好的絕緣性能和耐高溫性能。點火線圈膠套的作用是防止點火線圈與外部環境接觸&#xff0c;防止受潮、灰塵或化學物質的侵蝕&#xff0c;同時起到絕緣和保…

python怎么調用cmd命令

關于python調用cmd命令&#xff1a; 1、python的OS模塊 OS模塊調用CMD命令有兩種方式&#xff1a;os.popen()、os.system()都是用當前進程來調用。 OS.system是無法獲取返回值的。當運行結束后接著往下面執行程序。用法如&#xff1a;OS.system("ipconfig"). OS.…

隨身WiFi市場亂象橫生,隨身WiFi測評最好的格行隨身WiFi如何引領變革?

在當今隨身WiFi市場亂象頻發、內卷嚴重的背景下&#xff0c;消費者對于產品的性能與商家是否會后臺割韭菜依舊存疑&#xff0c;尤其是“隨身WiFi到底卡不卡&#xff1f;”的問題&#xff0c;成為了廣大消費者關注的重點。然而&#xff0c;在眾多品牌中&#xff0c;格行隨身WiFi…

【音頻特征提取】傅里葉變換算法源碼學習記錄

目錄 背景快速理解FFT&#xff08;快速傅里葉變換&#xff09;IFFT&#xff08;逆傅里葉變換&#xff09;STFT&#xff08;短時傅里葉變換&#xff09; 代碼實現FFT源代碼IFFT源代碼FFT、IFFT自己實驗STFT源代碼STFT自己實驗 總結 背景 最近用到了相關操作提取音頻信號特征&am…

Vue3 根據相對路徑加載vue組件

一、設置動態組件加載器 1、"DynamicFormLoader.vue" <template><div><component :is"formComponent" v-if"formComponent" /></div> </template><script setup> import { ref, watch } from vue; import …

如何測試掃地機器人的穩定性

測試掃地機器人的穩定性是一個綜合性的過程&#xff0c;旨在確保機器人在各種環境和條件下都能穩定運行。以下是一些關鍵的測試步驟和方面&#xff1a; 清潔效果測試 目的&#xff1a;評估掃地機器人在不同地面和污漬類型上的清潔能力。 方法&#xff1a; 使用不同類型的地面&…

標簽印刷檢測,如何做到百分百準確?

印刷標簽是一種用于標識、識別或包裝產品的平面印刷制品。這些標簽通常在紙張、塑料膜、金屬箔等材料上印刷產品信息、條形碼、圖像或公司標識&#xff0c;以便于產品識別和管理。印刷標簽有各種形狀、尺寸和材質&#xff0c;可以根據具體需求進行定制設計。常見的印刷標簽包括…

FlutterFlame游戲實踐#15 | 生命游戲 - 演繹啟動

theme: cyanosis 本文為稀土掘金技術社區首發簽約文章&#xff0c;30天內禁止轉載&#xff0c;30天后未獲授權禁止轉載&#xff0c;侵權必究&#xff01; Flutter\&Flame 游戲開發系列前言: 該系列是 [張風捷特烈] 的 Flame 游戲開發教程。Flutter 作為 全平臺 的 原生級 渲…

android 居中對齊

在 Android 中&#xff0c;要使 LinearLayout 中的內容居中對齊&#xff0c;你可以通過設置 android:gravity 屬性或使用 android:layout_gravity 屬性來實現。這兩個屬性的使用取決于你希望對齊的內容是 LinearLayout 內部的子視圖還是 LinearLayout 本身相對于其父布局的對齊…