![]()
内容推荐 本书系统讲解了流媒体和直播的基础理论及应用,包括RTSP、RTP、RTCP、RTMP、HLS、HTTP-FLV等常用的流媒体协议,还包括Live555、SRS、Nginx、ZLMediaKit等开源流媒体直播服务器。本书为FFmpeg入门详解系列的第二部。 全书共14章,系统讲解流媒体协议的基础知识,直播的原理及架构分析,Live555、Nginx、SRS、ZLMediaKit等开源直播点播库。 书中包含大量的示例,图文并茂,争取让每一个音视频流媒体领域的读者真正入门,从此开启流媒体直播编程的大门。本书知识体系比较完整,侧重流媒体与直播的原理讲解及应用。建议读者先学习FFmpeg入门详解系列的第一部,即《FFmpeg入门详解——音视频原理及应用》。讲解过程由浅入深,让读者在不知不觉中学会流媒体的基础理论知识,并动手搭建直播平台。 本书可作为流媒体和直播方向的入门书籍,也可作为相关专业高年级本科生和研究生的学习参考书籍。 作者简介 梅会东,一个在音视频领域摸爬滚打20年的老程序员、培训师、作者,精通多种IT技术。参与设计和开发了多个音视频项目,包括播放器、视频服务器、全套直播系统等。精通多个音视频开源库项目,包括FFmpeg、Live555、SRS、Darwin、Nginx、WebRTC、ZLMediaKit等。目前专注于音视频流媒体的教育传播事业,为多家大型国企单位培训音视频专业技术人员。 目录 第1章 流媒体与直播基础理论 1.1 流媒体简介 1.2 流媒体协议 1.2.1 TCP的三次握手与四次挥手 1.2.2 视频流协议与编解码器 1.2.3 常见的流媒体协议 1.3 直播原理及应用 1.3.1 视频直播原理与流程 1.3.2 通用的视频直播模型 1.3.3 视频直播系统的模块 第2章 RTSP流媒体协议 2.1 RTSP简介 2.1.1 RTSP支持 2.1.2 RTSP特点 2.2 RTSP消息格式 2.2.1 请求消息 2.2.2 应答消息 2.3 RTSP交互流程 2.4 RTSP重要概念 2.5 RTSP重要方法 2.6 RTSP状态机 2.6.1 客户端状态机 2.6.2 服务器端状态机 2.7 VLC作为RTSP流媒体服务器 2.8 RTSP抓包流程分析 2.8.1 安装Wireshark 2.8.2 Wireshark抓取本地localhost的包 2.8.3 使用Wireshark抓包分析RTSP交互流程 2.9 RTSP与HTTP 2.10 SDP 第3章 RTP与RTCP流媒体协议 3.1 RTP 3.1.1 RTP格式 3.1.2 RTP封装H.264 3.1.3 RTP的会话过程 3.1.4 RTP的抓包分析 3.2 RTCP 3.2.1 RTCP的5种分组类型 3.2.2 RTCP包结构 3.2.3 RTCP的注意事项 3.2.4 RTCP的抓包分析 3.3 RTP/RTCP与RTSP的关系 3.4 开源库JRTPLIB简介 3.4.1 Windows 10+VS 2015编译JRTPLIB 3.4.2 Ubuntu 18编译JRTPLIB 3.4.3 使用VS 2015搭建JRTPLIB开发环境并收发包案例解析 3.4.4 RTP与H.264的相关结构体 3.4.5 使用JRTPLIB发送H.264码流 3.5 RTP扩展头结构 3.5.1 RTP单扩展头 3.5.2 RTP多扩展头 第4章 RTMP流媒体协议 4.1 RTMP简介 4.2 RTMP交互流程 4.2.1 RTMP握手 4.2.2 RTMP建立连接 4.2.3 RTMP建立流 4.2.4 RTMP播放 4.2.5 RTMP相关名词解释 4.3 直播推流与拉流 4.3.1 直播推流 4.3.2 直播拉流 4.4 RTMP消息 4.4.1 RTMP块流 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.1 HLS协议简介 5.1.1 HLS的索引文件的嵌套 5.1.2 HLS服务器端和客户端工作流程 5.1.3 HLS优势及劣势 5.1.4 HLS主要的应用场景 5.2 HLS协议详细讲解 5.2.1 m3u8简介 5.2.2 HLS播放模式 5.2.3 TS文件 5.3 m3u8格式讲解 5.4 TS与PS格式简介 5.4.1 ES、PES、PS、TS 5.4.2 PS/TS编码基本流程 5.4.3 PS/TS码流小结 5.5 TS码流详细讲解 5.5.1 TS包格式 5.5.2 TS码流分析工具 5.5.3 TS码流结构分析 5.5.4 PAT及PMT表格式 5.6 PS码流详细讲解 5.6.1 PS码流结构 5.6.2 PS码流的解析流程 5.7 TS格式与m3u8切片 第6章 HTTP-FLV流媒体协议 6.1 HTTP-FLV协议简介 6.2 HTTP简介 6.2.1 HTTPS简介 6.2.2 HTTP请求内容 6.2.3 HTTP响应内容 6.2.4 URL简介 6.3 FLV格式简介 6.3.1 FLV格式解析 6.3.2 FLV的重要Tag说明 第7章 流媒体开源库简介 7.1 FFmpeg简介 7.1.1 FFmpeg的模块与命令行工具 7.1.2 FFmpeg命令行 7.1.3 FFmpeg开发包 7.2 Live555 7.3 VLC播放器简介 7.3.1 VLC播放器 7.3.2 VLC的功能列表 7.3.3 VLC播放网络串流 7.4 EasyDarwin 7.4.1 EasyDarwin开源项目 7.4.2 EasyDarwin商业项目 7.4.3 EasyDarwin云平台 7.5 SRS 7.6 ZLMediaKit 7.7 WebRTC 7.7.1 WebRTC架构 7.7.2 视频分析 7.7.3 声频分析 7.7.4 浏览器支持 7.7.5 组成部分 7.7.6 重要API 第8章 Live555搭建直播平台 8.1 Live555简介 8.1.1 Live555实现本地视频推流 8.1.2 openRTSP客户端流程 8.2 Live555源码编译 8.2.1 Live555在Ubuntu下的源码编译 8.2.2 Live555在Windows 10下的源码编译 8.3 Live555点播服务器流程分析 第9章 EasyDarwin搭建直播平台 9.1 EasyDarwin项目简介 9.1.1 主体框架 9.1.2 模块分类 9.2 EasyDarwin的安装部署 第10章 Nginx搭建直播平台 10.1 Nginx项目简介 10.2 Nginx的安装方式 10.2.1 Windows 10下安装Nginx 10.2.2 Windows 10下安装OpenSSL 10.2.3 Ubuntu 18下安装Nginx 10.2.4 CentOS 8下安装Nginx 10.3 编译rtmp及http-flv模块 10.3.1 Ubuntu 18下编译nginx-rtmp-module 10.3.2 Ubuntu 18下编译nginx-http-flv-module 10.3.3 Windows 10下编译nginx-http-flv-module 10.4 nginx.conf |