FFmpeg 入門詳解 — SDK 二次開發與直播美顏原理及應用

梅會東

  • FFmpeg 入門詳解 — SDK 二次開發與直播美顏原理及應用-preview-1
  • FFmpeg 入門詳解 — SDK 二次開發與直播美顏原理及應用-preview-2
  • FFmpeg 入門詳解 — SDK 二次開發與直播美顏原理及應用-preview-3
FFmpeg 入門詳解 — SDK 二次開發與直播美顏原理及應用-preview-1

買這商品的人也買了...

商品描述

本書系統講解了FFmpeg SDK二次開發及直播美顏的基礎理論及應用,包括FFmpeg各大核心組件,包括音視頻轉封裝、轉碼、濾鏡、音頻重採樣、視頻縮放等,包括讀取攝像頭和話筒,包括流媒體直播推流等功能。在本書的最後一章,介紹了OpenCV的圖像特效處理,並結合FFmpeg進行直播推流。本書為FFmpeg音視頻流媒體系列的第四部,前三部分別是《FFmpeg入門詳解——音視頻原理及應用》《FFmpeg入門詳解——流媒體直播原理及應用》和《FFmpeg入門詳解——命令行及音視頻特效原理及應用》。 全書共分為13章,系統講解了FFmpeg源碼編譯及環境搭建的基礎知識、轉封裝與轉碼、過濾器、音視頻採集功能、音頻重採樣、視頻縮放、流媒體直播等功能,並結合OpenCV進行圖像特效處理等。 書中包含大量的示例,圖文並茂,爭取讓一個音視頻流媒體領域的讀者真正入門,從此開啟流媒體直播編程的大門。本書知識體系比較完整,側重FFmpeg SDK二次開發及直播美顏的原理講解及應用。建議讀者先學習FFmpeg音視頻流媒體系列的前3部,然後來學習本書。本書的講解過程由淺入深,讓讀者在不知不覺中學會了FFmpeg SDK二次開發的基礎知識,並能動手實現各種轉碼功能、音視頻特效處理、並能實現流媒體直播功能。 本書可作為FFmpeg SDK二次開發、音視頻特效處理及流媒體直播方向的入門書籍,也可作為高年級本科生和研究生的學習參考書籍。

目錄大綱

 

目錄

 

 

 

 

第1章編譯FFmpeg源碼並搭建開發環境

 

1.1FFmpeg源碼簡介

 

1.2Windows平臺下編譯FFmpeg 5.0源碼

 

1.2.1MinGW簡介

 

1.2.2安裝MSYS2

 

1.2.3更新MSYS2

 

1.2.4Pacman使用命令

 

1.2.5在MSYS2安裝依賴項

 

1.2.6使用MSVC工具鏈來編譯FFmpeg 5.0+Libx264+Libx265

 

1.2.7使用MinGW64工具鏈來編譯FFmpeg 5.0+Libx264

 

1.3Linux平臺下編譯FFmpeg 5.0源碼

 

1.4搭建FFmpeg的Qt開發環境

 

1.5搭建FFmpeg的VS開發環境

 

1.6Linux下使用GCC編譯FFmpeg的程序

 

第2章把控FFmpeg骨架: “八大金剛”核心開發庫

 

2.1FFmpeg八大核心開發庫 

 

2.2libavutil庫簡介

 

2.3libavformat簡介

 

2.4libavcodec庫簡介

 

2.5libpostproc庫簡介

 

2.6libavdevice庫簡介

 

2.7libavfilter庫簡介

 

2.8libswresample庫簡介

 

2.9libswscale庫簡介

 

第3章夯實FFmpeg基礎: 重要數據結構及API

 

3.1FFmpeg的讀者入門案例

 

3.1.1初識FFmpeg的API

 

3.1.2FFmpeg的解碼及播放流程

 

3.1.3使用FFmpeg解封裝並讀取流信息的案例

 

3.2FFmpeg的經典數據結構 

 

3.2.1使用FFmpeg進行解碼的10個經典結構體

 

3.2.2AVPacket與AVFrame

 

3.3協議層的三大重要數據結構

 

3.4封裝層的四大重要數據結構

 

3.5編解碼層的三大重要數據結構

 

3.6FFmpeg的重要API函數

 

3.7Ubuntu下編譯並運行解封裝案例

 

第4章精通FFmpeg框架流程: 擊鼓傳花之責任鏈設計模式

 

4.1擊鼓傳花之責任鏈設計模式簡介

 

4.2FFmpeg的框架原理及流程分析

 

4.3FFmpeg的解碼流程分析

 

4.4FFmpeg的編碼流程分析

 

4.5FFmpeg的轉碼流程分析

 

4.5.1FFmpeg轉碼流程簡介

 

4.5.2FFmpeg的兩種轉碼方式

 

4.5.3基於RTP傳輸的FFmpeg轉碼應用

 

4.5.4FFmpeg轉碼流程小結

 

4.5.5視頻文件轉碼流程案例分析

 

第5章AVUtil通用工具層理論及案例實戰

 

5.1AVUtil庫及相關API簡介

 

5.2AVLog應用案例及剖析

 

5.3AVParseUtil應用案例及剖析

 

5.4AVDictionary應用案例及剖析

 

5.5AVOption應用案例及剖析

 

第6章AVProtocol協議層理論及案例實戰

 

6.1協議層AVIO的流程及數據結構

 

6.2AVIO案例實戰之打開本地文件

 

6.3AVIO案例實戰之打開網絡直播流

 

6.4內存IO模式之自定義AVIO案例實戰

 

6.5內存映射文件技術

 

第7章AVFormat封裝層理論及案例實戰

 

7.1封裝格式原理分析 

 

7.1.1視頻封裝格式簡介

 

7.1.2使用FFmpeg處理音視頻的封裝與解封裝

 

7.2封裝層的重要API函數簡介

 

7.3FFmpeg解封裝案例實戰

 

7.4FFmpeg封裝格式之時間基與時間刻度

 

7.5FFmpeg解封裝後直接存儲AVPacket

 

7.6FFmpeg轉封裝案例實戰

 

第8章AVCodec編解碼層理論及案例實戰

 

8.1編解碼原理流程及API解析

 

8.2解碼流程與案例實戰

 

8.3編程流程與案例實戰

 

8.4FFmpeg編解碼與時間基詳解

 

第9章AVFilter過濾器層理論及案例實戰

 

9.1過濾器層的架構原理解析

 

9.1.1FFmpeg包含濾鏡的轉碼流程

 

9.1.2FFmpeg責任鏈模式簡介

 

9.1.3簡單濾鏡和復雜濾鏡之間的區別

 

9.1.4FFmpeg濾鏡流程圖

 

9.1.5濾鏡圖、濾鏡鏈、濾鏡之間的關系

 

9.1.6FFmpeg濾鏡相關的重要結構體

 

9.2DirectShow框架原理與流程解析

 

9.3FFmpeg過濾器層的重要API解析

 

9.3.1FFmpeg中使用過濾器的步驟

 

9.3.2AVFilter的API

 

9.4FFmpeg過濾器案例實戰

 

9.4.1FFmpeg命令行方式體驗過濾器

 

9.4.2FFmpeg的API方式實現過濾器

 

第10章SWResample音頻重採樣理論及案例實戰

 

10.1音頻重採樣簡介

 

10.1.1音頻基礎

 

10.1.2PCM簡介

 

10.1.3PCM重採樣

 

10.1.4C語言實現PCM重採樣

 

10.2SWResample庫結構簡介

 

10.2.1FFmpeg與PCM格式

 

10.2.2Packed和Planar的區別

 

10.2.3音頻播放時間計算

 

10.2.4C語言分離左右聲道

 

10.2.5lswr的使用流程及API簡介

 

10.3SWResample音頻重採樣案例實戰

 

10.3.1SwrContext使用步驟解析

 

10.3.2使用lswr實現PCM重採樣案例實戰

 

10.3.3Packed模式轉Planar模式

 

第11章SWScale圖像縮放與顏色空間轉換

 

11.1色彩空間轉換的原理簡介

 

11.2SWScale庫結構簡介

 

11.3SWScale圖片色彩空間轉換案例實戰

 

第12章AVDevice設備讀寫理論及案例實戰

 

12.1AVDevice的使用步驟及API解析

 

12.2AVDevice的API方式採集本地攝像頭獲取的數據

 

12.3VMWare中的Ubuntu採集本地攝像頭獲取的數據

 

12.4AVDevice的API方式採集話筒獲取的數據

 

12.5FFmpeg讀取網絡視頻流並解碼為YUV

 

12.6給攝像頭實時添加水印後編碼為H.264

 

第13章FFmpeg直播綜合案例實戰

 

13.1直播系統架構及流程簡介

 

13.2流媒體服務器的搭建

 

13.3FFmpeg進行RTMP直播推流

 

13.4兩個C++封裝類的小結

 

13.5OpenCV4基礎操作及磨皮美顏

 

13.6OpenCV4磨皮美顏並結合FFmpeg直播推流