什么是YUV和IPB,PTS和DTS,視頻編碼解碼過程

YUV 是一種在視頻處理和壓縮中常用的顏色空間。
它將圖像的亮度 (Y) 與色度 (U 和 V) 成分分開。
這種分離對視頻壓縮和廣播非常有益,
因為人眼對亮度變化比對顏色變化更敏感。

YUV 組件簡介

  • Y (亮度):表示圖像的亮度或灰度信息。
  • U (色度):表示顏色差異的藍色投影。
  • V (色度):表示顏色差異的紅色投影。

RGB 轉換為 YUV

RGB 轉換為 YUV 的公式如下:
[ Y = 0.299R + 0.587G + 0.114B ]
[ U = 0.492 (B - Y) ]
[ V = 0.877 (R - Y) ]

使用 FFmpeg 進行 YUV 轉換

FFmpeg 可以將視頻文件從一種格式轉換為另一種格式,包括轉換為 YUV 格式或從 YUV 格式轉換。以下是將 RGB 視頻轉換為 YUV 的示例命令:

ffmpeg -i input.mp4 -pix_fmt yuv420p output.yuv

此命令將 input.mp4 轉換為使用 yuv420p 像素格式的 YUV 格式,并保存為 output.yuv

IPB 是視頻編碼中的幀類型,通常用于描述視頻壓縮算法中的幀結構。以下是 IPB 幀的具體介紹:

I 幀(關鍵幀或獨立幀)

  • I 幀 是獨立幀,包含完整的圖像數據,可以不依賴其他幀進行解碼。
  • 它們在視頻流中通常用作參照點,方便隨機訪問。
  • 編碼和解碼 I 幀所需的比特率較高,但提供較高的質量。

P 幀(預測幀)

  • P 幀 依賴于前面的 I 幀或 P 幀,通過預測和差異編碼來減少數據量。
  • 它只存儲相對于前一幀的變化部分,因此比 I 幀需要更少的比特率。
  • 解碼 P 幀時需要參考前面的 I 幀或 P 幀。

B 幀(雙向預測幀)

  • B 幀 依賴于前后的 I 幀和 P 幀,通過雙向預測進行編碼。
  • B 幀能有效地壓縮視頻,因為它可以從兩側幀的信息中進行插值。
  • B 幀的解碼依賴于前后的 I 幀或 P 幀。

使用 FFmpeg 處理 IPB 幀

ffmpeg -i input.mp4 -vf showinfo -f null -

此命令將 input.mp4 的幀信息顯示在控制臺上,其中包括每一幀的類型(I、P 或 B)。

PTS(Presentation Time Stamp,顯示時間戳)
和 DTS(Decoding Time Stamp,解碼時間戳)

是音視頻編碼中的兩個重要概念,用于同步和播放音視頻流。

PTS(顯示時間戳)

  • PTS 指示一個視頻幀或音頻樣本應該在何時顯示或播放。
  • 它用于確保音視頻流在正確的時間點同步播放。
  • 通常,在視頻解碼和播放過程中,PTS 會告訴播放器何時顯示當前幀。

DTS(解碼時間戳)

  • DTS 指示一個視頻幀或音頻樣本應該在何時解碼。
  • 在某些情況下,特別是涉及到 B 幀時,幀的解碼順序可能與顯示順序不同。
  • DTS 確保幀按照正確的順序解碼,以便隨后按 PTS 順序顯示。

使用 FFmpeg 查看 PTS 和 DTS

你可以使用 FFmpeg 查看視頻文件中幀的 PTS 和 DTS 信息。以下是一個示例命令,顯示如何查看視頻文件的時間戳信息:

ffmpeg -i input.mp4 -vf showinfo -f null -

這個命令會在控制臺中顯示 input.mp4 的幀信息,包括 PTS 和 DTS 時間戳。

調整 PTS 和 DTS

在某些情況下,可能需要調整 PTS 和 DTS,
例如修正音視頻不同步的問題。以下是一個示例,展示如何使用 FFmpeg 調整 PTS:

ffmpeg -i input.mp4 -vf "setpts=PTS+2/TB" output.mp4

這個命令將 input.mp4 的 PTS 調整為原來的 PTS 加上 2 秒,并保存為 output.mp4

視頻的編碼和解碼過程是將視頻數據壓縮和解壓縮的技術,用于減少視頻文件的大小,同時盡可能保持視頻質量。這個過程主要包括以下幾個步驟:

視頻編碼過程

  1. 采集和預處理

    • 從攝像設備獲取原始視頻數據(通常是 RGB 格式)。
    • 進行預處理,如色彩空間轉換(將 RGB 轉換為 YUV)和幀間去噪。
  2. 幀類型劃分

    • 將視頻分割成 I 幀(關鍵幀)、P 幀(預測幀)和 B 幀(雙向預測幀)。
  3. 幀內壓縮(Intra-frame Compression)

    • 對每一幀進行壓縮,通常使用離散余弦變換(DCT)來減少空間冗余。
  4. 幀間壓縮(Inter-frame Compression)

    • 利用幀之間的相似性,通過運動估計和補償來減少時間冗余。
  5. 量化

    • 將變換后的系數進行量化,進一步減少數據量。量化級別越高,壓縮比越大,但質量可能會降低。
  6. 熵編碼

    • 使用熵編碼(如霍夫曼編碼或算術編碼)對量化后的數據進行進一步壓縮。
  7. 封裝

    • 將壓縮后的視頻流與音頻流、多媒體數據流等一起封裝成一個多媒體容器格式(如 MP4、MKV 等)。

視頻解碼過程

  1. 解析封裝格式

    • 從多媒體容器中提取壓縮的視頻流。
  2. 熵解碼

    • 對壓縮數據進行熵解碼,還原量化后的變換系數。
  3. 反量化

    • 對量化后的系數進行反量化,還原接近原始的變換系數。
  4. 幀間解壓縮(Inter-frame Decompression)

    • 使用運動補償還原幀間壓縮的數據,重建 P 幀和 B 幀。
  5. 幀內解壓縮(Intra-frame Decompression)

    • 對每一幀進行反DCT變換,重建幀內壓縮的數據。
  6. 重建視頻幀

    • 將 YUV 數據轉換回 RGB 格式,重建出完整的視頻幀。
  7. 顯示和同步

    • 使用 PTS 來同步音視頻流,在正確的時間點顯示每一幀。

使用 FFmpeg 進行視頻編碼和解碼

以下是使用 FFmpeg 進行視頻編碼和解碼的示例命令:

編碼

將原始視頻編碼為壓縮格式,例如 H.264 編碼的 MP4 文件:

ffmpeg -i input.raw -c:v libx264 output.mp4
解碼

將壓縮格式的視頻解碼為原始視頻幀:

ffmpeg -i input.mp4 -f rawvideo output.raw
音頻概念
  1. 比特率:表示經過編碼(壓縮)后的音頻數據每秒鐘需要用多少個比特來表示單位常為kbps。
  2. 響度和強度:聲音的主觀屬性響度表示的是一個聲音聽來有多響的程度響度主要隨聲音的強度而變化,但也受頻率的影響。總的說,中頻純音聽來比低頻和高頻純音響一些
  3. 采樣和采樣率:采樣是把連續的時間信號,變成離散的數字信號。采樣率是指每秒鐘采集多少個樣本
容器-整合音視頻:
  1. 單個這樣的文件包含所有的流(主要是音頻和視頻),并提供同步和通用元數據,比如標題、分辨率等等。
  2. 一般我們可以通過文件的后綴來判斷文件格式:比如video.webm通常是一個使用webm容器格式的視頻。一個video.mp4是MP4容器格式。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

注意同步

在這里插入圖片描述

FFmpeg常用API簡介

在這里插入圖片描述

在這里插入圖片描述
ffmpeg函數簡介
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

FFmpeg&&Android

在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

git - 變基、合并、重置后的回退操作

介紹 ORIG_HEAD 是 Git 中一個特殊的引用,用來指向某些操作(如合并、變基、重置等)前的狀態。它可以用來快速恢復到這些操作之前的狀態。下面是 ORIG_HEAD 的用法和一些常見的使用場景: 用法 1. 查看 ORIG_HEAD 使用以下命令查…

程序員需要具備的核心競爭力

隨著IT人才的飽和,互聯網就業形勢越嚴峻。 作為一名工程師,需要具備哪些基本素養與能力,才能夠應對這樣的就業環境? 按照優先級排序如下: 1 業務理解、需求溝通能力 業務理解與需求溝通看似是技術經理、架構師需要…

四模衛星導航模塊-高精度多模衛星定位技術

GPS02-UBX模塊是思為無線基于u-blox最新款IC M10系列研發的一款全球衛星系統定位GPS/北斗模塊。它可以支持BDS/GPS/GLONASS/Galileo四模定位(四選三,BDS和GLONASS不能同時使用)。GPS02-UBX模塊能看到更多的衛星,有著更高的靈敏度,從而為用戶獲…

大模型日報 2024-07-04

大模型日報 2024-07-04 一、大模型資訊 大廠高管轉戰 AI 創業盤點:超 25 人,覆蓋全產業鏈,AI 應用最熱門 涉及多家互聯網大廠高管加入生成式 AI 創業,涵蓋多個領域及融資情況。 騰訊云發布自研大數據高性能計算引擎 Meson 軟硬一體…

Linux腳本自動安裝 docker

使用官方安裝腳本自動安裝 需使用 root 或sudu 權限賬戶安裝 安裝命令如下: curl -fsSL https://test.docker.com -o install-docker.shsudo sh install-docker.sh腳本中指令: –version 安裝指定版本 Use the --version option to install a specific version, f…

淺談chrome引擎

Chrome引擎主要包括其瀏覽器內核Blink、JavaScript引擎V8以及其渲染、網絡、安全等子系統。下面我將對這些關鍵部分進行簡要說明分析 1. Blink瀏覽器內核 Blink是Google開發的瀏覽器排版引擎,自Chrome 28版本起替代了Webkit作為Chrome的渲染引擎。Blink基于Webkit…

模余數最大公倍數

模余數最大公倍數 模余數題: 模余數 如果a%mb,則(am*k)%b。對m求模,余數為b的整數bm*k 題: 若干人,3001人為一排,余1人 4001人為一排,余2人 4999人為一排,余3人 求人數的最小值。 #include &l…

【Unity學習筆記】A*尋路算法

文章目錄 圖尋路算法BFS廣度優先算法DFS深度優先貪心算法 引入權重Dijkstra算法 A*算法C#實現步驟 Unity中的A*算法A*優化建議 圖 圖的知識盤點 pathfinding 作為一名計算機專業的學生,對于圖這種數據結構也是爛熟于心了。圖是一種包含了多個結點的數據結構&…

案例分享:數據集市搭建方案中集成SQLFlow數據血緣分析工具

本文中描述的數據集市搭建方案是一家跨國公司在AWS平臺上的具體實踐案例。我公司參與其中的數據血緣部分的建設,SQLFlow數據血緣分析工具在該方案中幫助用戶實現了數據血緣分析。 用戶使用Redshift 數據庫倉庫進行數據集市開發。從各種數據源提取數據,并…

動態代理(通俗易懂)

程序為什么需要代理?代理長什么樣? 例子 梳理 代理對象(接口):要包含被代理的對象的方法 ---Star 被代理對象:要實現代理對象(接口) ---SuperStar 代理工具類:創建一個代理,返回值用代理對象&#xff0c…

羅克韋爾 AB 1756-OA16控制器 模塊 處理器

羅克韋爾 AB 1756-OA16該模塊是任何自動化系統的重要組成部分,提供對各種過程的精確控制。它被設計為易于安裝和使用,具有用戶友好的界面,允許簡單的配置和監控。 羅克韋爾 AB 1756-OA16控制器是一款為工業應用而設計的先進控制系統。它具有…

React快速入門-跟著AI學習react

React的快速入門可以遵循以下步驟進行,我將結合參考文章中的相關信息,以分點表示和歸納的形式給出詳細步驟: 一、React基礎知識了解 React的概念和特點: React是一個專注于構建用戶界面的JavaScript庫,采用聲明式設計…

python將多個文件夾里面的文件拷貝到一個文件夾中

網上可以搜到很多方式,有的好使,有的不好使,親測如下腳本可用,并可達到我想要的效果,只將多個文件夾里的文件拷貝到一個文件夾中,不拷貝文件夾本身,如果需要文件夾也拷貝打開注釋行即可 import…

初次使用GitHub教程入門

注冊一個github賬戶 訪問地址:https://github.com/,點擊右上角sign up,錄入以下信息,郵箱,密碼,賬號,會有郵箱驗證,跟著步驟來就好了 配置 本機上設置你的github的郵箱和用戶名 …

51-5 權限維持2 - 影子賬號(隱藏用戶)

權限維持技術 權限維持技術(Persistence,也稱為權限持久化)是一種能夠在系統重啟、用戶更改密碼或其他可能導致訪問中斷的情況下保持對系統訪問的技術。例如,它包括創建系統服務、利用計劃任務、修改系統啟動項或注冊表、以及映像劫持等方法。 創建影子賬戶 影子賬戶是指隱…

【管理咨詢寶藏139】某大型快消集團公司多渠道銷售管理體系方案

本報告首發于公號“管理咨詢寶藏”,如需閱讀完整版報告內容,請查閱公號“管理咨詢寶藏”。 【管理咨詢寶藏139】某大型快消集團公司多渠道銷售管理體系方案 【格式】PDF版本 【關鍵詞】羅蘭貝格、營銷咨詢、戰略規劃 【核心觀點】 - 銷售體系建設主要需…

谷粒商城學習-06-使用vagrant快速創建linux虛擬機

這一節的內容是在Windows上安裝虛擬機。 為什么要按照虛擬機呢? 原因是很多軟件只能在Linux下運行,有的雖然也可以在Windows上運行,但從安裝到運行會遇到很多問題,為這些解決這些問題花時間對于大多數人特別是初學者是沒有什么價…

數字人直播源碼開發全攻略揭秘:如何搭建自己的數字人直播平臺?

當前,數字人直播逐漸成為眾多中小型企業線上帶貨和品牌宣傳的不二之選,而艾媒研究數據也顯示,超五成以上的被調查群體的企業使用過虛擬人技術,超三成被調查群體的企業計劃使用虛擬人技術。在此背景下,越來越多的創業者…

android應用的持續構建CI(一)-- 總體設計

一、背景 接下里我希望通過一系列的文章,把android應用的構建梳理一遍,從總體設計到逐個環節的實現。 總體設計jenkins集成手動簽名依賴環境應用管理 二、構建流程圖 三、技術組件 jenkinsjdkgradle360加固 既然是android應用的持續構建&#xff0c…

記錄一次解決循環依賴

場景 寫權限模塊-登錄驗證這一塊的時候,遇到了一個比較有意思的問題,循環依賴: The dependencies of some of the beans in the application context form a cycle:userController defined in file xxx↓userServiceImpl defined in file xxxx ┌───…