視頻處理加速及應(yīng)用實(shí)踐:基于英特爾GPU
定 價(jià):109 元
- 作者:林森等
- 出版時(shí)間:2023/9/1
- ISBN:9787111734000
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.413
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書聚焦于使用英特爾的GPU來進(jìn)行視頻加速處理的方案。首先介紹視頻處理的理論基礎(chǔ),然后介紹英特爾的GPU處理器架構(gòu),接著介紹英特爾推薦的視頻處理開發(fā)套件Media SDK的環(huán)境搭建、框架和功能支持,以及開源框架的環(huán)境如何在英特爾的平臺(tái)上搭建等。接下來是實(shí)戰(zhàn)的部分,首先介紹視頻處理中的兩個(gè)技術(shù)難點(diǎn)——內(nèi)容管理和碼率控制,接下來是編程實(shí)戰(zhàn),并針對開發(fā)者反饋較多的情況,介紹性能評測和性能優(yōu)化的部分以及視頻會(huì)議中視頻處理的應(yīng)用。
本書面向的讀者為視頻行業(yè)的廣大從業(yè)人員,不管是新進(jìn)入這個(gè)行業(yè)的開發(fā)小白,還是眾多戰(zhàn)斗在第一線的銷售、售前工程師以及現(xiàn)場工程師等,甚至是具有數(shù)十年工作經(jīng)驗(yàn)的資深軟硬件開發(fā)人員,都可以從本書獲益。
PREFACE
前 言
隨著科技和網(wǎng)絡(luò)的蓬勃發(fā)展,視頻作為主要的信息載體,應(yīng)用場景越來越多——從傳統(tǒng)的電視電影到現(xiàn)在的在線視頻服務(wù),從點(diǎn)播到直播,從單向接收到實(shí)時(shí)互動(dòng)。同時(shí),隨著屏幕越來越清晰,尺寸越來越大,對視頻的尺寸、清晰度等的要求變得越來越高,這也對硬件的算力提出了越來越高的要求。作為計(jì)算平臺(tái)的主要硬件供應(yīng)商,英特爾提供了多款能夠加速處理復(fù)雜視頻應(yīng)用的硬件平臺(tái),例如,性價(jià)比合適的集成顯卡、可插拔的獨(dú)立顯卡、性能強(qiáng)悍并且可擴(kuò)展的服務(wù)器處理器、可實(shí)現(xiàn)客戶定制化的FPGA芯片等。GPU架構(gòu)的快速發(fā)展,特別是英特爾GPU內(nèi)集成了很多專用的低功耗視頻數(shù)據(jù)處理模塊,使其具有很強(qiáng)的視頻加速處理能力。雖然國內(nèi)也有很多開發(fā)者使用英特爾GPU,然而沒有相關(guān)書籍來系統(tǒng)梳理這部分知識。因此,本書將聚焦于使用英特爾的GPU來進(jìn)行視頻加速處理的方案。
本書將從視頻數(shù)據(jù)的理論基礎(chǔ)、硬件基礎(chǔ)、軟件接口、實(shí)戰(zhàn)等方面進(jìn)行介紹。首先深入淺出地介紹一些大家耳熟能詳?shù)臄?shù)字圖像的基本概念;然后介紹數(shù)字圖像壓縮的理論基礎(chǔ)和評價(jià)方法,以及現(xiàn)在常用的一些視頻編碼的標(biāo)準(zhǔn)格式;接下來介紹英特爾GPU的架構(gòu)特點(diǎn),因?yàn)樗闪藢S玫亩嗝襟w處理模塊,具備高效、低功耗的視頻加速處理能力;再接下來詳細(xì)介紹相關(guān)軟件組件的設(shè)計(jì)原理以及環(huán)境搭建過程等,這些組件包括免費(fèi)開源的視頻處理開發(fā)套件Media SDK、基于Media SDK和OpenVINO實(shí)現(xiàn)的高并發(fā)視頻分析業(yè)務(wù)評估工具(SVET),以及業(yè)界常用的視頻開源框架FFmpeg、GStreamer和OpenCV等。由于視頻處理加速在嵌入式環(huán)境的廣泛應(yīng)用,我們在第5章詳細(xì)介紹了Linux系統(tǒng)下對應(yīng)的軟件棧,對開發(fā)者比較關(guān)心的DRM框架、i915驅(qū)動(dòng)、VA-API、GmmLib的核心知識做了梳理。這些軟件接口各有所長,面向的應(yīng)用也千差萬別,但是底層都可以通過英特爾的驅(qū)動(dòng)調(diào)用英特爾的GPU來進(jìn)行視頻加速處理,所以,讀者可以根據(jù)自身項(xiàng)目的需求有選擇地閱讀。在介紹完硬件架構(gòu)和軟件接口之后,就開始進(jìn)行實(shí)戰(zhàn)技巧的介紹,主要包括視頻編解碼處理、拼接顯示、性能監(jiān)測、性能驗(yàn)證和優(yōu)化等,并配有命令行以及參考代碼。相信這種介紹方法能夠幫助讀者少走彎路,節(jié)省開發(fā)成本,起到事半功倍的作用。
本書各章的具體寫作分工為:
第1章 視頻處理之理論基礎(chǔ):林森
第2章 英特爾GPU概述:林森,傅偉
第3章 Media SDK總覽:林森,唐君
第4章 Media SDK環(huán)境搭建:唐君,葉釗,林森,王丹
第5章 Linux視頻加速軟件框架:唐君
第6章 開源框架的使用和環(huán)境搭建:葉釗,黃妍
第7章 高并發(fā)視頻分析業(yè)務(wù)評估工具:王丹
第8章 編解碼實(shí)現(xiàn):林森,傅巧妮,王丹,唐君
第9章 拼接顯示實(shí)現(xiàn):傅巧妮,唐君,林森
第10章 性能監(jiān)測:唐君,林森
第11章 性能驗(yàn)證和優(yōu)化:唐君,林森
附錄A~附錄D:林森
本書面向的讀者為視頻行業(yè)的廣大從業(yè)人員,不管是新進(jìn)入這個(gè)行業(yè)的開發(fā)小白,還是眾多戰(zhàn)斗在第一線的銷售、售前工程師以及現(xiàn)場工程師等,甚至是具有數(shù)十年工作經(jīng)驗(yàn)的資深軟硬件開發(fā)人員,都可以通過本書了解英特爾GPU的架構(gòu)、能力、特點(diǎn)以及開發(fā)框架等,并找到解決實(shí)際問題的方法和思路,快捷地研發(fā)出有特點(diǎn)的視頻產(chǎn)品。
另外,本書介紹的是最基本的視頻圖像處理的理論知識,不會(huì)涉及高深的數(shù)學(xué)知識和最前沿的理論算法,因?yàn)楸緯嫦虻氖悄切┫胍岩曨l處理技術(shù)做成可以落地的項(xiàng)目的從業(yè)者和開發(fā)者。當(dāng)然有很多講述理論的書,想要深入學(xué)習(xí)視頻編解碼知識的讀者可以參考《數(shù)字視頻編碼技術(shù)原理(第二版)》(由高文、趙德斌、馬思偉所著)等。盡管本書的很多案例都基于英特爾GPU平臺(tái),但是很多視頻加速處理的思想是相通的,致力于視頻處理開發(fā)的讀者也可以把本書作為入門類書籍參考。
在整本書的描述過程中,我們希望盡可能地把想要表述的觀點(diǎn)通俗易懂地表達(dá)出來。眾所周知,很多技術(shù)類的書籍常常因?yàn)榧夹g(shù)本身比較復(fù)雜而讓讀者感到晦澀難懂,我們希望通過我們的經(jīng)驗(yàn)幫助讀者少走一些彎路,從而降低開發(fā)的難度。同時(shí),因?yàn)樵谝曨l技術(shù)行業(yè)里大家對某些英文單詞已經(jīng)形成了基本認(rèn)知,如果直接翻譯成中文會(huì)給廣大讀者造成困擾,所以我們在描述過程中會(huì)把某些專業(yè)名詞對應(yīng)的英文放到括號內(nèi),以便把概念介紹得更加明確,易于閱讀和理解。
本書從開始構(gòu)思到最后成書歷時(shí)三年多,大家都是利用業(yè)余時(shí)間參與編寫工作的,這里要特別感謝陳婧在本書的編寫過程中給予大力支持,在大家堅(jiān)持不下去的時(shí)候,她一直在出謀劃策,鼓勵(lì)和推動(dòng)著大家前進(jìn),非常感謝!
最后由于大家的能力和精力有限,書中還有很多問題沒有來得及仔細(xì)鉆研,在描述和實(shí)現(xiàn)上也有很大的局限性,希望得到大家的理解和支持,歡迎提出寶貴的意見和建議。
CONTENTS
目 錄
序
前言
第1章 視頻處理之理論基礎(chǔ)1
1.1 人眼視覺系統(tǒng)概述1
1.2 RGB和YUV色彩空間模型3
1.2.1 RGB色彩空間模型5
1.2.2 YUV色彩空間模型5
1.2.3 YUV色彩模型與RGB
色彩模型的轉(zhuǎn)換6
1.3 數(shù)字圖像概述7
1.3.1 數(shù)字化過程——采樣7
1.3.2 幀和場8
1.3.3 視頻圖像屬性9
1.4 傳統(tǒng)視頻壓縮技術(shù)理論和
算法概述10
1.4.1 信息論概述11
1.4.2 視頻數(shù)據(jù)的冗余特性14
1.4.3 變換技術(shù)15
1.4.4 量化技術(shù)18
1.4.5 預(yù)測技術(shù)20
1.4.6 Z字形掃描22
1.4.7 熵編碼23
1.4.8 可分層編碼23
1.4.9 多視點(diǎn)視頻編碼25
1.5 常見視頻圖像處理算法27
1.5.1 去隔行掃描27
1.5.2 幀率轉(zhuǎn)換28
1.5.3 電視電影刷新率轉(zhuǎn)換28
1.5.4 縮放29
1.6 視頻行業(yè)主要標(biāo)準(zhǔn)30
1.6.1 電視制式31
1.6.2 視頻圖像標(biāo)準(zhǔn)32
1.6.3 視頻編解碼行業(yè)標(biāo)準(zhǔn)33
1.7 視頻圖像質(zhì)量評價(jià)36
1.7.1 主觀質(zhì)量評價(jià)37
1.7.2 客觀質(zhì)量評價(jià)37
1.8 本章小結(jié)39
第2章 英特爾GPU概述41
2.1 英特爾GPU處理器架構(gòu)概述42
2.2 視頻引擎46
2.3 英特爾GPU路線圖和命名49
2.4 本章小結(jié)52
第3章 Media SDK總覽53
3.1 處理對象54
3.2 功能模塊55
3.3 API設(shè)計(jì)56
3.4 軟件架構(gòu)57
3.4.1 會(huì)話57
3.4.2 分配器59
3.4.3 數(shù)據(jù)緩存61
3.4.4 異步流水線62
3.5 例程和教程概述64
3.5.1 基本開發(fā)流程64
3.5.2 解碼過程65
3.5.3 編碼過程66
3.5.4 轉(zhuǎn)碼過程67
3.5.5 視頻圖像處理68
3.5.6 例程的使用70
3.6 新一代開發(fā)套件OneVPL71
3.7 本章小結(jié)75
第4章 Media SDK環(huán)境搭建77
4.1 Linux環(huán)境搭建77
4.1.1 選擇內(nèi)核版本77
4.1.2 選擇Media SDK版本78
4.1.3 安裝依賴庫和例程79
4.1.4 通過vainfo驗(yàn)證安裝
結(jié)果80
4.2 Windows環(huán)境搭建85
4.2.1 開發(fā)環(huán)境部署85
4.2.2 例程編譯過程87
4.2.3 基于GitHub的例程編譯
過程92
4.2.4 查看當(dāng)前平臺(tái)的視頻處理
能力92
4.2.5 自帶Tracer工具92
4.3 本章小結(jié)94
第5章 Linux視頻加速軟件框架95
5.1 直接渲染管理器97
5.1.1 內(nèi)存管理98
5.1.2 命令提交107
5.1.3 模式設(shè)置115
5.1.4 權(quán)限管理116
5.2 libdrm117
5.3 VA-API117
5.3.1 核心概念119
5.3.2 編程流程124
5.3.3 示例程序125
5.3.4 調(diào)試129
5.4 GmmLib132
5.5 本章小結(jié)133
第6章 開源框架的使用和環(huán)境
搭建134
6.1 FFmpeg134
6.1.1 Linux編譯指南136
6.1.2 Windows編譯指南138
6.2 GStreamer141
6.2.1 基于GStreamer官網(wǎng)的
編譯指南141
6.2.2 通過Intel OpenVINO
安裝GStreamer143
6.2.3 GStreamer與AI的協(xié)同
工作146
6.3 OpenCV151
6.3.1 Linux編譯指南152
6.3.2 Windows編譯指南154
6.4 本章小結(jié)158
第7章 高并發(fā)視頻分析業(yè)務(wù)
評估工具159
7.1 綜述159
7.2 Linux 環(huán)境搭建160
7.2.1 安裝依賴軟件包160
7.2.2 升級Linux 內(nèi)核161
7.2.3 安裝集成顯卡固件162
7.2.4 安裝OpenVINO162
7.2.5 安裝OpenCL驅(qū)動(dòng)163
7.2.6 準(zhǔn)備測試的視頻165
7.2.7 運(yùn)行SVET程序165
7.2.8 SVET參考程序參數(shù)
配置167
7.3 Windows環(huán)境搭建168
7.3.1 安裝依賴軟件包168
7.3.2 編譯SVET參考程序和
依賴庫170
7.3.3 下載推理所需模型和
測試視頻175
7.3.4 運(yùn)行多路視頻推理176
7.4 核心視頻業(yè)務(wù)179
7.4.1 NVR業(yè)務(wù)180
7.4.2 AI視頻分析業(yè)務(wù)181
7.4.3 MCU轉(zhuǎn)碼拼接業(yè)務(wù)185
7.5 本章小結(jié)187
第8章 編解碼實(shí)現(xiàn)188
8.1 低功耗快速編碼188
8.2 低延遲編解碼192
8.3 碼率控制194
8.3.1 恒定量化系數(shù)算法195
8.3.2 恒定碼率算法和可變
碼率算法196
8.3.3 前向預(yù)測算法199
8.3.4 智能恒定質(zhì)量算法201
8.3.5 質(zhì)量可定義的可變碼
率算法202
8.4 動(dòng)態(tài)碼率控制202
8.5 精確控制每一幀圖像編碼的
量化系數(shù)203
8.6 多個(gè)IDR幀視頻流的解碼過程205
8.7 強(qiáng)制生成關(guān)鍵幀206
8.8 參考幀的動(dòng)態(tài)選擇206
8.9 參考幀添加重復(fù)信息207
8.10 長期參考幀208
8.11 可分層視頻編碼例程實(shí)現(xiàn)209
8.12 本章小結(jié)211
第9章 拼接顯示實(shí)現(xiàn)212
9