【缺書】NT售價: 445 元
近年來,隨著4G、5G網絡技術的迅猛發展,流媒體直播應用越來越普及,音視頻流媒體方面的開發崗位也非常多,然而,市面上沒有一本通俗易懂的系統完整的流媒體直播入門書籍。網絡上的知識雖然不少,但是太散亂,不適合讀者入門。眾所周知,流媒體與直播知識非常復雜,入門很難。很多程序員想從事音視頻或流媒體開發,但始終糊里糊涂、不得入門。筆者剛畢業時,也是一個純讀者,付出了艱苦的努力,終于有一些收獲。借此機會,整理成專業書籍,希望對讀者帶來幫助,少走彎路。FFmpeg發展迅猛,功能強大,命令行也很簡單、很實用,但是有一個現象: 即便使用命令行做出了一些特效,但有時依然不理解原理,不知道具體的參數是什么含義。音視頻與流媒體是一門很復雜的技術,涉及的概念、原理、理論非常多,很多初學者不學基礎理論,而是直接做項目、看源碼,但往往在看到C/C++的代碼時一頭霧水,不知道代碼到底是什么意思。這是因為沒有學習音視頻和流媒體的基礎理論,就如學習英語,不學習基本單詞,而是天天聽英語新聞,總也聽不懂,所以一定要認真學習基礎理論,然后學習播放器、轉碼器、非編、流媒體直播、視頻監控等。本書主要內容 第1章介紹流媒體與直播基礎理論、常用流媒體協議及直播基礎知識。第2章介紹RTSP流媒體協議,講解RTSP的概念、原理、流程、重要消息等。第3章介紹RTP與RTCP流媒體協議,包括RTP與RTCP的基礎理論及JRTPLIB開源庫。第4章介紹RTMP流媒體協議,包括RTMP的概念、原理、流程等。 第5章介紹HLS流媒體協議,包括HLS協議、m3u8格式與切片、TS格式等。 第6章介紹HTTP拟FLV流媒體協議,包括FLV格式等。第7章介紹流媒體開源庫,包括FFmpeg、Live555、SRS、ZLMediaKit等。第8章介紹Live555搭建直播平臺,包括項目簡介、源碼編譯、點播流程等。第9章介紹EasyDarwin搭建直播平臺,包括項目簡介、安裝部署等。第10章介紹Nginx搭建直播平臺,包括項目簡介、源碼編譯、直播平臺搭建等。第11章介紹SRS搭建直播平臺,包括項目簡介、源碼編譯、直播平臺搭建等。第12章介紹ZLMediaKit搭建直播平臺,包括項目簡介、源碼編譯、直播平臺搭建等。第13章介紹WebRTC網頁直播功能,包括項目簡介、網頁直播等。第14章介紹FFmpeg直播應用綜合案例分析,包括推流、直播服務器、拉流播放等。閱讀建議本書是一本適合讀者入門的流媒體和直播的書籍,既有通俗易懂的基本概念,又有豐富的案例和原理分析,圖文并茂,知識體系非常完善。對流媒體和直播的基本概念與原理進行了詳細分析,對重要的概念進行了具體闡述,非常適合初學者。本書總共分為兩大部分。第一部分,第1~6章介紹流媒體基礎協議,包括RTSP、RTMP、HLS等。第二部分,第7~14章介紹幾個常用的流媒體開源庫,包括Live555、EasyDarwin、SRS、Nginx、ZLMediaKit等,并搭建直播系統。建議讀者在學習過程中循序漸進,不要跳躍。本書的知識體系是筆者精心準備的,由淺入深,層層深入,對于抽象復雜的概念和原理,筆者盡量通過圖文并茂的方式進行講解。從最基礎的流媒體協議開始,側重講解原理及流程分析,讀者一定要動手實踐,進行抓包分析,理解流程。后續逐步講解幾個常用的流媒體開源庫,包括Live555、EasyDarwin、SRS、Nginx、ZLMediaKit、WebRTC等,要用所學的流媒體直播理論來指導實踐,對每個開源庫要動手編譯安裝,并搭建直播平臺,從中深刻體會流媒體協議的應用。最后進行總結分析,爭取使所學的理論升華,做到融會貫通。致謝感謝清華大學出版社責任編輯趙佳霓老師給筆者提出了許多寶貴的建議。感謝我的家人,特別感謝我的寶貝女兒和妻子,寶貝女兒一天天長大,非常可愛,妻子承擔了所有的家務,非常辛苦。感謝我的學員,群里的學員越來越多,并經常提出很多寶貴意見。隨著培訓經驗的積累,對知識點的理解也越來越透徹,希望給大家多帶來一些光明,盡量讓大家少走彎路。與大家一起努力,非常快樂。學習是一個過程,沒有終點,唯有堅持。由于時間倉促,書中難免存在不妥之處,請讀者見諒并提寶貴意見。梅會東2023年2月于北京清華園本書源代碼
本書系統講解了流媒體和直播的基礎理論及應用,包括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安裝Wireshark2.8.2Wireshark抓取本地localhost的包2.8.3使用Wireshark抓包分析RTSP交互流程2.9RTSP與HTTP2.10SDP第3章RTP與RTCP流媒體協議3.1RTP3.1.1RTP格式3.1.2RTP封裝H.2643.1.3RTP的會話過程3.1.4RTP的抓包分析3.2RTCP3.2.1RTCP的5種分組類型3.2.2RTCP包結構3.2.3RTCP的注意事項3.2.4RTCP的抓包分析3.3RTP/RTCP與RTSP的關系3.4開源庫JRTPLIB簡介3.4.1Windows10+VS2015編譯JRTPLIB3.4.2Ubuntu18編譯JRTPLIB3.4.3使用VS2015搭建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、TS5.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章HTTP拟FLV流媒體協議6.1HTTP拟FLV協議簡介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.2Live5557.3VLC播放器簡介7.3.1VLC播放器7.3.2VLC的功能列表7.3.3VLC播放網絡串流7.4EasyDarwin7.4.1EasyDarwin開源項目7.4.2EasyDarwin商業項目7.4.3EasyDarwin云平臺7.5SRS7.6ZLMediaKit7.7WebRTC7.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在Windows10下的源碼編譯8.3Live555點播服務器流程分析第9章EasyDarwin搭建直播平臺9.1EasyDarwin項目簡介9.1.1主體框架9.1.2模塊分類9.2EasyDarwin的安裝部署第10章Nginx搭建直播平臺10.1Nginx項目簡介10.2Nginx的安裝方式10.2.1Windows10下安裝Nginx10.2.2Windows10下安裝OpenSSL10.2.3Ubuntu18下安裝Nginx10.2.4CentOS8下安裝Nginx10.3編譯rtmp及http拟flv模塊10.3.1Ubuntu18下編譯nginx拟rtmp拟module10.3.2Ubuntu18下編譯nginx拟http拟flv拟module10.3.3Windows10下編譯nginx拟http拟flv拟module10.4nginx.conf配置文件詳細講解10.4.1Nginx配置文件結構10.4.2Nginx配置文件的指令解析10.4.3Nginx配置文件關于nginx拟rtmp拟module配置指令詳細講解第11章SRS搭建直播平臺11.1SRS項目簡介11.2SRS源碼安裝與編譯11.2.1在Ubuntu18上安裝SRS11.2.2在CentOS7上安裝SRS11.3SRS集群cluster11.3.1SRS集群簡介11.3.2SRS集群配置11.4SRS配置文件詳細講解11.4.1SRS配置文件的組成結構11.4.2srs.conf11.4.3ingest.conf11.4.4hls.conf11.5SRS啟用WebRTC播放11.5.1編譯支持WebRTC的SRS11.5.2推送RTMP視頻流11.5.3WebRTC播放視頻流第12章ZLMediaKit搭建直播平臺12.1Windows編譯配置ZLMediaKit12.2Linux編譯安裝ZLMediaKit12.3ZLMediaKit二次開發簡介12.3.1test_httpApi.cpp文件12.3.2test_pusher.cpp文件12.3.3lambda函數介紹第13章WebRTC網頁直播13.1WebRTC項目簡介13.2網絡打洞STUN和TURN13.2.1NAT穿透13.2.2STUN與TURN13.3WebRTC網頁直播13.3.1基于Coturn項目的STUN/TURN服務器搭建13.3.2搭建信令服務器SignalMaster13.3.3安裝Web服務器Nginx13.3.4創建基于WebRTC的網頁視頻會話第14章FFmpeg直播應用綜合案例分析14.1直播系統架構簡介14.2流媒體服務器的應用14.2.1完整的流媒體服務器系統14.2.2開源的流媒體服務器項目應用14.3使用FFmpeg進行RTMP推流14.4使用VLC進行RTMP拉流并播放