课程核心缺口与学习门槛

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/