课程定位:打通协议理论与工程实现的断层 许多开发者学习音视频时,往往卡在“懂了 RTMP/WebRTC 协议概念,却无法写出一行可用的传输代码”。本课程以 C++ 与 Qt 为技术栈,系统性地解决这个问题:从 Unix 系统编程的 Socket I/O 模型开始,逐步深入到 TCP 协议栈、H.264/AAC 编码原理、FFmpeg 解码管线,最终实现完整…
许多开发者学习音视频时,往往卡在“懂了 RTMP/WebRTC 协议概念,却无法写出一行可用的传输代码”。本课程以 C++ 与 Qt 为技术栈,系统性地解决这个问题:从 Unix 系统编程的 Socket I/O 模型开始,逐步深入到 TCP 协议栈、H.264/AAC 编码原理、FFmpeg 解码管线,最终实现完整的高并发流媒体服务器与客户端应用。课程不是浅尝辄止的工具调用,而是带你从零构建可实际运行的多用户流媒体架构,理解每一层代码背后的设计取舍。
本课程面向已具备 Qt 桌面开发经验的 C++ 工程师,具体要求:一能独立使用 Qt 编写含网络通信功能的基础客户端;二熟悉 C++11/14 的核心特性,包括智能指针、Lambda 与多线程基础;三掌握计算机网络中 IP/TCP/UDP 的基本工作原理。不需要精通 OpenGL,但需对图像像素处理有基本概念。如果你曾尝试阅读 RFC 文档却难以转化为代码,或希望从原理层面理解 H.264 帧结构、GOP 组成与 NALU 解析,这门课能提供清晰的工程实现路径。建议先确保自己能用 Qt 写出一个基本的 TCP 客户端-服务器示例,再进入后续章节。
建议按以下顺序逐块推进,每一阶段都需独立完成对应模块的代码实现:
第一阶段:夯实系统编程基础,重点掌握阻塞/非阻塞 I/O、多路复用(epoll/poll),理解进程线程模型,这是构建高性能服务器的必备技能。
第二阶段:深入 TCP 协议栈,学习自定义私有协议设计、大小端字节对齐、粘包处理,并亲手实现支持多用户的高并发流媒体服务器核心逻辑。
第三阶段:转向客户端开发,结合 FFmpeg 解码与 OpenGL ES 渲染管线,实现 H.264/NALU 解析、YUV 转 RGB 转换及实时视频绘制。
第四阶段:聚焦封装格式,详解 H.264(I/P/B 帧、GOP 结构)与 AAC 编码原理,掌握 SPS/PPS 解析与 MP4Box 工具链,实现实时写入 MP4 文件。
第五阶段:拓展主流协议,实践 RTMP 推拉流信令与 P2P 传输机制。
资料包提供完整工程源码与模块级示例,务必边看边敲代码:先用基础示例跑通 Socket 通信,再逐步替换为 FFmpeg 解码管线,最后集成 RTMP/WebRTC 模块。每个协议栈的细节都需在调试中内化,最终能独立开发具备采集、编码、传输、解码、渲染完整闭环的音视频应用。切忌只看不练,工程能力的提升完全依赖于亲手实现与排错的过程。
陈超.png (91.5 KB, 下载次数: 0) 2024-4-8 20:17 上传 课程内容 1 Unix系统编程,网络通讯编程基础. unix系统I/O,进程,进程间通讯,线程,socket套接字. 2 音视频流媒体协议基础,协议的本质,深入TCP协议栈,socket接口,自定义私有协议,大小端字节对齐.从0开始写一套多用户,高并发,可伸缩扩展的流媒体服务器。音视频采集,x264编码,视频发送缓冲队列.高并发多用户流媒体架构设计. 3 Qt c/c++流媒体客户端开发,FFmpeg解码,OpenGLES 视频渲染,OpenGL YUV转RGB, 图像渲染等. 4 H264 AAC封装mp4,详解H264编码原理, I P B帧, GOP H.264 NALU 解析与拆分, mp4Box. SPS, PPS, AAC ADTS, FFmpeg实时写H.264. 5 RTMP开发实践,R
陈超.png (91.5 KB, 下载次数: 0) 2024-4-8 20:17 上传 课程内容 1 Unix系统编程,网络通讯编程基础. unix系统I/O,进程,进程间通讯,线程,socket套接字. 2 音视频流媒体协议基础,协议的本质,深入TCP协议栈,socket接口,自定义私有协议,大小端字节对齐.从0开始写一套多用户,高并发,可伸缩扩展的流媒体服务器。音视频采集,x264编码,视频发送缓冲队列.高并发多用户流媒体架构设计. 3 Qt c/c++流媒体客户端开发,FFmpeg解码,OpenGLES 视频渲染,OpenGL YUV转RGB, 图像渲染等. 4 H264 AAC封装mp4,详解H264编码原理, I P B帧, GOP H.264 NALU 解析与拆分, mp4Box. SPS, PPS, AAC ADTS, FFmpeg实时写H.264. 5 RTMP开发实践,RTMP协议详解,chunk分块技术. FLV格式. SRS流媒体服务器,RTMP实时推流。FDK-AAC实时编码推流. 6 RTSP开发实践. RTSP协议 SDP信令. RTP/RTCP协议. live555开发框架. 开发一套基于摄像头采集x264编码的RTSP实时推流方案. 7 P2P点对点音视频传输框架. NAT详解,UDP打洞原理与实现. 开发一套完全基于UDP的P2P点对点音视频数据传输框架的实现. 8 WebRTC开发实践. WebRTC公网打洞服务器转发服务器搭建,Janus SFU视频会议服务器. 移动PC客户端,开发一套完整基于c++ native 的WebRTC客户端. 学员要求 1 熟悉c/c++ Qt元对象系统,基础界面开发,最少大学学过C语言开发,了解C++,熟悉基本linux下的操作命令,因为我们 课程70%的内容是在ubuntu上讲解. 课程目录: 01.Linux网络编程基础第一部分(10节) 02.Linux网络编程基础第二部分(8节) 03.Linux多用户流媒体并发服务器开发第一部分(10节) 04.Linux多用户流媒体并发服务器开发第二部分(10节) 05.Linux多用户流媒体并发服务器开发第三部分(10节) 06.Linux多用户流媒体并发服务器开发第四部分(10节) 07.Linux多用户流媒体并发服务器开发第五部分(5节) 08.Qt客流媒客户端体开发实战第一部分(10节) 09.Qt客流媒客户端体开发实战第二部分(10节) 10.Qt客流媒客户端体开发实战第三部分(1节) 11.H264和AAC封装mp4第一部分(10节) 12.H264和AAC封装mp4第二部分(10节) 13.H264和AAC封装mp4第三部分(5节) 14.流媒体开发RTMP第一部分(10节) 15.流媒体开发RTMP第二部分(4节) 16.流媒体开发RTSP第一部分(10节) 17.流媒体开发RTSP第二部分(4节) 18.Linux流媒体开发UDP篇第一部分(10节) 19.Linux流媒体开发UDP篇第二部分(10节) 20.Linux流媒体开发UDP篇第三部分(9节) 21.P2P点对点开发实战第一部分(10节) 22.P2P点对点开发实战第二部分(1节) 23.WebRTC全平台C++开发第一部分(9节) 24.WebRTC全平台C++开发第二部分(10节) 25.WebRTC全平台C++开发第三部分(10节) 26.WebRTC全平台C++开发第四部分(10节) 27.WebRTC全平台C++开发第五部分(7节)