目录 第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章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.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及httpflv模块 10.3.1Ubuntu 18下编译nginxrtmpmodule 10.3.2Ubuntu 18下编译nginxhttpflvmodule 10.3.3Windows 10下编译nginxhttpflvmodule 10.4nginx.conf配置文件详细讲解 10.4.1Nginx配置文件结构 10.4.2Nginx配置文件的指令解析 10.4.3Nginx配置文件关于nginxrtmpmodule配置指令详细讲解 第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拉流并播放