《FFmpeg入門詳解——流媒體直播原理及套用》是2023年5月1日清華大學出版社出版的圖書,作者:梅會東。
基本介紹
- 中文名:FFmpeg入門詳解——流媒體直播原理及套用
- 作者:梅會東
- 出版時間:2023年5月1日
- 出版社:清華大學出版社
- ISBN:9787302608639
- 定價:89 元
- 印次:1-1
- 印刷日期:2023.04.17
內容簡介,圖書目錄,
內容簡介
本書系統講解了流媒體和直播的基礎理論及套用,包括RTSP、RTP、RTCP、RTMP、HLS、HTTP-FLV等常用的流媒體協定,包括Live555、SRS、Nginx-RTMP、ZLMediaKit等開源流媒體直播伺服器。本書為FFmpeg音視頻流媒體系列叢書的第二部。
全書共分為14章:系統講解了流媒體協定的基礎知識、直播的原理流程及架構分析、Live555、SRS、Nginx-RTMP、ZLMediaKit等開源直播點播庫。
書中包含大量的示例,圖文並茂,爭取讓一個音視頻流媒體領域的讀者真正入門,從此開啟流媒體直播編程的大門。本書知識體系比較完整,側重流媒體與直播的原理講解及套用。建議讀者先學習FFmpeg音視頻流媒體系列叢書的第一部,即音視頻原理及套用。講解過程由淺入深,讓讀者在不知不覺中學會了流媒體協定的基礎理論知識,並動手搭建直播平台。
本書可作為流媒體和直播方向的入門書籍,也可作為高年級本科生和研究生的學習參考書籍。
圖書目錄
目錄
第1章流媒體與直播基礎理論
1.1流媒體簡介
1.2流媒體協定
1.2.1TCP的三次握手與四次揮手
1.2.2視頻流協定與編解碼器
1.2.3常見的流媒體協定
1.3直播原理及套用
1.3.1視頻直播原理與流程
1.3.2通用的視頻直播模型
1.3.3視頻直播系統的模組
第2章RTSP流媒體協定
2.1RTSP簡介
2.1.1RTSP支持
2.1.2RTSP特點
2.2RTSP訊息格式
2.2.1請求訊息
2.2.2應答訊息
2.3RTSP互動流程
2.4RTSP重要概念
2.5RTSP重要方法
2.6RTSP狀態機
2.6.1客戶端狀態機
2.6.2伺服器端狀態機
2.7VLC作為RTSP流媒體伺服器
2.8RTSP抓包流程分析
2.8.1安裝Wireshark
2.8.2Wireshark抓取本地localhost的包
2.8.3使用Wireshark抓包分析RTSP互動流程
2.9RTSP與HTTP
2.10SDP
第3章RTP與RTCP流媒體協定
3.1RTP
3.1.1RTP格式
3.1.2RTP封裝H.264
3.1.3RTP的會話過程
3.1.4RTP的抓包分析
3.2RTCP
3.2.1RTCP的5種分組類型
3.2.2RTCP包結構
3.2.3RTCP的注意事項
3.2.4RTCP的抓包分析
3.3RTP/RTCP與RTSP的關係
3.4開源庫JRTPLIB簡介
3.4.1Windows 10+VS 2015編譯JRTPLIB
3.4.2Ubuntu 18編譯JRTPLIB
3.4.3使用VS 2015搭建JRTPLIB開發環境並收發包案例解析
3.4.4RTP與H.264的相關結構體
3.4.5使用JRTPLIB傳送H.264碼流
3.5RTP擴展頭結構
3.5.1RTP單擴展頭
3.5.2RTP多擴展頭
第4章RTMP流媒體協定
4.1RTMP簡介
4.2RTMP互動流程
4.2.1RTMP握手
4.2.2RTMP建立連線
4.2.3RTMP建立流
4.2.4RTMP播放
4.2.5RTMP相關名詞解釋
4.3直播推流與拉流
4.3.1直播推流
4.3.2直播拉流
4.4RTMP訊息
4.4.1RTMP塊流
4.4.2訊息塊格式
4.4.3塊基本頭
4.4.4塊訊息頭
4.4.5擴展時間戳
4.4.6訊息分塊流程解析
4.4.7協定控制訊息
4.4.8用戶控制訊息
4.4.9其他訊息類型
第5章HLS流媒體協定
5.1HLS協定簡介
5.1.1HLS的索引檔案的嵌套
5.1.2HLS伺服器端和客戶端工作流程
5.1.3HLS優勢及劣勢
5.1.4HLS主要的套用場景
5.2HLS協定詳細講解
5.2.1m3u8簡介
5.2.2HLS播放模式
5.2.3TS檔案
5.3m3u8格式講解
5.4TS與PS格式簡介
5.4.1ES、PES、PS、TS
5.4.2PS/TS編碼基本流程
5.4.3PS/TS碼流小結
5.5TS碼流詳細講解
5.5.1TS包格式
5.5.2TS碼流分析工具
5.5.3TS碼流結構分析
5.5.4PAT及PMT表格式
5.6PS碼流詳細講解
5.6.1PS碼流結構
5.6.2PS碼流的解析流程
5.7TS格式與m3u8切片
第6章HTTPFLV流媒體協定
6.1HTTPFLV協定簡介
6.2HTTP簡介
6.2.1HTTPS簡介
6.2.2HTTP請求內容
6.2.3HTTP回響內容
6.2.4URL簡介
6.3FLV格式簡介
6.3.1FLV格式解析
6.3.2FLV的重要Tag說明
第7章流媒體開源庫簡介
7.1FFmpeg簡介
7.1.1FFmpeg的模組與命令行工具
7.1.2FFmpeg命令行
7.1.3FFmpeg開發包
7.2Live555
7.3VLC播放器簡介
7.3.1VLC播放器
7.3.2VLC的功能列表
7.3.3VLC播放網路串流
7.4EasyDarwin
7.4.1EasyDarwin開源項目
7.4.2EasyDarwin商業項目
7.4.3EasyDarwin雲平台
7.5SRS
7.6ZLMediaKit
7.7WebRTC
7.7.1WebRTC架構
7.7.2視頻分析
7.7.3聲頻分析
7.7.4瀏覽器支持
7.7.5組成部分
7.7.6重要API
第8章Live555搭建直播平台
8.1Live555簡介
8.1.1Live555實現本地視頻推流
8.1.2openRTSP客戶端流程
8.2Live555源碼編譯
8.2.1Live555在Ubuntu下的源碼編譯
8.2.2Live555在Windows 10下的源碼編譯
8.3Live555點播伺服器流程分析
第9章EasyDarwin搭建直播平台
9.1EasyDarwin項目簡介
9.1.1主體框架
9.1.2模組分類
9.2EasyDarwin的安裝部署
第10章Nginx搭建直播平台
10.1Nginx項目簡介
10.2Nginx的安裝方式
10.2.1Windows 10下安裝Nginx
10.2.2Windows 10下安裝OpenSSL
10.2.3Ubuntu 18下安裝Nginx
10.2.4CentOS 8下安裝Nginx
10.3編譯rtmp及httpflv模組
10.3.1Ubuntu 18下編譯nginxrtmpmodule
10.3.2Ubuntu 18下編譯nginxhttpflvmodule
10.3.3Windows 10下編譯nginxhttpflvmodule
10.4nginx.conf配置檔案詳細講解
10.4.1Nginx配置檔案結構
10.4.2Nginx配置檔案的指令解析
10.4.3Nginx配置檔案關於nginxrtmpmodule配置指令詳細講解
第11章SRS搭建直播平台
11.1SRS項目簡介
11.2SRS源碼安裝與編譯
11.2.1在Ubuntu 18上安裝SRS
11.2.2在CentOS 7上安裝SRS
11.3SRS集群cluster
11.3.1SRS集群簡介
11.3.2SRS集群配置
11.4SRS配置檔案詳細講解
11.4.1SRS配置檔案的組成結構
11.4.2srs.conf
11.4.3ingest.conf
11.4.4hls.conf
11.5SRS啟用WebRTC播放
11.5.1編譯支持WebRTC的SRS
11.5.2推送RTMP視頻流
11.5.3WebRTC播放視頻流
第12章ZLMediaKit搭建直播平台
12.1Windows編譯配置ZLMediaKit
12.2Linux編譯安裝ZLMediaKit
12.3ZLMediaKit二次開發簡介
12.3.1test_httpApi.cpp檔案
12.3.2test_pusher.cpp檔案
12.3.3lambda函式介紹
第13章WebRTC網頁直播
13.1WebRTC項目簡介
13.2網路打洞STUN和TURN
13.2.1NAT穿透
13.2.2STUN與TURN
13.3WebRTC網頁直播
13.3.1基於Coturn項目的STUN/TURN伺服器搭建
13.3.2搭建信令伺服器SignalMaster
13.3.3安裝Web伺服器Nginx
13.3.4創建基於WebRTC的網頁視頻會話
第14章FFmpeg直播套用綜合案例分析
14.1直播系統架構簡介
14.2流媒體伺服器的套用
14.2.1完整的流媒體伺服器系統
14.2.2開源的流媒體伺服器項目套用
14.3使用FFmpeg進行RTMP推流
14.4使用VLC進行RTMP拉流並播放