本课程涵盖最主流的音视频全栈开发技术,适合嵌入式开发、桌面开发、Android/IOS移动开发、 后台开发、IT行业人员往音视频领域发展;适合音视频从业人员进一步 系统提升音视频技术。
一、音视频基础
1.1 音频基础知识
- 如何采集声音-模数转换原理
- 为什么高品质音频采样率> =44.1Khz
- 什么是PCM
- 一个采样点用多少位表示
- 采样值用整数还是浮点数表示
- 音量大小和采样值大关系
- 多少个采样点作为一-帧数据
- 左右通道的采样数据如何排列
- 什么是PCM (脉冲编码调制)
- 音频编码原理
1.2 视频基础知识
- RGB彩色原理
- 为什么需要YUV格式
- 什么是像素
- 分辨率、帧率、码率
- YUV数据存储格式区别
- YUV内存对齐问题
- 为什么画面显示绿屏
- H264编码原理
- H264 I P B帧的关系
1.3 解复用基础知识
- 什么是解复用,比如MP4格式
- 为什么需要不同的复用格式MP4/FLV/TS
- 常见的复用格式MP4/FLV/TS
1.4 FFmpeg开发环境搭建
- Windows、Ubuntu、 MAC=大平台
- QT安装
- FFmpeg命令行环境
- FFmpeg API环境
- FFmpeg编译
- vs2019安装( win平台)
1.5 音视频开发常用工具
- MediaInfo ,分析视频文件
- VLC播放器,播放测试
- EasyICE ,分析TS流
- flvAnalyser ,分析FLV
- mp4box ,分析mp4
- audacity ,分析音频PCM
- Elecard_streamEye ,分析H264
- 海康YUVPlayer ,分析YUV
二、FFmpeg实战
2.1 FFmpeg命令
- 音频PCM/AAC文件提取
- 视频YUV/H264文件提取
- 解复用、复用
- 音视频录制
- 视频裁剪和合并
- 图片/视频转换
- 直播推流和拉流
- 水印/画中画/九宫格滤镜
2.2 SDL跨平台多媒体开发库实战
- SDL环境搭建
- SDL事件处理
- SDL线程处理
- 视频YUV画面渲染
- 音频PCM声音输出
2.3 FFmpeg基石精讲
- FFmpeg框架
- FFmpeg内存弓|用计数模型
- 解复用相关AVFormat XXX等
- 编解码相关AVCodec XXX等
- 压缩数据AVPacket
- 未压缩数据AVFrame
- FFmpeg面向对象思想
- Packet/Frame数据零拷贝
2.4 FFmpeg音视频解复用+解码
- 解复用流程
- 音频解码流程
- 视频解码流程
- FLV封装格式分析
- MP4封装格式分析
- FLV和MP4 seek有什么区别
- 为什么FLV格式能用于直播
- 为什么MP4不能用于直播
- MP4能否用来做点播
- AAC ADTS分析
- H264 NALU分析
- AVIO内存输入模式
- 音频重采样实战
- 重采样后的数据播放时长是否一致
- 重采样后PTS如何表示
- 视频解码后YUV内存对齐问题
- 音频解码后PCM排列格式问题
- 硬件解码dxva2/nvdec/cuvid/qsv
- 硬件gpu数据转移到qpu
- H265解码
2.5 FFmpeg音视频编码+复用合成视频
- AAC音频编码
- H264视频编码
- PCM+YUV复用合成MP4/FLV
- H264编码原理
- IDR帧和帧区别
- 动态修改编码码率
- GOP间隔参考值
- 复用合成MP4音视频不同步问题
- 编码、复用timebase[问题
- MP4合成IOS不能播放问题
- 重采样后PTS如何表示
- 视频编码YUV内存对齐问题
- 硬件编码dxva2/nvenc/cuvid/qsv
- H265编码原理
- H264、H265编码互转
2.6 FFmpeg过滤器
- FFmpeg过滤chain框架
- 音频过滤器框架
- 视频过滤器框架
- 多路音频混音amix
- 视频水印watermark
- 视频区域裁剪和翻转
- 视频添加logo
2.7 fplay播放器
- 掌握ffplay.c的意义
- ffplay框架分析
- 解复用线程
- 音频解码线程
- 视频解码线程
- 声音输出回调
- 画面渲染时间间隔
- 音频重采样
- 画面尺寸格式变换
- 音频、视频、外部时钟同步区别
- 以视频为基准时音频重采样补偿
- 音量静音、调节大小的本质
- 音视频packet队列大小限制
- 音视频packe队列线程安全
- 音视频frame队列大小限制
- 音视频frame队列线程安全
- 暂停、播放实现机制
- seek播放导致的画面卡住问题
- seek播放数据队列、同步时钟处理
- 如何做到逐帧播放
- 播放器退出的流程要点
2.8 ffmpeg多媒体视频处理工具
- 掌握ffmpeg.c的意义
- ffmpeg框架分析
- 音视频编码
- 封装格式转换
- 提取音频
- 提取视频
- logo叠加
- 音视频文件拼接
- filter机制
- 命令行解析流程
- MP4转FLV不重新编码逻辑
- MP4转FLV重新编码逻辑
- MP4转FLV timebase
- MP4转FLV scale
2.9 FFmpeg+QT播放器
- 播放器讲解
- 框架分析
- 播放器模块划分
- 解复用模块
- 音视频解码
- 播放器控制
- 音视频同步
- 0.5~2.0变速播放
- 支持seek操作
- 上一下一播放切换
- 支持播放列表功能
- 支持视频截图
- 画面自适应大小
- 码流信息分析
2.10 OBS推流录制源码分析
- OBS vs2019+QT5.15.2编译
- 音频配置和初始化分析
- 音频线程模块采集和编码分析
- 视频配置和初始化分析
- 视频线程模块采集和编码分析
- OBS初始化过程分析
- 录制流程分析
- 麦克风采集分析
- 桌面采集分析
- X264编码分析
- 系统声音+麦克风混音
- 推流模块分析是(供项目源码)
三、流媒体客户端
3.1 RTMP推拉流项目实战
- RTMP协议分析
- wireshark抓包分析
- H264 RTMP封装
- AAC RTMP封装
- RTMP拉流实战
- H264 RTMP解析
- AAC RTMP解析
- RTMP推流实战
- 没有MetaData否播放
- RTMP推流是否会导致延迟
- RTMP推流如何动态调整码率
- RTMP推流如何动态调整帧率
- RTMP拉流是否会导致延迟
- 如何检测RTMP拉流延迟
- 如何解决RTMP播放延迟
- ffplay、vlc能否用来测试播放延迟
- RTMP拉流播放变速策略设置
3.2 HLS拉流分析
- HLS协议分析
- HTTP协议分析
- TS格式分析
- m3u8文件解析
- wireshark抓包分析
- HLS拉流实战
- FFmpeg HLS源码分析
- HLS多码率机制
- 如何解决HLS延迟高的问题
3.3 RTSP流媒体实战
- RTSP协议分析
- RTP协议分析
- H264 RTP封装
- H264 RTP解析
- AAC RTP封装
- AAC RTP解析
- RTCP协议分析
- RTSP流媒体服务器搭建
- RTSP推流实战
- RTSP拉流实战
- wireshark抓包分析
- RTP头部序号的作用
- RTCP的NTP和RTP的TS的区别
- RTSP交互过程
- 花屏可能的原因
- SPS PPS如何发送
- SDP封装音视频信息
四、流媒体服务器
4.1 SRS 3.0源码剖析
- 整体框架分析
- RTMP推流分析
- RTMP拉流分析
- HLS拉流分析
- HTTP-FLV拉流分析
- FFmpeg转码分析
- 首屏秒开技术分析
- forward集群源码分析
- edge集群源码分析
- 负载均衡部署方式
- 连接和协程的关系
- 如何更快速掌握SRS源码
- 流媒体服务器是否导致延迟
- 如何降低流媒体服务器的延迟
- 怎么获取流媒体服务器推流信息
- 怎么获取流媒体服务器拉流信息
- 首屏秒开能降低延迟吗
- 推流->服务器转发->拉流延迟分析
4.2 ZLMediaKit源码剖析
- 整体框架分析
- 线程模块划分
- RTSP推流连接处理
- RTSP拉流连接处理
- 数据转发模型
- SDP解析
- RTP H264解析
- RTP AAC解析
五、WebRTC 项目实战
5.1 WebRTC中级开发手把手写代码
- WebRTC通话原理分析
- WebRTC开发环境搭建
- coturn最佳搭建方法
- 如何采集音视频数据
- 一对一通话时序分析
- 信令服务器设计
- SDP分析
- Candidate类型分析
- Web一对一通话
- Web和Android通话
- AppRTC快速演示
- 如何设置编码器优先级
- 如何限制最大码率
- 信令服务器的本质是什么
- 为什么从接口获取SDP后还要再次设置
- Web和Android的SDP差早
- A要和B通话, A怎么知道B的存在
5.2 WebRTC高级开发-MESH模型多人通话
- 自定义摄像头分辨率
- 码率限制
- 调整编码器顺序
- Mesh模型多方通话分析
- 多人通话信令服务器开发
- 动态分配stun/turn服务器
- Web客户端源码
- Android客户端源码
5.3 WebRTC高级开发-Janus SFU模型多人通话
- Janus框架分析
- Janus信令设计
- 基于Janus实现会议系统
- Janus Web客户端源码分析
- Janus Android客户端源码分析
- Janus Windows客户端源码分析
- 基于Full ICE的部署
- 基于Lite ICE的部署
- Full ICE和Lite ICE的区别
- 发布订阅模型
5.4 WebRTC高级开发SRS 4.0/5.0源码分析
- RTMP转发WebRTC逻辑
- WebRTC转发RTMP逻辑
- WebRTC音视频一对-通话
- WebRTC多人通话
- WebRTC SFU模型分析
- SRTP分析
- RTCP分析
- SDP分析
- NACK分析
- stun分析
六、Android NDK开发
6.1 Android NDK开发基础
- So库适配总结
- GDB调试技巧
- Makefile工程组织
- CMake工程组织
- 生成指定CPU平台的so库
- JNI基础和接[门生成
- JNI Native层构建Java对象
- JNI异常处理
6.2 Android FFmpeg编译和应用
- 编译x264
- 编译x265
- 编译mp3
- 编译fdk-aac
- 编译FFmpeg
- 使用ffmpeg实现mp4转格式
- 使用FFmpeg开发播放器
6.3 Android RTMP推拉流
- RTMP推流协议实现
- RTMP拉流协议实现
- RTMP拉流音视频同步
- MediaCodec硬件编码
- MediaCodec硬件解码
- OpenSL ES播放音频数据
- OpenGL ES Shader显示视频
6.4 Android ijkplayer 源码分析
- 编译ijkplayer和实践
- 项目框架分析
- 播放状态转换
- 拉流分析
- 解码分析
- 音频播放流程
- 视频渲染流程
- OpenSL ES播放音频数据
- MediaCodec硬件解码
- OpenGL ES Shader显示视频
- 变速播放实现原理
- 低延迟播放实现
- 缓存队列设计机制分析
七、IOS音视频开发v1.0
7.1 FFmpeg 6.0 MAC编译
- xcode调试FFmpeg
- QT调试FFmpeg ,通用的FFmpeg知识学习在Mac平台
- IOS调用FFmpeg
7.2 IOS FFmpeg RTMP推拉流
- AVFoundation视频采集
- Metal视频渲染
- Audio Unit音频采集
- Audio Unit音频播放
- FFmpeg推流
- FFmpeg拉流
- 直播延迟和解决方法
7.3 VideoToolbox硬件编解码
- Video Toolbox框架的流程
- 硬件编解码步骤
- CVPixelBuffer解析
- 如何获取SPS/PPS信息
- 判断是否关键帧
- 编码参数优化
7.4 IOS ijkplayer编译和应用
- 本地视频播放
- RTMP拉流播放
- HTTP点播
- 音频播放流程
- 视频渲染流程
7.5 IOS WebRTC音视频通话
八、开源、自研项目
8.1 9大开源项目
- FFmpeg
- QMPlay2
- ijkplayer
- OBS
- AppRTC
- WebRTC
- Janus
- SRS
- ZLMediaKit
8.2 自研项目和源码分析
- SDL音频播放
- SDL视频播放
- FFmpeg内存弓|用计数
- MP4/FLV/TS解复用
- 提取H264
- 提取AAC
- H264/H265解码
- AAC/MP3解码
- AVIO内存输入模式
- 音频重采样
- 视频尺寸格式变换
- DXVA2解码
- NVDEC解码
- CUVID解码
- QSV解码
- AAC编码优化
- H264编码优化
- H265编码优化
- AAC转MP3
- H264转H265
- DXVA2编码
- NVENC编码
- CUVID编码
- QSV编码
- MP4合成
- FLV合成
- 多路音频混音
- 视频添加水印
- 视频区域裁剪
- 视频翻转
- 视频添加logo
- ffplay播放器
- ffmpeg多媒体处理工具
- Ovoice QT播放器
- .基于QMPlay2原理开发的播放器
- 基于OBS开发的录制和推流器
- RTMP推流
- RTMP拉流
- HLS拉流
- RTSP推流
- RTSP推流
- SRS 3.0/4.0/5.0源码分析
- ZLMediaKit源码分析( RTSP模块)
- 一对一音视频通话( Web、Android )
- AppRTC一对一音视频通话
- 基于mesh模型多人音视频通话( Web、Android )
- Janus SFU视频会议( Web、Android、 Windows )
- Android简单播放器
- Android RTMP推流
- Android RTMP拉流
- Android ijkplayer源码分析
200+小时课程,每年有内容更新
课程咨询地址:音视频流媒体高级开发V6.0
音视频流媒体开发学习资料、教学视频,分享有需要的可以自行添加学习交流群: 739729163 领取
音视频基础-FFmpeg实战-编码解码-流媒体客户端-流媒体服务器-webrtc实战-AndroidNDK-IOS音视频
学完本课程具备全栈的音视频技术体系思维和视野,能够结合企业实际场景业务,进行播放器、录屏器、推拉流直播、视频监控、音视频通话、流媒体服务器等实际项目的开发。