新到貨2本75折
FFmpeg音視頻開發基礎與實戰

FFmpeg音視頻開發基礎與實戰

  • 定價:648
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

全書內容分為三部分,共15章。第1~6章為第一部分,主要講解音視頻開發的基礎知識,簡要介紹音視頻技術的發展背景,以及主流的音視訊壓縮編碼演算法、音視頻容器格式和網路流媒體協定等。第7~9章為第二部分,主要講解命令列工具ffmpeg、ffprobe和ffplay的使用方法,包括如何使用這些工具進行視頻播放、格式檢測、編轉碼、格式轉換和流媒體推拉流等操作;第10~15章為第三部分,主要講解基於FFmpegSDK的開發實戰,主要介紹如何在工程中調用libavcodec和libavformat等庫提供的介面實現音視頻處理的相關功能。
 
本書適合從事音視頻編解碼、多媒體應用開發和流媒體技術的初、中級開發者,以及各大院校學生閱讀,也適合有一定經驗的開發人員參考使用。
 

作者介紹

殷汶傑
 
2013年畢業於上海大學資訊與通信工程學院,主要研究方向為視訊壓縮編碼、流媒體技術,其間發表了多篇高水準學術論文。具有多家一線互聯網上市公司、世界五百強企業與行業獨角獸公司的核心開發工作經驗,成功申請了多項專利(其中一項國際專利)。發表了數百篇技術博客,並發佈了多個線上教學課程,在行業內具有較強的技術影響力。
 

目錄

第一部分基礎知識
第1章音視頻技術概述.2
1.1音視頻資訊與多媒體系統2
1.1.1資訊傳輸系統的發展.2
1.1.2資訊時代的音視頻技術.4
1.1.3音視頻技術的未來展望.5
1.2典型的音視頻與多媒體系統結構6
1.2.1視頻點播.7
1.2.2視頻直播.8
1.2.3安防監控.9
1.2.4視訊會議.9

第2章圖像、圖元與顏色空間.11
2.1圖像與圖元11
2.2圖像的位元深與顏色空間12
2.2.1圖像的位元深.12
2.2.2圖像的顏色空間.14
2.3圖像壓縮編碼15
2.3.1圖像壓縮演算法分類.16
2.3.2圖像壓縮基本演算法.16
2.3.3常見的圖像壓縮編碼格式.20

第3章視訊壓縮編碼22
3.1視訊壓縮編碼的基礎知識22
3.1.1視頻資訊的數位化表示.22
3.1.2常用的視頻格式與解析度.24
3.1.3對視頻資料壓縮編碼的原因24
3.2視訊壓縮編碼標準的發展歷程24
3.3視訊壓縮編碼的基本原理25
3.3.1視頻資料中的冗餘資訊.25
3.3.2預測編碼.26
3.3.3變換編碼.27
3.3.4熵編碼.28
3.4視頻編碼標準H.264.28
3.4.1H.264簡介28
3.4.2H.264的框架28
3.4.3H.264的基本演算法.30
3.5高效視頻編碼標準H.26533
3.5.1H.265簡介33
3.5.2H.265的框架33
3.5.3H.265的基本演算法.35

第4章音訊壓縮編碼42
4.1音訊壓縮編碼的基礎知識42
4.1.1聲音資訊的概念.42
4.1.2聲音資訊的基本要素.42
4.2音訊資訊採樣與數位化43
4.2.1模擬音訊.43
4.2.2數位音訊.44
4.2.3採樣和量化.44
4.3脈衝碼調制46
4.3.1PCM量化區間分割46
4.3.2PCM量化編碼規則49
4.4MP3格式與MP3編碼標準51
4.4.1MP3格式.52
4.4.2MP3編碼標準.62
4.5AAC格式與AAC編碼標準.67
4.5.1AAC格式67
4.5.2AAC編碼標準72

第5章音視頻檔容器和封裝格式.74
5.1概述74
5.2FLV格式75
5.2.1FLV檔結構.75
5.2.2FLV文件頭.76
5.2.3FLV標籤.77
5.3MPEG-TS格式84
5.3.1資訊包頭.84
5.3.2PES包結構.85
5.3.3PSI結構.87
5.4MP4格式.88
5.4.1MP4格式簡介.88
5.4.2ISO協議族89
5.4.3MP4封裝格式.89
5.4.4Box類型90
5.4.5MP4檔結構.92
5.4.6構建視頻流的播放時間軸.98

第6章音視頻流媒體協定.104
6.1網路通訊協定模型105
6.1.1ISO/OSI模型結構105
6.1.2TCP/IP模型結構106
6.2網路流媒體協定——RTMP120
6.2.1RTMP的概念120
6.2.2RTMP分塊與塊流121
6.2.3RTMP資訊格式126
6.2.4RTMP資訊與命令129
6.3網路流媒體協定——HLS協定136
6.3.1HLS協議的概念.136
6.3.2HLS直播流媒體系統結構.136
6.3.3HLS索引檔案格式.138

第二部分命令列工具
7章FFmpeg的基本操作144
7.1FFmpeg概述144
7.1.1各個編譯類型的區別.145
7.1.2編譯FFmpeg原始程式碼148
7.2ffplay的基本使用方法155
7.2.1顯示ffplay版本155
7.2.2顯示編譯選項.156
7.2.3設置日誌級別.156
7.2.4全屏播放.158
7.2.5指定輸入視頻的寬、高和幀率158
7.2.6禁用音訊流、視頻流和字幕流158
7.2.7指定播放的起始時間和時長159
7.2.8指定播放音量.159
7.2.9設置播放視窗.159
7.3ffprobe的基本使用方法159
7.3.1顯示詳細的封裝格式資訊.160
7.3.2顯示每一路媒體流資訊.161
7.3.3顯示每一個碼流包的資訊.164
7.3.4顯示媒體流和碼流包的負載資訊165
7.3.5顯示每一幀圖像的資訊.167
7.3.6指定檢測資訊的輸出格式.169
7.4ffmpeg的基本使用方法175
7.4.1顯示版本和編譯配置資訊.176
7.4.2顯示支援的解複用器格式.177
7.4.3顯示支援的複用器格式.179
7.4.4顯示支援的所有輸入格式和輸出格式181
7.4.5顯示支援的解碼器.183
7.4.6顯示支援的編碼器.184
7.4.7顯示支援的媒體協定.186
7.4.8顯示支援的硬體加速框架.188
7.4.9ffmpeg封裝格式轉換.188
7.4.10視頻的解碼和編碼.193
7.4.11從視頻中截取圖像206
7.4.12ffmpeg視頻轉碼.207

第8章濾鏡圖.209
8.1ffmpeg音視頻濾鏡209
8.1.1簡單濾鏡圖.209
8.1.2複合濾鏡圖.210
8.1.3ffmpeg支持的濾鏡列表.211
8.2簡單濾鏡圖的應用212
8.2.1常用的視頻編輯簡單濾鏡圖212
8.2.2常用的音訊編輯簡單濾鏡圖227
8.3複合濾鏡圖的應用230
8.3.1常用的視頻編輯複合濾鏡圖230
8.3.2常用的音訊編輯複合濾鏡圖234

第9章流媒體應用236
9.1構建SRS流媒體服務.236
9.1.1部署RTMP流媒體服務.238
9.1.2部署HLS流媒體服務240
9.1.3部署HTTP-FLV流媒體服務.241
9.2構建NginxRTMP流媒體服務.241
9.2.1Nginx的編譯和部署242
9.2.2Nginx的流媒體模組nginx-rtmp-module246

第三部分開發實戰
第10章FFmpegSDK的使用.254
10.1使用CMake構建工程.255
10.1.1使用CMake構建HelloWorld工程255
10.1.2在工程中編譯並輸出多個檔257
10.1.3在工程中添加標頭檔和原始檔案目錄259
10.1.4在工程中引入動態庫.262
10.2FFmpegSDK基本使用方法示例:獲取目錄下的檔資訊.264
10.2.1顯示指定目錄資訊.264
10.2.2解析API和結構體.266

第11章使用FFmpegSDK進行視頻編解碼269
11.1libavcodec視頻編碼269
11.1.1主函數與資料I/O實現269
11.1.2視訊轉碼器初始化272
11.1.3編碼循環體284
11.1.4關閉編碼器289
11.1.5FFmpeg視頻編碼延遲分析.290
11.2libavcodec視頻解碼294
11.2.1主函數實現294
11.2.2視頻解碼器初始化295
11.2.3解碼循環體297
11.2.4關閉解碼器304

第12章使用FFmpegSDK進行音訊編解碼306
12.1libavcodec音訊編碼306
12.1.1主函數實現.306
12.1.2音訊編碼器初始化.307
12.1.3編碼循環體.310
12.1.4關閉編碼器.313
12.2libavcodec音訊解碼315
12.2.1主函數實現.315
12.2.2音訊解碼器初始化.316
12.2.3解碼循環體.318
12.2.4關閉解碼器.324

第13章使用FFmpegSDK進行音視頻檔的解封裝與封裝.326
13.1音視頻檔的解封裝326
13.1.1主函數實現.326
13.1.2解複用器初始化.327
13.1.3迴圈讀取碼流包資料.335
13.1.4釋放解複用器和解碼器.338
13.1.5主函數的整體實現.339
13.2音訊流與視頻流檔的封裝340
13.2.1主函數實現.340
13.2.2音視頻流複用器的初始化341
13.2.3複用音訊流和視頻流.348
13.2.4釋放複用器實例.353

第14章使用FFmpegSDK添加視頻濾鏡和音訊濾鏡355
14.1視頻濾鏡355
14.1.1主函數實現.355
14.1.2視頻濾鏡初始化.356
14.1.3迴圈編輯視頻幀.365
14.1.4銷毀視頻濾鏡.368
14.2音訊濾鏡370
14.2.1主函數框架.370
14.2.2音訊濾鏡初始化.371
14.2.3迴圈編輯音訊幀.380
14.2.4銷毀音訊濾鏡.381

第15章使用FFmpegSDK進行視頻圖像轉換與音訊重採樣.383
15.1視頻圖像轉換383
15.1.1主函數實現.383
15.1.2視頻格式轉換初始化.384
15.1.3視頻的圖像幀迴圈轉換.388
15.1.4視頻格式轉換結構的銷毀和釋放390
15.2音訊重採樣391
15.2.1主函數實現.392
15.2.2音訊重採樣初始化.392
15.2.3對音訊幀迴圈重採樣.397
15.2.4音訊重採樣結構的銷毀和釋放400
 

多年來,音視頻、多媒體技術一直以各種各樣的形式對社會產生深刻影響,從專業領域的廣播電視到消費領域的個人數位攝像機等這些都已融入人們生活的方方面面。進入互聯網時代,線上視頻、短視頻等娛樂場景,以及遠端會議、遠端醫療等專業應用進一步擴展了音視頻技術的應用領域,使其與現代文明的聯繫更加密不可分。
 
音視頻技術推動泛娛樂行業高速發展
 
從21世紀的最初幾年開始,線上視頻產業便漸漸開始興起。隨著寬頻網逐漸走入尋常百姓家,消費者們無須再忍受撥號網路緩慢的傳送速率,部分知名門戶網站(如搜狐等)也逐漸開始涉足線上視頻領域。此後,如樂視網、優酷網、土豆網、PPLive、PPS、酷6等線上視頻網站層出不窮,再加上背靠互聯網巨頭公司的騰訊視頻、愛奇藝等,國內線上視頻行業呈現百花齊放的場景。然而,隨著版權和頻寬等成本的日漸高漲,多數平臺逐漸沉寂,最終形成了“愛(奇異)優(酷視頻)騰(訊視頻)”三足鼎立的格局。此外,如Acfun和bilibili等二次元主題網站和芒果TV等以綜藝為特色的平臺也在各自的領域逐漸擴大了影響力。
 
在視頻網站平臺的發展起起伏伏之際,另一種線上視頻娛樂的形態——網路互動直播開始異軍突起。直播本是歷史最悠久的視頻應用之一,多年以來廣電領域的數位電視廣播、閉路電視系統一直是直播系統的最典型應用。進入互聯網時代,直播的整體形態與產品細節與傳統的閉路電視系統相比發生了翻天覆地的變化,最典型的升級是從主播到觀眾的單方面放送,轉變為主播與觀眾的雙向互動,如通過彈幕或連麥等方式。網路互動直播從萌芽到興起,到最為繁榮的“千播大戰”,直到最終經歷多次的兼併和淘汰,其中的倖存者已經寥寥無幾。當前仍較為活躍的直播平臺有頭部的鬥魚、虎牙和主要用於帶貨的淘寶直播和京東直播等。
 
除中、長視頻外,隨著以智慧手機為代表的移動智慧設備的日漸普及,短視頻作為一項新的業務形態逐漸佔據了消費者的碎片時間。通常認為短視頻起源自本世紀早期的微電影、網路短片和校園DV等形態,伴隨著各種UGC視頻平臺的蓬勃發展而越發興盛。但由於平臺的定位、資本及政策等的多重影響,多數平臺在曇花一現後迅速消失在市場中,甚至騰訊旗下的微視也難逃被雪藏多年的命運。在智慧移動設備全面進入人們的生活後,通過移動設備進行“短、平、快”風格的內容分享重新點燃了短視頻行業的星星之火,低成本、快節奏的短視頻拍攝成為人們分享生活和觀點的重要手段。今天,以抖音和快手為代表的移動短視頻平臺憑藉其豐富的內容和對使用者心理與喜好的研究在用戶中產生了巨大影響,成為當前基於音視頻的泛娛樂場景中新的一極。
 
音視頻技術給商務與辦公領域帶來新生命
 
目前,遠端辦公已成為必然選擇。當前市場上多家科技企業發佈了多款遠端辦公產品軟體或一體式解決方案,典型的有Microsoft的Teams、Google的GoogleMeet、騰訊的騰訊會議、位元組跳動的飛書、阿裡巴巴的釘釘和Zoom的同名產品Zoom等。這些產品的共同特點是基於互聯網、雲計算等技術,集成了電子郵件、電子白板、遠端連接與桌面共用等模組,旨在為異地辦公的員工和團隊提供強大而可靠的交流和共用服務。構建一個穩定而完備的遠端辦公系統需要多個不同的系統精密配合,而即時音視頻通信可謂其中技術最為複雜、挑戰最大的模組之一,其穩定性和性能直接決定了系統整體的性能與使用者體驗。
 
目前主流的即時音視頻通信解決方案主要基於WebRTC標準。與傳統的RTMP+CDN系統相比,基於WebRTC的方案延遲更低,卡頓情況更少,且支援直接接入流覽器進行推流與播放。音視頻技術具有廣闊的發展前景和學習價值從上述音視頻應用的發展歷史我們可以看出,音視頻技術始終在行業內佔據重要地位。從線上視頻網站到互動直播,再到短視頻與即時音視頻通信,當音視頻領域在某一個行業發展到頂峰,甚至隨後開始逐漸衰落時,也總是有另一個風口異軍突起成功接棒。究其原因在於,音視頻由於具有可以生動形象地攜帶大量資訊,且易於被人們快速理解的特性,已成為資訊傳輸效率最高的通信媒介。幾乎所有的商業形態都可以通過音視頻技術實現資訊的快速理解與交換,實現效率的倍增。因此,近年來無論社會如何發展變化,音視頻領域依然以朝陽產業的面貌蓬勃發展。
 
另一方面,音視頻技術是軟體程式設計的一項高階技術,具有較高的准入門檻。一名優秀的音視頻工程師應當從原理到實踐做到融會貫通,至少需要掌握以下領域的知識與技能:數學、資訊與編碼理論、電腦系統原理、演算法理論、程式設計語言(如C++、Java、Go等)、網路開發、跨平臺軟體發展(如移動端、服務端和用戶端)和系統架構設計等。
 
因此,音視頻技術的學習之路比普通的軟體發展之路更加艱難、漫長。而另一方面,這也成為音視頻領域技術人員最好的護城河,為行業內的開發者提供了深入沉澱的機會。
 
本書的價值
 
音視頻技術並不是一項可以輕鬆掌握的技術,為了解決這個問題,許多天才程式師貢獻了多項開源工程對音視頻開發的底層技術進行了封裝與集成,以提升整體的開發效率,FFmpeg便是其中的典型。作為最強大的音視頻開源專案之一,FFmpeg提供了音視頻的編碼與解碼、封裝與解封裝、推拉流和音視頻資料編輯等操作,遮罩了許多底層技術細節,使得開發者可以將更多的精力專注在業務邏輯的實現上,大幅提升了開發如播放機、推流、音視頻編輯等用戶端或SDK等產品的效率。
 
儘管如此,對初學者來說,FFmpeg提供的命令列工具和SDK的使用方法仍然較為困難。除音視頻的基本概念外,繁冗複雜的命令列參數與API常常讓初學者無從下手,除官方提供的文檔外,幾乎沒有完備的技術資料可供參考。本書系統地講解了音視頻領域的基礎知識,並由淺入深地介紹了FFmpeg的基本使用方法,筆者希望本書的面世可以進一步降低音視頻開發的入門門檻,讓更多有志於從事音視頻開發的同學可以為整個行業添磚加瓦。
 
本書的內容及學習方法
 
本書內容分為三部分,各部分之間的內容相互關聯但又相對獨立,讀者可以根據自身的需求按順序閱讀或選擇性學習。
 
◎第1~6章為本書的第一部分,主要講解音視頻技術的基礎知識,包括音視頻編碼與解碼標準、媒體容器的封裝格式和網路流媒體協定簡介。建議對音視頻技術不夠熟悉的讀者從該部分開始閱讀,有一定基礎的讀者可以選擇泛讀或跳過該部分。
 
◎第7~9章為本書的第二部分,主要講解命令列工具ffmpeg、ffprobe和ffplay的主要使用方法。命令列工具在搭建測試環境、構建測試用例和排查系統Bug時常常起到重要作用。如果想要在實際工作中有效提升工作效率,那麼應熟練掌握FFmpeg命令列工具的使用方法。
 
◎第10~15章為本書的第三部分,主要講解如何使用libavcodec、libavformat等FFmpegSDK進行編碼與解碼、封裝與解封裝,以及媒體資訊編輯等音視頻基本功能開發的方法。在實際的企業級音視頻專案中,通常採用調用FFmpeg相關的API而非使用命令列工具的方式實現最基本的功能,因此該部分內容具有較強的實踐意義,推薦所有讀者閱讀並多加實踐。此部分的代碼實現基本來自FFmpeg官方文檔中的示例代碼,筆者在此基礎上進行了一定的改編。書中代碼整體上遵循了示例代碼的指導,穩定性較強,且更易於理解。
 
由於本書內容較為繁雜,且筆者在撰寫稿件的同時仍承擔繁重的一線開發任務,因此書中極有可能出現部分疏漏或錯誤,望廣大讀者閱讀後不吝指正,提出寶貴的意見或建議。
 
致謝
自本書初步策劃開始,截至今日已一年有餘。這是我第一次獨立撰寫書稿,其間所經歷的困難甚至痛苦不言而喻。最終初稿得以完成,首先必須感謝我的伴侶,在本書定稿的過程中,你完成了身份從女朋友到妻子的升級,沒有你的支持,本書斷無問世的可能。此外還必須感謝我的父母,你們的關愛、期望與督促,也是本書問世的源動力之一。感謝博文視點的編輯老師,你們的專業程度一直令我嘆服。沒有你們從開始到最終的指導和幫助,本書是一定無法完成的。感謝各個技術交流群中的同行與朋友,以及我的博客與課程的讀者,有了你們的支持,我
才克服了所經歷的困難,將本書帶到你們的面前。
 
希望在不久的將來,能有更多更有價值的內容貢獻給大家,謝謝!
殷汶傑
 

詳細資料

  • ISBN:9787121425554
  • 規格:平裝 / 402頁 / 16k / 19 x 26 x 2.01 cm / 普通級 / 單色印刷 / 初版
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【自然科普、電腦資訊】《人類大歷史》作者哈拉瑞最新巨作《連結:從石器時代到AI紀元》,洞悉人類發展的急迫選擇
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 科學75折起
  • 799現折79
  • 紅樓夢