前言

近两年内音视频发展十分迅速,以抖音、快手、视频号为代表的短视频平台风靡全球,直播带货、音视频互动教育等新兴业务模式飞速发展。

据艾瑞咨询的数据显示,短视频应用的用户渗透率已经超过 70%。人们获取信息的主要途径, 已经开始从文字阅读,向更丰富立体的音视频形式迁移。

音视频技术介绍

什么是音视频技术?

音视频技术其实就是音频技术和视频技术的一个统称,在技术处理上,其实音频和视频是要分开处理的。

而且要注意一点,音视频从开始收集数据到最后展示都是离不开硬件设备的,所以在以后的开发过程中,要做好与硬件打交道的心理准备了。

音视频的主要处理过程:
  • 采集 比如从客户端的摄像头、麦克风和本地原始文件等,获得基础的音视频数据;

  • 预处理 在这个阶段其实就是对音视频进行修剪操作,毕竟收集到的原始数据,不一定是想要在最后呈现的效果,因此在这里可能会进行美颜、裁剪、AI识别处理、声音A3处理等;

  • 编码 在经过预处理或者没处理过的原始文件,一般都会比较大,不适合进行传输,这个时候就需要进行压缩、转码之类的操作,减少文件提交,然后再进行传输,执行编码的工具叫编码器,压缩数据的算法叫做编码格式;

  • 解码 压缩数据传输完之后,就需要解码成原始文件一样的数据才能使用,用来解码的工具就是解码器了,不过通常编码器和解码器是一块的,统称为编解码器codec;

  • 渲染与展示 接收到原始数据文件之后,就可以通过硬件或者软件进行渲染与展示了,硬件例如显示器、音响等,软件有SurfaceView;

  • 文件封装/解封装 其实从采集,音频和视频都是分开进行处理的,但是在进行传输的时候,我们需要同一套音频文件是在一块的,所以需要进行一次文件封装。存放音视频的容器叫封装容器,文件类型叫封装格式;

  • 网络协议打包 音视频文件在网络中传输的时候,一般都会有一个特定的协议,也就是流媒体协议。 网络协议会将音视频数据文件打包成协议包,通过网络协议端口发送出去,接收方接收到网络包之后,要通过网络协议解开协议包,才能获得音视频数据文件。

音视频开发相关知识点:

音视频学习资料

第 1章 三种方式绘制图片

  • SurfaceView和View的优劣对比以及使用场景
  • android10+存储权限的获取

第 2章 AudioRecord录制PCM音频

  • 音频采集API AudioRecord和MediaRecorder
  • PCM的介绍
  • AudioRecord的使用(构造、开始录制写入pcm文件,状态机)
  • ffplay播放pcm
  • pcm转为wav

第 3章 AudioTrack播放PCM音频

  • MediaPlayer和AudioTrack
  • AudioTrack的介绍
  • 具体实现
  • 遇到的问题

第 4章 Camera视频采集

  • Camera基础知识
  • 视频采集的流程
  • 遇到的问题 (页面卡住、黑屏、倒立等)

第 5章 MediaExtractor MediaMuxer 实现视频的解封装与合成

  • 有什么实际应用
  • 视频解封装和合成的API以及流程介绍
  • 实践(以及ffmpeg的实现)
  • 遇到的问题

第 6章 MediaCodec硬编解流程与实践

  • 工作原理和基本流程
  • 数据格式
  • 生命周期
  • 同步异步模式
  • MediaCodec 流控
  • 实践:AAC解码为PCM同步和异步的两种实现 (音频解码)
  • 遇到的问题

第 7章 OpenGL ES 基本概念

  • 管线
  • 顶点
  • 纹理
  • 顶点着色器(VertexShader)
  • 图元装配
  • 光栅化
  • 片段着色器(FragmentShader)
  • 逐片段操作

第 8章 GLSL及Shader的渲染流程

  • GLSL是什么?
  • GLSL的特有语法
  • Shader的渲染流程
  • EGL环境

第 9章 OpenGL ES 绘制平面图形

  • GLSL着色器的编写
  • 实践:用GLSurfaceView加载GLSL绘制屏幕图形
  • 遇到的问题

第 10章 GLSurfaceView源码解析&EGL环境

  • GLSurfaceView源码解析
  • TextureView +EGL+ GLThread绘制图形

第 11章 OpenGL ES矩阵变换与坐标系统

  • 矩阵与矩阵变换
  • 坐标系统
  • OpenGL的矩阵变换
  • 实践

第 12章 OpenGL ES之纹理

  • 基本概念
  • 纹理绘制流程和关键方法
  • 实践 :加载纹理 (纹理加载、二分屏、三分屏、八分屏、镜像、纹理和颜色混合)

第 13章 OpenGL ES 滤镜 (篇一)

  • 颜色和滤镜的基本知识
  • 实践:ColorFilter对View进行换色
  • 实践:OpenGL ES实现图片滤镜
  • 遇到的问题

第 14章 OpenGL ES 实时滤镜

  • 基本知识介绍
  • 流程
  • 实践:Camera预览添加实时滤镜(原图、黑白、冷暖色)
  • 遇到的问题

第 15章 OpenGL ES粒子系统 - 喷泉

  • 什么是粒子和粒子系统
  • 实践:喷泉效果
  • 问题1. 重叠覆盖
  • 问题2. 把点修改为纹理图片

第 16章 OpenGL ES粒子效果-烟花爆炸

  • 烟花爆竹场景和属性
  • 实践:烟花效果
  • 问题:目前的烟花都是红色的,如何实现多彩的烟花?

第 17章 JNI与NDK的学习和使用

  • 什么是JNI、NDK?
  • Java和Native交互流程
  • 通过AS创建Native CPP简单的项目
  • JNI基本知识
  • Java和Native的相互调用

第 18章 JNI - 引用类型、异常处理、函数注册

  • 引用
  • JNI 调用时的异常处理
  • 函数注册

第 19章 NDK构建方式 ndk-build与cmake

  • Makefile文件解析
  • Cmake构建

第 20章 指针、内存模型、引用

  • 指针
  • 内存模型和四区使用
  • 引用

第 21章 运算符重载、继承、多态、模版

  • 类和对象的重要知识点
  • 运算符重载
  • 继承
  • 多态
  • 模版

第 22章 STL 之 容器

  • STL的六大部件介绍
  • 容器分类
  • 序列式容器介绍(vector、list、deque)
  • 关联式容器

第 23章 算法系列 - 冒泡排序

  • 主流排序算法
  • stl中sort的实现
  • 冒泡排序
  • 冒泡排序的优化

第 24章 算法系列-快速排序

  • 递归
  • 快速排序

第 25章 算法系列-堆排序

  • 基本数据结构
  • 堆排序

第 26章 算法序列 - 散列表

  • 基本概念
  • 散列表的构造
  • 散列表的碰撞处理
  • 代码实现

第 27章 音视频基础知识

  • 视频播放器原理
  • 音频编码基础知识
  • 视频编码基础知识

第 28章 FFMPEG常用命令

  • 播放器ffplay常用命令
  • 多媒体分析器ffprobe常用命令
  • 编解码工具ffmpeg常用命令

第 29章 交叉编译android使用的FFmpeg(3.x和4.x)

  • 配置安装android交叉编译工具链
  • 手写FFmpeg编译脚本 进行编译(针对ffmpeg3.x和ffmpeg4.x版本)
  • androidStudio中引用使用ffmpeg

第 30章 基于FFmpeg实现简单的视频解码器

  • FFmpeg解码过程流程图和关键的数据结构
  • mp4通过FFmpeg解码YUV裸视频数据
  • 遇到的问题

第 31章 FFmpeg + AudioTrack 实现音频解码和播放

  • 音频解码流程
  • 解码音频为pcm
  • 使用AudioTrack播放音频

第 32章 FFmpeg +OpenSL ES实现音频解码和播放

  • OpenSL ES基本介绍
  • OpenSL ES播放音频流程
  • 代码实现
  • 遇到的问题

第 33章 FFmpeg + OpenGLES 边解码边播放视频

  • 基础知识
  • 使用GLSurfaceView播放边解码边播放视频
  • 遇到的问题

点击音视频资料免费领取!