课程核心缺口与学习门槛
Linux 音视频开发常卡在底层协议栈与跨平台工具链的断层上。很多开发者懂原理却写不出代码,根本原因在于对 TCP/UDP、RTSP、RTMP、WebRTC 等协议的交互逻辑不熟悉,且在 FFmpeg 的多平台编译、x264 集成及 NALU 数据解析等工程化环节存在实操盲区。本课程正是为了填补这一缺口,专为具备 C++ 基础、熟悉 Linux 基本命令,但在音视频工程落地中感到无从下手的开发者设计。学习门槛在于你需要对 CMake 构建系统和指针操作有一定认知,课程将带你跨越从“懂概念”到“能独立编译与封装”的鸿沟。
建议学习顺序与资料配合
建议按照“工具链先行,理论后行,实战贯穿”的顺序推进。首先攻克资料中关于 Mac、Windows、Android 及 iOS 平台编译 FFmpeg 并集成 x264 的章节,这是后续开发的地基,必须在本地环境跑通,避免环境问题干扰学习。随后深入理解 H.264 编码原理、IPB 帧与 GOP 结构,重点掌握 NALU 详解及封装算法。在实战阶段,利用 CMake 调用 FFmpeg 库,手动构建 MP4 容器,覆盖 AVFormatContext、AVStream 创建及写头流程等关键代码。练习时,建议对照视频中的单例模式实现,逐行调试 NALU 解析逻辑,确保能独立处理裸流数据。
学完产出与技能验证
完成本课程并实操完毕后,你将能够独立在 Linux 环境下搭建完整的音视频开发工具链,熟练运用 CMake 管理 FFmpeg、x264 等第三方依赖。你将掌握 H.264 视频和 AAC 音频的封装原理,能够手动构建 MP4 容器并正确处理 NALU 数据边界,而不是仅仅依赖现成的转码工具。此外,通过对 TCP/UDP、RTSP、RTMP 及 WebRTC 等协议的深入讲解,你将理解流媒体传输的核心机制,具备开发自定义流媒体播放器或服务端的基础能力,为后续深入 P2P 或实时通信开发打下坚实基础。
课程目录
FFmpeg全平台编译 001.01 音视频开发快速入门 FFmpeg各平台编译.mp4 51.72M 002.02 FFmpeg版本使用问题.mp4 9.40M 003.03 Mac平台编译FFmpeg X264 1.mp4 86.39M 004.04 Mac平台编译FFmpeg X264 2.mp4 86.17M 005.05 Windows编译FFmpeg X264 1.mp4 70.79M 006.06 Windows编译FFmpeg X264 2.mp4 79.30M 007.07 Android编译FFmpeg X264.mp4 57.69M 008.08 iOS编译FFmpeg X264库.mp4 268.25M H264和AAC封装mp4 001.01 H264数据编码.mp4 31.09M 002.02 IPB帧及GOP.mp4 17.58M 003.03 H264的NALU.mp4 26.16M 004.04 mp4容器与AAC.mp4 32.59M 005.05 mp4封装的两种方式.mp4 35.11M 006.06 H264帧NALU详解.mp4 121.91M 007.07 CMake与FFmpeg库.mp4 35.78M 008.08 封装mp4单例模式.mp4 31.03M 009.09 视频封装接口定义.mp4 24.49M 010.10 封装视频AVFormatcontex.mp4 30.42M 011.11 设置视频AVStream.mp4 49.78M 012.12 设置音频AVStream.mp4 29.64M 013.13 封装mp4写头.mp4 24.91M 014.14 CMake依赖的framework.mp4 38.23M 015.15 H264解析NALU算法.mp4 44.60M 016.16 NALU数据处理.mp4 50.79M 017.17 IDR帧与非关键帧.mp4 60.54M 018.18 AnnexB与avCC详解.mp4 73.79M 019.19 FFmpeg写视频数据.mp4 50.82M 020.20 C++11线程库.mp4 17.43M 021.21 封装mp4时间戳详解.mp4 72.32M 022.22 视频录制功能使用.mp4 41.41M 023.23 封装视频与FFmpeg编译选项.mp4 40.75M 024.24 AAC编码器初始化.mp4 32.08M 025.25 AAC编码与mp4封装总结.mp4 83.94M Linux多用户流媒体并发服务器开发 001.01 V4L视频采集.mp4 32.74M 002.02 x264编码.mp4 31.06M 003.03 Linux流媒体服务器项目.mp4 56.57M 004.04 x264编码实现.mp4 45.97M 005.05 Linux流媒体服务器开发.mp4 37.27M 006.06 流媒体服务器start.mp4 78.04M 007.07 套接字选项与大小端.mp4 33.69M 008.08 网络32位IP地址.mp4 26.29M 009.09 函数头文件详解.mp4 35.66M 010.10 接受客户端连接.mp4 50.93M 011.11 信号优雅结束服务器.mp4 46.67M 012.12 流媒体服务器客户端处理.mp4 40.49M 013.13 线程Detach封装.mp4 19.63M 014.14 服务器读写线程.mp4 22.27M 015.15 创建客户端.mp4 54.70M 016.16 客户端建立连接.mp4 38.24M 017.17 客户端线程库.mp4 36.88M 018.18 非阻塞connect模式.mp4 23.01M 019.19 select函数IO复用.mp4 30.38M 020.20 流媒体服务器跨平台开发.mp4 69.17M 021.21 非阻塞发送函数封装.mp4 16.40M 022.22 非阻塞数据接收封装.mp4 42.46M 023.23 send recv返回值详解.mp4 30.94M 024.24 什么是通讯协议.mp4 55.41M 025.25 网络通讯协议子节对齐.mp4 34.64M 026.26 更复杂的协议.mp4 37.48M 027.27 数据包发送.mp4 81.08M 028.28 心跳包与客户端状态.mp4 78.33M 029.29 视频采集编码.mp4 78.19M 030.30 摄像头采集.mp4 27.10M 031.31 摄像头视频采集问题.mp4 44.35M 032.32 linux视频采集与编码.mp4 37.05M 033.33 大规模视频转发.mp4 56.53M 034.34 并发多用户缓存队列.mp4 29.85M 035.35 百万级可伸缩视频服务器.mp4 34.28M 036.36 转发服务器架构实现.mp4 21.54M 037.37 缓存队列实现.mp4 32.69M 038.38 并发多用户视频转发.mp4 32.50M 039.39 客户端音视频接收实现.mp4 51.97M 040.40 流媒体服务器客户端测试.mp4 44.97M 041.41 流媒体服务器资源释放问题.mp4 67.69M 042.42 再看心跳包.mp4 60.98M 043.43 高性能select epoll.mp4 62.24M 044.44 流媒体服务器开发总结.mp4 58.57M 045.45 音视频流媒体整个流程.mp4 35.24M Linux流媒体开发UDP篇 001.01 深入网络通讯开发UDP概览.mp4 24.31M 002.02 深入网络通讯协议UDP 01.mp4 56.12M 003.03 深入网络通讯协议UDP 02.mp4 46.30M 004.04 深入网络通讯协议UDP 03 分包.mp4 79.57M 005.05 深入网络通讯协议UDP 04 丢帧问题.mp4 74.89M 006.06 深入网络通讯协议UDP 05 分包算法详解.mp4 95.81M 007.07 深入网络通讯协议 06 win socket.mp4 124.23M 008.08 深入网络通讯协议07 高效可靠的UDP.mp4 71.61M 009.09 深入网络通讯协议08 UDP可靠性传输框架.mp4 27.82M 010.10 深入网络通讯协议16 UDP音视频传输09.mp4 101.53M 011.11 深入网络通讯协议17 UDP音视频传输10.mp4 97.56M 012.12 深入网络通讯协议18 UDP音视频传输11.mp4 110.96M 013.13 深入网络通讯协议19 UDP音视频传输12.mp4 147.25M 014.14 深入网络通讯协议20 UDP音视频传输13.mp4 92.33M 015.15 深入网络通讯协议21 UDP音视频传输14.mp4 72.43M 016.16 深入网络通讯协议22 UDP音视频传输15.mp4 170.97M 017.17 深入网络通讯协议23 UDP音视频传输16.mp4 132.81M 018.18 深入网络通讯协议24 UDP音视频传输17.mp4 124.98M 019.19 深入网络通讯协议25 UDP音视频传输18.mp4 195.79M 020.20 深入网络通讯协议26 UDP音视频传输19.mp4 125.27M 021.21 深入网络通讯协议27 UDP音视频传输20.mp4 145.69M 022.22 深入网络通讯协议28 UDP音视频传输21.mp4 99.69M 023.23 深入网络通讯协议29 UDP音视频传输22.mp4 84.95M 024.24 深入网络通讯协议32 UDP音视频传输25.mp4 79.23M 025.25 深入网络通讯协议33 的UDP音视频传输26.mp4 134.24M 026.26 深入网络通讯协议34 UDP音视频传输27.mp4 82.99M 027.27 深入网络通讯协议35 UDP音视频传输28.mp4 65.66M 028.28 深入网络通讯协议36 UDP音视频传输29.mp4 76.36M 029.29 深入网络通讯协议37 UDP音视频传输30.mp4 45.47M Linux系统编程网络编程基础 001.01 操作系统API以及区别.mp4 20.29M 002.02 参考书和Ubuntu环境.mp4 15.70M 003.03 ubuntu开发环境.mp4 45.72M 004.04 进程与子进程.mp4 22.88M 005.05 Linux多线程.mp4 19.67M 006.06 Linux编程之信号.mp4 27.27M 007.07 linux线程锁.mp4 11.30M 008.08 CMake详解.mp4 51.93M 009.09 文件读写IO.mp4 28.53M 010.10 磁盘读写音频采集.mp4 71.24M 011.11 socket通讯编程概览.mp4 32.62M 012.12 socket通讯函数详解.mp4 30.34M 013.13 TCP与UDP的应用.mp4 72.02M 014.14 TCP三次握手.mp4 17.47M 015.15 深入TCP协议栈.mp4 42.24M 016.16 滑动窗口算法.mp4 22.93M P2P点对点开发实战 001.01 P2P点对点音视频传输概览.mp4 21.46M 002.02 NAT类型.mp4 33.08M 003.03 NAT穿透_UDP打洞.mp4 37.10M 004.04 P2P点对点音视频传输框架01.mp4 17.06M 005.05 P2P点对点音视频传输框架02.mp4 19.63M 006.06 P2P点对点音视频传输框架03.mp4 43.02M 007.07 P2P点对点音视频传输框架04.mp4 58.53M 008.08 P2P点对点音视频传输框架05.mp4 50.98M 009.09 P2P点对点音视频传输框架06.mp4 34.46M 010.10 P2P点对点音视频传输框架07.mp4 31.37M 011.11 P2P点对点音视频传输框架08.mp4 42.47M 012.12 云平台服务器部署.mp4 52.46M Qt FFmpeg跨平台音视频播放器核心精讲 001.01 Fmpeg播放器核心 概览.mp4 20.97M 002.02 FFmpeg播放器核心 Qt跨平台开发.mp4 41.33M 003.03 macOS链接FFmpeg x264 aac.mp4 58.08M 004.04 构建视频播放器核心类.mp4 29.92M 005.05 AVFormatContex结构体.mp4 60.81M 006.06 获取视频获取关键信息.mp4 39.15M 007.07 音视频AVCodecContex.mp4 63.33M 008.08 FFmpeg时间刻度AVRational.mp4 36.67M 009.09 视频播放器开发整个流程.mp4 23.81M 010.10 FFmpeg视频播放器架构图解.mp4 34.72M 011.11 FFmpeg播放器线程设计.mp4 35.51M 012.12 播放器音频视频队列.mp4 11.70M 013.13 音视频线程队列读取控制.mp4 49.33M 014.14 音视频队列与AVPacket读取.mp4 46.00M 015.15 视频解码线程.mp4 49.94M 016.16 解码后得到AVFrame与处理.mp4 70.67M 017.17 AVFrame与YUV数据.mp4 33.11M 018.18 FFmpeg字节对齐问题.mp4 66.26M 019.19 音频解码线程.mp4 26.34M 020.20 音频重采样.mp4 83.09M 021.21 Qt音频播放器.mp4 37.97M 022.22 时间戳 PTS DTS.mp4 36.88M 023.23 真实场景中的时间戳与PTS.mp4 26.21M 024.24 音视频同步详解.mp4 52.14M 025.25 播放器Seek到指定位置.mp4 30.07M 026.26 函数指针C++回调注意事项.mp4 59.59M 027.27 OpenGL渲染YUV.mp4 55.44M 028.28 OpenGL中YUV转RGB的Shader.mp4 13.25M 029.29 再谈MinGW MSYS.mp4 56.70M 030.30 播放器核心windows编译运行.mp4 97.32M Qt跨平台客视频流媒客户端体开发实战 001.01 从0构建Qt跨平台流媒体客户端.mp4 23.60M 002.02 POSIX与WIN32套接字.mp4 31.48M 003.03 Qt跨平台流媒体客户端构建.mp4 48.05M 004.04 使用C++11跨平台线程库.mp4 39.28M 005.05 Qt开启网络通讯客户端.mp4 39.31M 006.06 客户端程序优雅结束掉线程.mp4 51.74M 007.07 YUV数据定义.mp4 14.74M 008.08 Qt配置FFmpeg解码环境.mp4 27.31M 009.09 FFmpeg解码H.264数据.mp4 33.27M 010.10 数据YUV与字节对齐.mp4 72.28M 011.11 接收流媒体与解码.mp4 18.27M 012.12 回调函数回调视频数据.mp4 36.47M 013.13 QtOpenGL以及Shader.mp4 48.02M 014.14 C++与OpenGLShader数据传递.mp4 41.25M 015.15 OpenGL渲染YUV视频数据.mp4 31.26M 016.16 渲染开头绿屏问题解决.mp4 23.07M 017.17 客户端总结和win32配置.mp4 42.59M 018.18 win32 socket差异.mp4 31.56M 019.19 win32Socket编程.mp4 48.53M 020.20 mingw与MSVC.mp4 47.77M 021.21 Qt流媒体客户端开发总结.mp4 17.58M RTMP音视频你流媒体开发 001.01 RTMP技术概览.mp4 31.54M 002.02 RTMP服务器SRS搭建.mp4 48.01M 003.03 RTMP协议及握手.mp4 31.80M 004.04 RTMP协议chunk.mp4 55.65M 005.05 libRtmp建立连接.mp4 22.52M 006.06 H264数据编码.mp4 29.16M 007.07 AAC编码.mp4 49.77M 008.08 H264解析SPS PPS.mp4 39.05M 009.09 发送SPS PPS的RTMP包.mp4 37.24M 010.10 H264组RTMP包发送.mp4 33.72M 011.11 发送AAC数据的RTMP包.mp4 31.78M 012.12 FLV格式.mp4 46.07M 013.13 RTMP测试运行.mp4 40.41M 014.14 RTMP优化总结.mp4 54.76M RTSP音视频你流媒体开发 001.01 RTSP技术概览.mp4 58.14M 002.02 live555服务器搭建.mp4 44.73M 003.03 制作live555开发库.mp4 54.62M 004.04 live555库案例.mp4 39.38M 005.05 RTSP协议与SDP.mp4 19.11M 006.06 RTP和RTCP.mp4 26.99M 007.07 创建RTSP项目.mp4 21.04M 008.08 使用live555错误问题汇总.mp4 29.85M 009.09 创建RTSPServer.mp4 28.35M 010.10 MediaSession会话.mp4 39.35M 011.11 live555事件循环及SDP.mp4 22.56M 012.12 给RTSP服务器摄像头编码的264数据.mp4 41.05M 013.13 RTSP摄像头项目运行.mp4 28.09M 014.14 RTSP流媒体项目总结.mp4 25.47M WebRTC全平台C++开发实战 001.01 WebRTC开发实战.mp4 37.09M 002.02 WebRTC技术.mp4 72.81M 003.03 WebRTC服务器选择.mp4 44.96M 004.04 快速搭建信令服务器.mp4 59.35M 005.05 阿里云以及VPS.mp4 75.52M 006.06 janus服务器搭建01.mp4 108.60M 007.07 janus服务器搭建02.mp4 70.39M 008.08 janus服务器搭建03.mp4 107.22M 009.09 ICE P2P打洞服务器部署的坑.mp4 126.12M 010.10 Janus服务器加密签名证书.mp4 109.70M 011.11 WebRTC整套服务开发要点.mp4 42.10M 012.12 Janus服务器插件和资源.mp4 38.86M 013.13 Janus服务器iOS客户端.mp4 27.93M 014.14 Janus服务器Android客户端.mp4 60.91M 015.15 WebRTC源码编译中的各种问题.mp4 50.74M 016.16 WebRTC编译.mp4 69.38M 017.17 编译webrtc时的版本问题.mp4 28.48M 018.18 WebRTC超过10G的代码下载.mp4 35.93M 019.19 WebRTC编译头文件库文件.mp4 69.52M 020.20 WebRTC静态库.mp4 68.25M 021.21 WebSocket库.mp4 50.56M 022.22 建立WebSocket连接.mp4 59.69M 023.23 C++基础与WebRTC.mp4 8.61M 024.24 WebRTC信令交互流程.mp4 67.26M 025.25 WebRTC Linux Qt 01.mp4 80.42M 026.26 WebRTC Linux Qt 02.mp4 104.28M 027.27 WebRTC Qt 配置.mp4 58.78M 028.28 WebRTC Qt信号槽冲突问题.mp4 29.87M 029.29 WebRTC 交互流程接口01.mp4 65.62M 030.30 WebRTC 交互流程接口02.mp4 51.24M 031.31 WebRTC 信令websocket实现.mp4 62.89M 032.32 WebRTC 本地视频采集.mp4 80.47M 033.33 WebRTC 视频渲染.mp4 61.92M 034.34 WebRTC 开发中的各种问题.mp4 83.75M 035.35 WebRTC 用OpenGL渲染.mp4 68.40M 036.36 WebRTC Linux P2P点对点通讯.mp4 156.67M 037.37 WebRTC VC客户端.mp4 76.56M 038.38 WebRTC 安卓客户端真机.mp4 115.95M 039.39 WebRTC iOS客户端真机.mp4 78.74M 040.40 WebRTC 视频会议服务器架构.mp4 51.55M 041.41 WebRTC C++ SDP信令交互.mp4 31.15M 042.42 WebRTC 各平台的移植问题.mp4 101.17M 043.43 WebRTC 成功应用的案例.mp4 90.69M 044.44 Janus百万级可扩展开发.mp4 30.87M 045.45 Janus跨区域视频服务.mp4 69.66M 046.46 FEC和JitterBuffer.mp4 46.64M 音视频开发初学者入门 001.01 Linux音视频流媒体开发介绍.mp4 39.90M 002.02 Linux音视频流媒体开发实战 学习注意事项.mp4 7.11M 003.03 音视频开发入门概览.mp4 37.72M 004.04 音视频开发入门 音频的原理.mp4 43.73M 005.05 音视频开发入门 视频的原理1.mp4 51.36M 006.06 音视频开发入门 视频的原理2.mp4 58.88M 007.07 音视频开发入门 视频编码原理.mp4 67.57M 008.08 音视频开发入门 视频编解码网络传输概览.mp4 47.65M 009.09 音视频开发入门 TCP_IP与UDP.mp4 70.15M 010.10 音视频开发入门 流媒体服务器架构.mp4 45.68M 011.11 音视频开发入门 内网穿透原理.mp4 24.40M 012.12 音视频开发快速入门RGB.mp4 43.38M 013.13 音视频开发快速入门YUV.mp4 38.28M 014.14 音视频开发快速入门 SDL OpenAL.mp4 65.64M 零声-Linux音视频流媒体开发实战TCP_UDP_RTSP_RTMP_P2P_WebRTC/





