• 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音视频

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

  • 相关阅读:
    python 脚本压缩文件linux 正常,windows 文件夹/文件名称 被加上了上级文件夹名
    网易易盾某 拼图验证码
    【Spring AOP】面向切面编程的概念,实践,原理详解
    图像传统处理算法-边缘检测-分割-增强-降噪
    旭日图更好地呈现数据的层次结构,细致划分各项数据
    最新AI系统ChatGPT源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+搭建部署教程+附源码
    <version>3.1.2.RELEASE</version>idea建要给springboot项目,3.1.2.RELEASE是红色的
    如何通过上传图片判断参数设置是否正确
    House of pig 原理详解&实战
    [暑假]JS学习随笔
  • 原文地址:https://blog.csdn.net/weixin_52622200/article/details/133748822