code学习

前景一片蓝海,Android音视频开发必备基础知识汇总

作者:Android不是安卓

转瞬间,2022 已慢慢步入深冬,回首过去一年,音视频技术在经历一番风浪的侵袭过后,变得逐渐相对平静下来。

“内卷”之外,大家似乎更多了一份“理性”指导我们去做一些正确的事,追求技术在商业中的更高价值。具体体现在我们要思考如何才能将自身能力更多、更快、更好的转化为产品。无论是从技术优化创新、提高服务质量,或是从降低成本、提升效率等方面考虑,都力求为客户实现更高的价值和收益。

前景一片蓝海,Android音视频开发必备基础知识汇总

全真互联时代,音视频技术已然成为企业数字化进程中的关键路径,实时、高清、沉浸的互动体验在各行各业中起到了至关重要的连接与沟通价值。 相信开发者们也可以明确感知到目前市场上对于音视频人才的需求,市场招聘音视频岗位薪资亦是水涨船高。

先来了解一下音视频运作流程:

音视频运作流程

音视频生产端: 音视频的采集 ->预处理-> 编码 -> 封装 -> 网络发送

音视频消费端: 网络接收 -> 解封装 -> 解码 -> 渲染

1、音视频采集

Android平台上的音频采集一般就三种:

利用android内置的应用程序
使用MediaRecorder进行音频捕获
使用AudioRecord进行音频捕获。           

此3种方式的灵活性逐渐增大,相应的所需要做的工作也逐渐增多。

2、预处理

视频数据的预处理一般包括视频图像的滤镜处理、美颜处理、加字幕,绿幕抠图。

音频的预处理一般包括声音的3A算法和变速变调处理,这个在 WebRTC里面有详细的介绍和实现。

AGC:自动增益补偿]功能(Automatic Gain Control)
ANS:背景噪音抑制功能](Automatic Noise Suppression)
AEC:回声消除器](Acoustic Echo Canceller)           

3、编码

音频的编码标准:

AAC
Opus
mp3           

视频的编码标准:

H264
H265
VP8
VP9
AV1           

以我目前的工作经验最常用的视频编码是 h264 音频编码是 AAC 编码。

4、封装

音视频编码后需要将音视频包以某种容器封装起来,这个步骤成为音视频的封装。常见的封装格式

flv
mp4
ts
rtp           

ffmepg支持非常丰富的媒体封装格式。查看 ffmepg 支持的封装格式命令如下

ffmpeg -muxers           

5、传输

常见的音视频的网络传输协议有 rtmp http-flv rtsp srt hls rtc udp ,各有优劣,这里不做详细对比。 感兴趣可以百度 google搜索了解。

6、解封装

解封装是上面介绍的封装的逆操作,从音视频的容器中将音频包、视频包分离出来放到各自的队列,等待各自的解码线程去解码渲染视频,播放音频。

7、解码

编码的逆操作,将视频包解码成原始的视频帧,将音频包解码成原始的pcm音频数据。

8、渲染

视频的渲染 windows 平台下可以使用 Direct3D 技术渲染视频,macOS,Android 和 Linux 可以使用 OpenGL 、OpenGLES 技术渲染视频。

拓展知识:FFmpeg进阶

要学习音视频,无论是直播还是音视频处理,ffmpeg和webrtc 基本是绕不过去的,相对webrtc 来说,ffmpeg 应用的更广。

音视频岗位确实吃香,但学习音视频有一个点避免不了,那就是音视频学习难度比较大! 在这我也努力为大家解决这些学习痛点,整理了一份音视频开发进阶文档,让初学者可以比较“柔顺丝滑”地入门,即使是老司机也能得到不少收获。

(此文档包括C/C++,Linux,FFmpeg webRTC opengl rtmp hls rtsp ffplay)

获取方法: 关注公众号<Android苦做舟> 领取这些开发文档

前景一片蓝海,Android音视频开发必备基础知识汇总
1.Android高级开发工程师必备基础技能
2.Android性能优化核心知识笔记
3.Android+音视频进阶开发面试题冲刺合集
4.Android 音视频开发入门到实战学习手册
5.Android Framework精编内核解析
6.Flutter实战进阶技术手册
7.近百个Android录播视频+音视频视频dome
8.Android Handler机制解析           

以下是这份开发文档的部分章节:

音视频初级入门开发

  • 音视频入门开发(一):三种方式绘制图片
  • 音视频入门开发(二):AudioRecord 采集音频PCM并保存
  • 音视频入门开发(三):AudioTrack 播放PCM音频
  • 音视频入门开发(四):Camera API 采集视频数据
  • 音视频入门开发(五):MediaExtractor 和 MediaMuxer API 解析与封装
  • 音视频入门开发(六):MediaCodec API 详解
  • 音视频入门开发(七):音视频录制流程总结
  • ……

音视频中级进阶:OpenSL ES 学习

前景一片蓝海,Android音视频开发必备基础知识汇总
  • OpenGL ES 中级开发(一): OpenGL ES 介绍
  • OpenGL ES 中级开发(二): OpenGL ES 环境搭建
  • OpenGL ES 中级开发(三): OpenGL ES 定义形状
  • OpenGL ES 中级开发(四): OpenGL ES 绘制形状
  • OpenGL ES 中级开发(五): OpenGL ES 使用投影和相机视图
  • OpenGL ES 中级开发(六): OpenGL ES 添加运动效果
  • OpenGL ES 中级开发(七): OpenGL ES 响应触摸事件
  • OpenGL ES 中级开发(八): OpenGL ES 着色器语言GLSL
  • ……

Android音视频开发高级探究篇

前景一片蓝海,Android音视频开发必备基础知识汇总
  • 音视频编解码技术: 音频编码技术
  • 流媒体协议
  • 多媒体文件格式
  • FFmpeg 学习

获取方法: 关注公众号<Android苦做舟> 领取这些开发文档。

1.Android高级开发工程师必备基础技能
2.Android性能优化核心知识笔记
3.Android+音视频进阶开发面试题冲刺合集
4.Android 音视频开发入门到实战学习手册
5.Android Framework精编内核解析
6.Flutter实战进阶技术手册
7.近百个Android录播视频+音视频视频dome           
前景一片蓝海,Android音视频开发必备基础知识汇总

继续阅读