H264的打包,nal,es,pes,pts,dts,ps,ts

編碼層次

  • 視頻編碼層:預測、變換、量化、熵編碼等操作
  • slice層:將視頻幀分割成若干個編碼單元,包含一定數量的宏塊,提高編解碼的并行性和容錯性。
  • NAL層:提升對網絡傳輸和數據存儲的親和性

視頻編碼層

  • 基準-Baseline Profile:主要用于視頻會議、可視電話等實時通信領域;支持IP幀,熵編碼支持 CAVLC 算法
  • 主要-Main Profile:主要用于數字電視廣播、數字視頻數據存儲等;支持視頻場編碼、IPB幀。熵編碼支持 CAVLC 和 CABAC
  • 擴展-Extended Profile:主要用于網絡視頻直播和點播等;支持基準所有特性,支持 SI 和 SP 條帶

編碼的概念

  • 序列:一組變化不大的圖像
  • 幀:一個視頻圖像編碼后的數據,一幀由一片或多片組成、一片由多個宏塊組成。宏塊是編碼的基本單位
  • GOP:圖像組,類似與序列
  • IDR:立即刷新幀,一定是 I幀,清空參考幀緩沖區

分層結構

在這里插入圖片描述

  • SODB:視頻編碼層輸出編碼的數據后,經過數據劃分,輸出 SODB(String of Data Bits)數據比特串

  • RBSP:NAL層 將 SODB 打包成 RBSP (Raw Byte Sequence Payload)原始字節序列負載,在SODB 后面添加1和若干0字節對齊

  • EBSP:Encapsulated Byte Sequence Payload, 擴展字節序列載荷,RBSP加上NAL頭就是一個NALU 單元,起始碼 三字節的 0x000001 或 四字節的 0x00000001。access unit ,pps,sps 是 四字節。

  • NALU結束是三字節的 0x000000,防止數據中間出現0x000000,中間每遇到兩個0x00就插入一個0x03
    -在這里插入圖片描述

  • NAL頭:8位

    • F(forbiden)禁止位 0:為1時語法錯誤
    • NRI 參考級別 1-2:值越大,越重要
    • TYPE Nal 單元數據類型 3-7:數據類型
      在這里插入圖片描述

參數集

SPS-序列參數集

  • profile信息,baseline,main,extended
  • 碼流level,不同的level定義了最大分辨率,最大幀率,最大碼率,1080P30FPS20Mbps是 Level4.0
  • 色彩空間
  • 碼率控制參數
  • 熵編碼參數

PPS-圖像參數集

  • 圖像類型:IPB
  • 參考幀選擇
  • 解碼器配置
  • 參數集索引

ES-Elementary Streams(原始流)

  • 包含視頻和音頻
  • 視頻是 NALU
  • 音頻則是音頻幀
  • 只含視頻或音頻
  • 由若干個 AU(Access Unit)組成

PES-Packetized Elementary Streams(分組的 ES)

  • ES流經過PES打包器形成的數據流,將ES流分組,打包,加入包頭信息

PTS PresentationTime Stamp(顯示時間標記)、DTS Decoding Time Stamp(解碼時間標記)

  • 打包在PES包頭內
  • 解決音視頻同步顯示
  • 防止解碼器輸入緩存上溢或下溢
  • 每個 IPB 幀包頭都有一個 pts dts
  • B幀可以不標記 dts,因為通常同時參考前后兩幀
  • B幀的解碼順序和顯示順序可能不同

PS Program Stream(節目流)

  • 由若干個 PES 包組成
  • 包含同步信息和時鐘恢復信息
  • 最多可包含同一時間基準的16個視頻PES和32個音頻PES包
  • 可變長度的
  • 信道環境較好,傳輸誤碼率較低時使用PS碼流

TS Transport Stream(傳輸流)

  • 定長的 TS 包組成 188 字節,或加上16字節的 CRC 校驗數據
  • 是對 PES 包的重新封裝
  • 信道環境較為惡劣、傳輸誤碼率較高時使用TS碼流
  • 頭 四字節,負載 184字節
  • 在這里插入圖片描述

PAT 表,PMT 表

  • 通常只用于數字電視,實際網絡傳輸用不到

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

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

相關文章

云計算與大數據課程筆記(一)云計算背景與介紹

如何實現一個簡易搜索引擎? 實現一個簡易的搜索引擎可以分為幾個基本步驟:數據收集(爬蟲)、數據處理(索引)、查詢處理和結果呈現。下面是一個概括的實現流程: 1. 數據收集(爬蟲&am…

Java實戰:Spring Boot項目中如何利用Redis實現用戶IP接口限流

引言 在高并發的Web應用中,接口限流是一項至關重要的技術手段,它有助于保護系統資源,防止因瞬間流量高峰導致服務崩潰。本文將深入探討如何在Spring Boot項目中借助Redis實現用戶IP級別的接口限流策略,通過具體的代碼示例&#x…

大數據概述

學習大數據有什么用? 2010年:大數據技術體系開始在國內火熱 2015年:國務院印發《促進大數據發展行動綱要》 2016年:發改委發布關于組織實施促進大數據發展重大工程的通知 2017年:工信部印發大數據產業規劃(2016-20…

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1 Bash (Bourne Again Shell) 是一個解釋器,負責處理 Unix 系統命令行上的命令。它是由 Brian Fox 編寫的免費軟件,并于 1989 年發布的免費軟件,作為 Sh (Bourne Shell) 的替代品。 您…

Nginx高級技巧:實現負載均衡和反向代理

文章目錄 Nginx概述Nginx作用正向代理反向代理負載均衡動靜分離 Nginx的安裝 -->Docker3.1 安裝Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源碼安裝nginx常用命令nginx配置文件配置文件位置配置文件結構詳情 Nginx的反向代理【重點】基于Nginx實現反向代理4…

C語言冒泡排序(高級版)

目錄: 冒泡排序的原理 主函數 "冒泡排序函數" 比較函數 交換函數 最終輸出 完整代碼 冒泡排序的原理: 冒泡排序的原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右…

Windows上構建一個和Linux類似的Terminal

preview 目的是在Windows上構建一個和Linux類似的Terminal,讓Windows煉丹和Linux一樣舒適,同是讓Terminal取代Xshell完成遠程鏈接。 預覽如下圖 在Linux下我們使用zsh和oh-my-zsh結合,Windows下我們使用powershell7和oh-my-posh結合。 前提…

Vue 前端開發 v-for和v-if兩個指令不能混合使用

原由: 在進行項目開發的時候因為在一個標簽上同時使用了v-for和v-if兩個指令導致的報錯。 提示錯誤:The undefined variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should no…

nginx------------緩存功能 ip透傳 負載均衡 (六)

一、http 協議反向代理 (一)反向代理示例:緩存功能 緩存功能可以加速訪問,如果沒有緩存關閉后端服務器后,圖片將無法訪問,緩存功能默認關閉,需要開啟。 ? proxy_cache zone_name | off; 默認off #指明調…

基于Springboot純凈水配送和商城系統設計與實現 開題報告參考

博主介紹:黃菊華老師《Vue.js入門與商城開發實戰》《微信小程序商城開發》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程&#xff…

2023 版王道單科書勘誤匯總(3.30)

注:因2023版對題目編號做了優化“歷年真題全部放最后、且按年份排序”,以方便大家根據需要保留某些年份的真題作為最后的模擬。所以造成了一些題目和解析的編號錯誤。 數據結構: P11 P20 P56 P278 P326 “2.”中第 3 行”題 5改成”9”,第6行”題 8”改成…

css3詳解

一.什么是CSS3 CSS3是Cascading Style Sheets的第三個版本,是一種用于描述文檔樣式的語言(CSS3是CSS(層疊樣式表)技術的升級版本)。它是前端開發中用于控制網頁布局和樣式的技術之一。CSS3引入了許多新的特性和功能&a…

Linux常用操作命令大全

Linux常用操作命令大全 Linux,作為一款開源的操作系統,深受全世界開發者和系統管理員的喜愛。在Linux環境下,用戶通過命令行界面可以執行各種操作,從而實現對系統的全面控制。本文將詳細介紹Linux中常用的操作命令,幫助讀者更好地理解和運用這些命令。 一、文件操作命令…

hexo圖片顯示不出且圖片路徑錯誤/.com//

參考博客: hexo 圖片顯示問題及使用typora設置圖片路徑-CSDN博客 javascript - hexo 圖片路徑錯誤/.com// - SegmentFault 思否 先說如何讓hexo圖片成功地顯示出來 Step1: 修改config設置 將 _config.yml 設置文件中的 post_asset_folder 修改為 true 這一步的作…

平衡二叉樹,二叉樹的路徑,左葉子之和

第六章 二叉樹part04 今日內容: 110.平衡二叉樹 257. 二叉樹的所有路徑 404.左葉子之和 110.平衡二叉樹 (優先掌握遞歸) 給定一個二叉樹,判斷它是否是高度平衡的二叉樹。 本題中,一棵高度平衡二叉樹定義為&am…

【不可不知的考研復試秘籍 1】

----------------------------------------------------------------------------------------------------- 考研復試科研背景提升班 教你快速深入了解掌握考研復試面試中的常見問題以及注意事項,系統的教你如何在短期內快速提升自己的專業知識水平和編程以及英語…

windows下安裝cnpm

cnpm是淘寶團隊開發的一個針對中國用戶的npm鏡像源,它是npm的一個定制版本。由于國外的npm源在國內訪問速度較慢,所以cnpm鏡像源可以提供更快的下載速度。cnpm的使用方式與npm基本相同,只需將npm替換為cnpm即可。 要想使用cnpm等先安裝node.…

反序列化逃逸 [安洵杯 2019]easy_serialize_php1

打開題目 題目源碼&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&qu…

每日一題 KY148還是暢通工程

某省調查鄉村交通狀況&#xff0c;得到的統計表中列出了任意兩村莊間的距離。省政府“暢通工程”的目標是使全省任何兩個村莊間都可以實現公路交通&#xff08;但不一定有直接的公路相連&#xff0c;只要能間接通過公路可達即可&#xff09;&#xff0c;并要求鋪設的公路總長度…

PostgreSQL對已有表增加自增序列

對已有表增加自增序列&#xff1a; 1、在PostgreSQL當中&#xff0c;我們要實現對已有表的ID字段自增。 首先需創建一個關聯序列&#xff0c;以下sql語句是創建一個序列&#xff1a; CREATE SEQUENCE menu_id_seq START 6000001; 序列名稱是menu_id_seq&#xff0c;起始…