《FFmpeg開發實戰:從零基礎到短視頻上線》是2024年清華大學出版社出版的圖書,作者是歐陽燊。
基本介紹
- 中文名:FFmpeg開發實戰:從零基礎到短視頻上線
- 作者:歐陽燊
- 出版時間:2024年2月
- 出版社:清華大學出版社
- ISBN:9787302651765
- 定價:129 元
內容簡介,圖書目錄,
內容簡介
《FFmpeg開發實戰:從零基礎到短視頻上線》是一本FFmpeg開發的實戰教程,由淺入深,由基礎到高級,帶領讀者一步一步走進音視頻開發的神奇世界。全書共分為12章。其中,第1~5章是基礎部分,主要講解FFmpeg的環境搭建、FFmpeg的開發基礎、FFmpeg的編解碼、FFmpeg處理圖像和FFmpeg處理音頻;第6~10章是進階部分,主要講解FFmpeg加工視頻、FFmpeg添加圖文、FFmpeg自定義濾鏡、FFmpeg混合音視頻和FFmpeg播放音視頻;第11和12章是平台套用部分,主要講解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