發表於2024-12-25
本書圍繞著音視頻處理的FFmpeg的發展過程、FFmpeg的組成、FFmpeg的命令行使用、FFmpeg的API使用等內容,由淺入深地介紹瞭使用FFmpeg進行音視頻處理的方法,並輔以大量實例,從而幫助對音視頻處理感興趣的讀者對FFmpeg有更多的瞭解。
通過閱讀本書,你將學到:
FFmpeg的曆史
FFmpeg的基本結構
FFmpeg的基本用法
使用FFmpeg進行日常的音視頻處理工作的方法
使用FFmpeg的API進行音視頻處理工作的細節
本書是一本介紹FFmpeg的實戰技術指南,全書共10章,分為兩個部分。部分(第1~7章)為FFmpeg的命令行使用篇,介紹瞭FFmpeg的基礎組成部分、FFmpeg工具使用、FFmpeg的封裝操作、FFmpeg的轉碼操作、FFmpeg的流媒體操作、FFmpeg的濾鏡操作、FFmpeg的設備操作。第二部分(第8~10章)為FFmpeg的API使用篇,介紹瞭FFmpeg封裝部分的API使用操作、FFmpeg編解碼部分的API使用操作,FFmpeg濾鏡部分的API使用操作,相關操作均以實例方式進行說明,包括新API及舊API的操作。
劉歧
FFmpeg官方代碼維護者之一,十餘年一綫技術研發與技術管理經驗,人稱“大師兄”。現任職於OnVideo公司, 擔任CTO,公司聯閤創立人,負責在綫音視頻雲編輯與創作平颱的開發和建設。曾任職藍汛、高升、金山雲等公司,擔任視頻部門架構師及技術專傢 。
趙文傑
擅長音視頻編解碼和渲染技術,客戶端技術專傢,開源流媒體服務器SRS開發者之一,現任好未來網校事業部高級架構師一職,負責端開發。
目 錄
本書贊譽
推薦序一
推薦序二
推薦序三
前言
第一部分 FFmpeg的命令行使用篇
第1章 FFmpeg簡介 2
1.1 FFmpeg的定義 2
1.2 FFmpeg的曆史 2
1.3 FFmpeg的基本組成 3
1.4 FFmpeg的編解碼工具ffmpeg 6
1.5 FFmpeg的播放器ffplay 9
1.6 FFmpeg的多媒體分析器ffprobe 9
1.7 FFmpeg編譯 11
1.7.1 FFmpeg之Windows平颱編譯 11
1.7.2 FFmpeg之Linux平颱編譯 13
1.7.3 FFmpeg之OS X平颱編譯 15
1.8 FFmpeg編碼支持與定製 16
1.8.1 FFmpeg的編碼器支持 24
1.8.2 FFmpeg的解碼器支持 25
1.8.3 FFmpeg的封裝支持 27
1.8.4 FFmpeg的解封裝支持 28
1.8.5 FFmpeg的通信協議支持 29
1.9 小結 29
第2章 FFmpeg工具使用基礎 30
2.1 ffmpeg常用命令 30
2.1.1 ffmpeg的封裝轉換 37
2.1.2 ffmpeg的轉碼參數 38
2.1.3 ffmpeg的基本轉碼原理 38
2.2 ffprobe常用命令 40
2.3 ffplay常用命令 50
2.3.1 ffplay常用參數 50
2.3.2 ffplay高級參數 53
2.3.3 ffplay的數據可視化分析應用 57
2.4 小結 59
第3章 FFmpeg 轉封裝 60
3.1 音視頻文件轉MP4格式 60
3.1.1 MP4格式標準介紹 61
3.1.2 MP4分析工具 76
3.1.3 MP4在FFmpeg中的Demuxer 79
3.1.4 MP4在FFmpeg中的Muxer 80
3.2 視頻文件轉FLV 84
3.2.1 FLV格式標準介紹 84
3.2.2 FFmpeg轉FLV參數 89
3.2.3 FFmpeg文件轉FLV舉例 89
3.2.4 FFmpeg生成帶關鍵索引的FLV 91
3.2.5 FLV文件格式分析工具 91
3.3 視頻文件轉M3U8 93
3.3.1 M3U8格式標準介紹 93
3.3.2 FFmpeg轉HLS參數 95
3.3.3 FFmpeg轉HLS舉例 96
3.4 視頻文件切片 105
3.4.1 FFmpeg切片segment參數 105
3.4.2 FFmpeg切片segment舉例 106
3.4.3 FFmpeg使用ss與t參數進行切片 110
3.5 音視頻文件音視頻流抽取 111
3.5.1 FFmpeg抽取音視頻文件中的AAC音頻流 111
3.5.2 FFmpeg抽取音視頻文件中的H.264視頻流 112
3.5.3 FFmpeg抽取音視頻文件中的H.265數據 113
3.6 係統資源使用情況 114
3.7 小結 115
第4章 FFmpeg轉碼 116
4.1 FFmpeg軟編碼H.264與H.265 116
4.1.1 x264編碼參數簡介 117
4.1.2 H.264編碼舉例 118
4.2 FFmpeg硬編解碼 130
4.2.1 Nvidia GPU硬編解碼 130
4.2.2 Intel QSV硬編碼 133
4.2.3 樹莓派硬編碼 137
4.2.4 OS X係統硬編解碼 139
4.3 FFmpeg輸齣MP3 141
4.3.1 MP3編碼參數介紹 141
4.3.2 MP3的編碼質量設置 142
4.3.3 平均碼率編碼參數ABR 144
4.4 FFmpeg輸齣AAC 145
4.4.1 FFmpeg中的AAC編碼器使用 145
4.4.2 FDK AAC第三方的AAC編解碼Codec庫 146
4.4.3 高質量AAC設置 148
4.4.4 AAC音頻質量對比 149
4.5 係統資源使用情況 149
4.6 小結 150
第5章 FFmpeg流媒體 151
5.1 FFmpeg發布與錄製RTMP流 151
5.1.1 RTMP參數說明 152
5.1.2 RTMP參數舉例 152
5.2 FFmpeg錄製RTSP流 159
5.2.1 RTSP參數說明 159
5.2.2 RTSP參數使用舉例 159
5.3 FFmpeg錄製HTTP流 163
5.3.1 HTTP參數說明 163
5.3.2 HTTP參數使用舉例 163
5.3.3 HTTP拉流錄製 166
5.3.4 拉取HTTP中的流錄製FLV 166
5.4 FFmpeg錄製和發布UDP / TCP流 166
5.4.1 TCP與UDP參數說明 166
5.4.2 TCP參數使用舉例 167
5.4.3 TCP/UDP使用小結 172
5.5 FFmpeg推多路流 173
5.5.1 管道方式輸齣多路流 173
5.5.2 tee封裝格式輸齣多路流 174
5.5.3 tee協議輸齣多路流 175
5.6 FFmpeg生成HDS流 176
5.6.1 HDS參數說明 177
5.6.2 HDS使用舉例 177
5.7 FFmpeg生成DASH流 179
5.7.1 DASH參數說明 180
5.7.2 DASH參數使用舉例 180
5.8 小結 181
第6章 FFmpeg濾鏡使用 182
6.1 FFmpeg濾鏡Filter描述格式 182
6.1.1 FFmpeg濾鏡Filter的參數排列方式 182
6.1.2 FFmpeg濾鏡Filter時間內置變量 183
6.2 FFmpeg為視頻加水印 183
6.2.1 文字水印 183
6.2.2 圖片水印 187
6.3 FFmpeg生成畫中畫 189
6.4 FFmpeg視頻多宮格處理 192
6.5 FFmpeg音頻流濾鏡操作 193
6.5.1 雙聲道閤並單聲道 193
6.5.2 雙聲道提取 194
6.5.3 雙聲道轉雙音頻流 195
6.5.4 單聲道轉雙聲道 196
6.5.5 兩個音頻源閤並雙聲道 197
6.5.6 多個音頻閤並為多聲道 198
6.6 FFmpeg音頻音量探測 199
6.6.1 音頻音量獲得 199
6.6.2 繪製音頻波形 200
6.7 FFmpeg為視頻加字幕 201
6.7.1 ASS字幕流寫入視頻流 201
6.7.2 ASS字幕流寫入封裝容器 202
6.8 FFmpeg視頻摳圖閤並 205
6.9 FFmpeg 3D視頻處理 206
6.9.1 stereo3d處理3D視頻 206
6.9.2 3D圖像轉換舉例 207
6.10 FFmpeg定時視頻截圖 208
6.10.1 vframe參數截取一張圖片 208
6.10.2 fps濾鏡定時獲得圖片 209
6.11 FFmpeg生成測試元數據 210
6.11.1 FFmpeg生成音頻測試流 210
6.11.2 FFmpeg生成視頻測試流 211
6.12 FFmpeg對音視頻倍速處理 212
6.12.1 atempo音頻倍速處理 212
6.12.2 setpts視頻倍速處理 213
6.13 小結 215
第7章 FFmpeg采集設備 216
7.1 FFmpeg中Linux設備操作 216
7.1.1 Linux下查看設備列錶 216
7.1.2 Linux采集設備fbdev參數說明 217
7.1.3 Linux采集設備fbdev使用舉例 217
7.1.4 Linux采集設備v4l2參數說明 218
7.1.5 Linux采集設備v4l2使用舉例 218
7.1.6 Linux采集設備x11grab參數說明 220
7.1.7 Linux采集設備x11grab使用舉例 220
7.2 FFmpeg中OS X設備操作 222
7.2.1 OS X下查看設備列錶 223
7.2.2 OS X下設備采集舉例 223
7.3 FFmpeg中Windows設備操作 227
7.3.1 FFmpeg使用dshow采集音視頻設備 227
7.3.2 FFmpeg使用vfwcap采集視頻設備 228
7.3.3 FFmpeg使用gdigrab采集窗口 229
7.4 小結 230
第二部分 FFmpeg的API使用篇
第8章 FFmpeg接口libavformat的使用 232
8.1 音視頻流封裝 232
8.2 音視頻文件解封裝 235
8.3 音視頻文件轉封裝 237
8.4 視頻截取 240
8.5 avio內存數據操作 242
8.6 小結 244
第9章 FFmpeg接口libavcodec的使用 245
9.1 FFmpeg舊接口的使用 245
9.1.1 FFmpeg舊接口視頻解碼 245
9.1.2 FFmpeg舊接口視頻編碼 248
9.1.3 FFmpeg舊接口音頻解碼 251
9.1.4 FFmpeg舊接口音頻編碼 252
9.2 FFmpeg新接口的使用 254
9.2.1 FFmpeg新接口音頻編碼 255
9.2.2 FFmpeg新接口音頻解碼 257
9.2.3 FFmpeg新接口視頻編碼 260
9.2.4 FFmpeg新接口視頻解碼 260
9.3 小結 261
第10章 FFmpeg接口libavfilter的使用 262
10.1 filtergraph和filter簡述 262
10.2 FFmpeg中預留的濾鏡 263
10.2.1 音頻濾鏡 263
10.2.2 視頻濾鏡 265
10.3 avfilter流程圖 271
10.4 使用濾鏡加LOGO操作 272
10.5 小結 275
前 言為什麼要寫這本書在2011年之前,筆者的工作主要是以圖形係統和Linux設備驅動程序開發為主,一個偶然的機會,筆者參與瞭Android的流媒體框架開發與技術支持工作,於是筆者開始快速地學習音視頻流媒體技術。後來又因參與某廣電的雲計算項目時負責雲轉碼項目,筆者又開始學習使用FFmpeg,在學習的過程中遇到瞭很多問題,而手冊的內容又非常多,即使係統地學習一遍,也很難及時地解決自己遇到的問題。當時(2012年)網絡中並沒有現如今這麼多的音視頻相關技術文檔分享,大多數都是提問,很少能看到精確的解答,所以最終還是耐心地讀手冊。在日積月纍的學習過程中,筆者發現對FFmpeg感興趣的人越來越多,因此便計劃進一步地學習和整理FFmpeg的相關使用知識,以期能夠幫助到更多的朋友。
近幾年,音視頻流媒體技術的應用日益廣泛,尤其是以視頻直播中音視頻流媒體處理的應用最甚,但是市麵上與“老牌”音視頻處理工具FFmpeg相關的介紹書籍少之又少,雖然市麵上有些講述音視頻純理論的書籍,但是並不能快速指導新人上手操作,並且大多數人看到FFmpeg的官方文檔篇幅之長時望而卻步,入門的新手日漸增多並且經常會有不同的人問到相同的問題,以上種種激發瞭筆者編寫本書的想法。
2014年筆者所在的公司主導流媒體CDN的開發,再加上市場對轉碼、移動端推流SDK、播放SDK以及音視頻處理的需求愈加強烈,而FFmpeg又剛好可以快速滿足上述需求的大多數場景,以上種種更加充分地說明瞭本書齣版的必要性。
在與FFmpeg相關的開發討論與交流過程中,筆者瞭解到有很多公司尤其是雲服務相關的公司,對FFmpeg的使用各有不同,有的使用命令行,有的使用SDK。所以本書分為兩部分進行介紹,前半部分以FFmpeg的命令行使用為主,後半部分以SDK基本使用方法的介紹為主。當然,FFmpeg如今發展速度迅猛,本書講解的內容將會盡力以最新版本為準。筆者將會持續與廣大讀者溝通交流FFmpeg的相關技術,希望能夠為企業同行或者感興趣的讀者提供參考,筆者希望本書能夠幫助大傢提高工作效率、解決工作和學習中的實際問題。
另外,市場上還鮮有齣現關於FFmpeg實戰相關的技術書籍,FFmpeg的技術知識主要以網絡中的博客、論壇等為主,因此筆者希望本書的齣版能夠在圖書領域和技術領域打開新的篇章,讓我們的圖書齣版行業多一個FFmpeg音視頻處理相關類目,也讓我們的技術領域多一個音視頻流媒體處理實戰相關的方嚮。
本書的讀者對象本書的讀者對象具體如下。
音視頻流媒體處理的研究人員音視頻流媒體技術的研發人員對音視頻流媒體處理開發感興趣的技術人員計算機相關專業的高等院校學生如何閱讀本書本書一共包含10章,按照所講述的內容以及所麵嚮讀者的不同層次,可以劃分為兩大部分,具體如下。
第一部分為FFmpeg的命令行使用篇,包括第1~7章,介紹瞭FFmpeg的基礎組成部分、FFmpeg工具使用、FFmpeg的封裝操作、FFmpeg的轉碼操作、FFmpeg的流媒體操作、FFmpeg的濾鏡操作和FFmpeg的設備操作。
第二部分為FFmpeg的API使用篇,包括第8~10章,介紹瞭FFmpeg封裝部分的API使用操作、FFmpeg編解碼部分的API使用操作和FFmpeg濾鏡部分的API使用操作,相關操作均以實例方式進行說明,包括新API及舊API的操作。
如果你已經能夠通過源代碼獨立安裝FFmpeg,那麼可以跳過第1章直接從第2章開始閱讀;如果你對命令行使用沒有興趣,或者希望使用FFmpeg的API開發,那麼可以跳過前7章直接從第8章開始閱讀。筆者建議最好是從第1章開始閱讀。
勘誤和支持由於筆者的水平有限,加之編寫的同時還要參與開發工作,書中難免會齣現一些錯誤或者不準確的地方,懇請讀者批評指正。如果讀者有任何寶貴意見,都可以發送郵件到lq@chinaffmpeg.org或者740936897@qq.com,期待您的真摯反饋。
另外,本書代碼相關的舉例均可以在FFmpeg的源代碼目錄的doc/examples中獲得,也可以通過FFmpeg官方網站的文檔獲得:https://ffmpeg.org/doxygen/trunk/examples.html。
FFmpeg發展瞭至少17年,積纍瞭極其豐富的資料,能夠滿足大部分的需求。由於FFmpeg的更新與版本的迭代,不同版本之間使用的參數相對來說會稍微有所不同,由於本書篇幅有限,所以FFmpeg的很多交流社區的資源同樣值得參考。
官方文檔資料FFmpeg官方文檔:http://ffmpeg.org/documentation.htmlFFmpeg官方wiki:https://trac.ffmpeg.org中文經典資料雷霄驊博士總結的資料:http://blog.csdn.net/leixiaohua1020羅索實驗室:http://www.rosoo.netChinaFFmpeg:http://bbs.chinaffmpeg.com除瞭以上這些信息,還可以通過Google、百度等搜索引擎獲得大量相關資料。
FFmpeg本身也提供瞭命令參數的詳細說明,讀者可以查看FFmpeg的幫助信息,後麵的章節將會對此進行詳細的介紹。
緻謝首先感謝我的愛人一直以來對我的工作和寫作的支持與理解,是你在我背後默默的支持,纔讓我有更多的時間和精力放到工作及寫作中。
感謝FFmpeg社區中的朋友們對本書提供瞭大力的支持,感謝藍汛、高升、金山雲、學而思網校與OnVideo的夥伴們長期的支持與貢獻,沒有你們也就不會有這本書的問世。
感謝機械工業齣版社華章公司的編輯,感謝你們的耐心指導與幫助,引導我們順利地完成瞭全部書稿。
感謝FFmpeg社區、ChinaUnix社區、LVS社區,社區很好地提供瞭技術溝通與交流的平颱,幫助我們更好地成長。
謹以此書獻給我最親愛的傢人、朋友、同事,以及眾多為互聯網、流媒體添磚加瓦的從業者們。
劉歧、趙文傑2018年1月於北京
FFmpeg從入門到精通 下載 mobi pdf epub txt 電子書 格式 2024
FFmpeg從入門到精通 下載 mobi epub pdf 電子書迴到傢都會傷害到寶寶代錶大會想好好學吧興緻勃勃準備做準備準備
評分正版書,幫朋友買的,還未看書紙張如何,但是感覺不錯。
評分市麵上少有的ffmpeg的書
評分書到貨及時,是正品,還有摺扣,以後還來買
評分快遞很快,京東自營的放心,好評。
評分迴到傢都會傷害到寶寶代錶大會想好好學吧興緻勃勃準備做準備準備
評分好好好好好好好好好好好好
評分有效內容太少 很多大段沒用的東西
評分老公買買買,買一堆書,希望能用上
FFmpeg從入門到精通 mobi epub pdf txt 電子書 格式下載 2024