2023音视频流媒体高级开发教程

本课程涵盖最主流的音视频全栈开发技术,适合嵌入式开发、桌面开发、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音视频

学完本课程具备全栈的音视频技术体系思维和视野,能够结合企业实际场景业务,进行播放器、录屏器、推拉流直播、视频监控、音视频通话、流媒体服务器等实际项目的开发。

你可能感兴趣的:(音视频,音视频)