FFmpeg 開發實戰:從零基礎到短視頻上線

歐陽燊

  • 出版商: 清華大學
  • 出版日期: 2024-02-01
  • 售價: $774
  • 貴賓價: 9.5$735
  • 語言: 簡體中文
  • ISBN: 7302651760
  • ISBN-13: 9787302651765
  • 相關分類: Computer Graphics
  • 立即出貨

  • FFmpeg 開發實戰:從零基礎到短視頻上線-preview-1
  • FFmpeg 開發實戰:從零基礎到短視頻上線-preview-2
  • FFmpeg 開發實戰:從零基礎到短視頻上線-preview-3
FFmpeg 開發實戰:從零基礎到短視頻上線-preview-1

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

商品描述

《FFmpeg開發實戰:從零基礎到短視頻上線》是一本FFmpeg開發的實戰教程,由淺入深,由基礎到高級,帶領讀者一步一步走進音視頻開發的神奇世界。全書共分為12章。其中,第1~5章是基礎部分,主要講解FFmpeg的環境搭建、FFmpeg的開發基礎、FFmpeg的編解碼、FFmpeg處理圖像和FFmpeg處理音頻;第6~10章是進階部分,主要講解FFmpeg加工視頻、FFmpeg添加圖文、FFmpeg自定義濾鏡、FFmpeg混合音視頻和FFmpeg播放音視頻;第11和12章是平臺應用部分,主要講解FFmpeg的桌面開發和FFmpeg的移動開發。本書在講解FFmpeg知識點的同時給出了大量實戰範例,方便讀者迅速將所學的知識運用到音視頻開發中。通過本書的學習,讀者能夠掌握音視頻開發的基本技術,包括音視頻查看、音視頻轉換、音視頻播放、音視頻剪輯、視頻推拉流等。 《FFmpeg開發實戰:從零基礎到短視頻上線》適用於廣大從事FFmpeg開發的專業人士、有志於轉型FFmpeg開發的程序員以及對FFmpeg開發有興趣的業餘愛好者,也可作為大中專院校和培訓機構音視頻課程的教材。

目錄大綱

目    錄

 

 

第 1 章  FFmpeg環境搭建 1

1.1  FFmpeg簡介 1

1.1.1  FFmpeg是什麽 1

1.1.2  FFmpeg的用途 1

1.1.3  FFmpeg的發展歷程 2

1.2  Linux系統安裝FFmpeg 2

1.2.1  Linux開發機配置要求 2

1.2.2  安裝已編譯的FFmpeg及其SO庫 3

1.2.3  自行編譯與安裝FFmpeg 5

1.3  在Windows系統下安裝FFmpeg 10

1.3.1  Windows開發機配置要求 10

1.3.2  安裝依賴的Windows軟件 10

1.3.3  安裝已編譯的FFmpeg及其DLL庫 15

1.4  FFmpeg的開發框架 17

1.4.1  可執行程序 18

1.4.2  動態鏈接庫 21

1.4.3  第一個FFmpeg程序 23

1.5  小結 26

第 2 章  FFmpeg開發基礎 27

2.1  音視頻的編碼標準 27

2.1.1  音視頻編碼的發展歷程 27

2.1.2  音視頻文件的封裝格式 29

2.1.3  國家數字音視頻標準AVS 31

2.2  FFmpeg的主要數據結構 34

2.2.1  FFmpeg的編碼與封裝 35

2.2.2  FFmpeg的數據包樣式 37

2.2.3  FFmpeg的過濾器類型 39

2.3  FFmpeg查看音視頻信息 41

2.3.1  打開與關閉音視頻文件 41

2.3.2  查看音視頻的信息 42

2.3.3  查看編解碼器的參數 45

2.4  FFmpeg常見的處理流程 47

2.4.1  復制編解碼器的參數 47

2.4.2  創建並寫入音視頻文件 51

2.4.3  使用濾鏡加工音視頻 54

2.5  小結 58

第 3 章  FFmpeg的編解碼 59

3.1  音視頻時間 59

3.1.1  幀率和採樣率 59

3.1.2  時間基準的設定 62

3.1.3  時間戳的計算 64

3.2  分離音視頻 67

3.2.1  原樣復制視頻文件 67

3.2.2  從視頻文件剝離音頻流 70

3.2.3  切割視頻文件 72

3.3  合並音視頻 74

3.3.1  合並視頻流和音頻流 74

3.3.2  對視頻流重新編碼 76

3.3.3  合並兩個視頻文件 82

3.4  視頻瀏覽與格式分析 85

3.4.1  通用音視頻播放器 86

3.4.2  視頻格式分析工具 88

3.4.3  把原始的H264文件封裝為MP4格式 90

3.5  小結 92

第 4 章  FFmpeg處理圖像 93

4.1  YUV圖像 93

4.1.1  為什麽要用YUV格式 93

4.1.2  把視頻幀保存為YUV文件 98

4.1.3  YUV圖像瀏覽工具 100

4.2  JPEG圖像 106

4.2.1  為什麽要用JPEG格式 106

4.2.2  把視頻幀保存為JPEG圖片 107

4.2.3  圖像轉換器 110

4.3  其他圖像格式 112

4.3.1  把視頻幀保存為PNG圖片 113

4.3.2  把視頻幀保存為BMP圖片 116

4.3.3  把視頻保存為GIF動畫 119

4.4  實戰項目:圖片轉視頻 124

4.5  小結 131

第 5 章  FFmpeg處理音頻 132

5.1  PCM音頻 132

5.1.1  為什麽要用PCM格式 132

5.1.2  把音頻流保存為PCM文件 135

5.1.3  PCM波形查看工具 139

5.2  MP3音頻 142

5.2.1  為什麽要用MP3格式 142

5.2.2  Linux環境集成mp3lame 144

5.2.3  把音頻流保存為MP3文件 145

5.3  其他音頻格式 148

5.3.1  把音頻流保存為WAV文件 148

5.3.2  把音頻流保存為AAC文件 152

5.3.3  音頻重採樣 158

5.4  實戰項目:拼接兩段音頻 163

5.5  小結 168

第 6 章  FFmpeg加工視頻 169

6.1  濾波加工 169

6.1.1  簡單的視頻濾鏡 169

6.1.2  簡單的音頻濾鏡 176

6.1.3  利用濾鏡切割視頻 182

6.1.4  給視頻添加方格 185

6.2  添加特效 188

6.2.1  轉換圖像色度坐標 188

6.2.2  添加色彩轉換特效 192

 

6.2.3  調整明暗對比效果 195

6.2.4  添加淡入淡出特效 197

6.3  變換方位 199

6.3.1  翻轉視頻的方向 199

6.3.2  縮放和旋轉視頻 200

6.3.3  裁剪和填充視頻 202

6.4  實戰項目:老電影懷舊風 204

6.5  小結 206

第 7 章  FFmpeg添加圖文 207

7.1  添加圖標 207

7.1.1  添加圖片標志 207

7.1.2  清除圖標區域 209

7.1.3  利用調色板生成GIF動畫 211

7.2  添加文本 214

7.2.1  Linux環境安裝FreeType 214

7.2.2  添加英文文本 216

7.2.3  添加中文文本 218

7.3  添加字幕 221

7.3.1  Linux環境安裝libass 221

7.3.2  Linux安裝中文字體 225

7.3.3  添加中文字幕 226

7.4  實戰項目:卡拉OK音樂短片 229

7.4.1  視頻字幕製作工具 229

7.4.2  製作卡拉OK字幕 233

7.5  小結 237

第 8 章  FFmpeg自定義濾鏡 238

8.1  Windows環境編譯FFmpeg 238

8.1.1  給FFmpeg集成x264 238

8.1.2  給FFmpeg集成avs2 241

8.1.3  給FFmpeg集成mp3lame 243

8.1.4  給FFmpeg集成FreeType 245

8.1.5  給FFmpeg集成x265 248

8.2  優化FFmpeg源碼 255

8.2.1  讀寫音視頻文件的元數據 255

8.2.2  元數據的中文亂碼問題處理 258

 

8.2.3  修改FFmpeg源碼解決亂碼 262

8.3  自定義視頻濾鏡 265

8.3.1  添加模糊和銳化特效 265

8.3.2  視頻濾鏡的代碼分析 267

8.3.3  自定義視頻翻轉濾鏡 269

8.4  實戰項目:側邊模糊濾鏡 271

8.4.1  實現兩側模糊邏輯 271

8.4.2  集成側邊模糊濾鏡 275

8.5  小結 277

第 9 章  FFmpeg混合音視頻 278

9.1  多路音頻 278

9.1.1  同時過濾視頻和音頻 278

9.1.2  利用多通道實現混音 281

9.1.3  給視頻添加背景音樂 289

9.2  多路視頻 293

9.2.1  通過疊加視頻實現畫中畫 293

9.2.2  多路視頻實現四宮格效果 302

9.2.3  透視兩路視頻的混合畫面 307

9.3  轉場動畫 311

9.3.1  給視頻添加轉場動畫 311

9.3.2  轉場動畫的代碼分析 314

9.3.3  自定義斜邊轉場動畫 317

9.4  實戰項目:翻書轉場動畫 322

9.4.1  貝塞爾曲線實現翻頁特效 322

9.4.2  集成翻書轉場動畫效果 326

9.5  小結 329

第 10 章  FFmpeg播放音視頻 330

10.1  通過SDL播放音視頻 330

10.1.1  FFmpeg集成SDL 330

10.1.2  利用SDL播放視頻 335

10.1.3  利用SDL播放音頻 342

10.2  FFmpeg推流和拉流 346

10.2.1  什麽是推拉流 346

10.2.2  FFmpeg向網絡推流 350

10.2.3  FFmpeg從網絡拉流 353

10.3  SDL處理線程間同步 355

10.3.1  SDL的線程 355

10.3.2  SDL的互斥鎖 357

10.3.3  SDL的信號量 360

10.4  實戰項目:同步播放音視頻 367

10.4.1  同步音視頻的播放時鐘 367

10.4.2  優化音視頻的同步播放 371

10.5  小結 376

第 11 章  FFmpeg的桌面開發 377

11.1  搭建Qt開發環境 377

11.1.1  安裝桌面開發工具Qt 377

11.1.2  創建一個基於C++的Qt項目 381

11.1.3  把Qt項目打包成可執行文件 383

11.2  桌面程序播放音頻 385

11.2.1  給Qt工程集成FFmpeg 385

11.2.2  Qt工程使用SDL播放音頻 387

11.2.3  通過QAudioSink播放音頻 392

11.3  桌面程序播放視頻 396

11.3.1  通過QImage播放視頻 396

11.3.2  OpenGL的著色器小程序 404

11.3.3  使用OpenGL播放視頻 407

11.4  實戰項目:桌面影音播放器 411

11.5  小結 415

第 12 章  FFmpeg的移動開發 416

12.1  搭建Android開發環境 416

12.1.1  搭建Android的NDK開發環境 416

12.1.2  交叉編譯Android需要的SO庫 420

12.1.3  App工程調用FFmpeg的SO庫 421

12.2  App通過FFmpeg播放音頻 427

12.2.1  交叉編譯時集成mp3lame 427

12.2.2  通過AudioTrack播放音頻 429

12.2.3  使用OpenSL ES播放音頻 432

12.3  App通過FFmpeg播放視頻 439

12.3.1  交叉編譯時集成x264和FreeType 439

12.3.2  通過ANativeWindow播放視頻 443

12.3.3  使用OpenGL ES播放視頻 449

12.4  實戰項目:仿剪映的視頻剪輯 455

12.5  小結 461

附錄A  音視頻專業術語索引 462