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

news2024/12/24 3:38:46

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

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

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

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

音视频运作流程

音视频生产端: 音视频的采集 ->预处理-> 编码 -> 封装 -> 网络发送
音视频消费端: 网络接收 -> 解封装 -> 解码 -> 渲染

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苦做舟> 领取这些开发文档

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 学习

  • 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音视频开发高级探究篇

  • 音视频编解码技术: 音频编码技术
  • 流媒体协议
  • 多媒体文件格式
  • FFmpeg 学习

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数商云B2B商城系统订货功能为新能源汽车行业赋能,打造高质量发展生态圈

近年来&#xff0c;随着传统的汽车销售模式的信息不对称、价格不透明等问题日益凸显&#xff0c;汽车电商以其低成本的优势与高速的信息流通效率迅速发展。所谓汽车电商&#xff0c;即卖家与买家通过互联网的技术和手段&#xff0c;完成汽车售后各项服务的交易流程。根据数据显…

3.Linux文件管理命令-----ls显示文件名

14天学习训练营导师课程&#xff1a; 互联网老辛《 符合学习规律的超详细linux实战快速入门》 作用&#xff1a;ls 命令用于显示目录内容&#xff0c;类似于 DOS 下的 dir 命令&#xff0c;它的使用权限是所有用户。 用法&#xff1a; ls [选项]...[文件]...1.LS应用实例如下…

数据结构 - 树 堆

树、堆是用于频繁插入、排序的数据结构。他是一种排序数据结构而不是排序算法。 堆和树是有区别的 堆&#xff1a;特殊的完全二叉树。“特殊”&#xff1a;数值上特殊&#xff0c;父比子大/小。 1. 为什么用它 书上给的例子有点奇怪&#xff1a; 他的意思是说&#xff1a;“…

mysql学习笔记1:忘记密码

我使用的mysql版本为&#xff1a;5.6.50&#xff0c;操作系统为&#xff1a;win10 一、修改配置文件my.ini 1、在C:\ProgramData\MySQL\MySQL Server 5.6文件夹下找到my.ini配置文件 2、设置权限认证跳过 找到[mysqld]&#xff0c;在下面这行代码的下面加上 skip-grant-tab…

成兴光 | LED灯珠的封装形式

​成兴光根据不同的应用场合、不同的外形尺寸、散热方案和发光效果。将LED封装形式分为&#xff1a;引脚式、功率型封装、贴片式&#xff08;SMD&#xff09;、板上芯片直装式&#xff08;COB&#xff09;、Chip-LED、UVC金属、陶瓷封装等七个段落讲述。 &#xff08;1&#xf…

供应荧光染料AF532 活性酯,AF532-NHS,CAS:477876-64-5

一&#xff1a;产品描述 1、名称 AF5 532酯 AF532-NHS AF532 活性酯 Alexa Fluor 532 AF532 NHS ester 2、CAS编号&#xff1a;477876-64-5 3、分子式&#xff1a;C34H33N3O11S2 4、分子量&#xff1a;723.77 5、质量控制&#xff1a;95% 6、储存&#xff1a; -20…

分布式账本技术(Distributed Ledger Technology)和区块链(Blockchain)的简要介绍

Distributed Ledger Technology (DLT) 分布式账本技术是应用在资本市场最重要的区块链技术&#xff0c;该技术可以移除当前市场基础设施中的效率极低和成本高昂的部分。 分布式账本&#xff0c;从实质上说就是一个可以在多个站点、不同地理位置或者多个机构组成的网络里进行分…

数据库性能测试-mysql篇

一、数据库主从同步的工作原理 主从复制原理&#xff1a; 上边这张交互图就清楚的标记出了Master节点如何同步到Slave节点 1、首先Master上的修改、删除、新增操作都会被记录到一个叫做binlog的文件中&#xff0c;它是一个二进制日志文件。 2、Slave通过I/O线程读取binlog文件…

AidAim Single File虚拟存档/备份库

AidAim Single File虚拟存档/备份库 Single File System是一个本机Delphi虚拟存档/备份库&#xff0c;提供透明的压缩和强大的加密。单文件系统允许您轻松处理存储在单个文件中的多个文件或文件夹。它还包括高级加密和压缩功能。此解决方案允许您在单个文件中存储小型但功能强大…

单机多GPU训练模型入门指南(torch.nn.DataParallel)

目录 模型部分 1. 指定使用的GPU 2. 使用Torch的数据并行库(将模型搬到GPU上) 3. 保存模型 数据部分 1. 选择GPU 2. 将数据搬到GPU上 3. loss的反向传播修改 查看效果 本文将介绍模型和数据两部分的处理。 模型部分 1. 指定使用的GPU 1.1 导入os库 import os 1.2 …

基于微信小程序的付费自习室系统平台设计与实现的源码+文档

摘要 首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

Oracle Primavera P6V7 SQL异常案例

目录 系统环境 原因分析 解决方案 本案例由一名爱学习的网友提供&#xff0c;经过在Oracle Support的分析整理成文&#xff0c;希望给初学的P6用户提供参考和帮助。 系统环境 简要说明下P6安装的系统环境 操作系统&#xff1a;Windows 7 / Server 2008数据库&#xff1a…

CentOS中使用Docker来部署Postgresql

场景 CentOS7中Docker的安装与配置&#xff1a; CentOS7中Docker的安装与配置_霸道流氓气质的博客-CSDN博客 在上面安装好Docker之后&#xff0c;怎样使用docker部署Postgresql数据库。 注&#xff1a; 博客&#xff1a;https://blog.csdn.net/badao_liumang_qizhi 关注公…

canal-server使用

canal是什么 canal&#xff0c;译意为水道/管道/沟渠&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费。 这句介绍有几个关键字&#xff1a;增量日志&#xff0c;增量数据订阅和消费。这里我们可以简单地把canal理解为一个用来同步增量…

10月11日

gitlab 用https网址拉取项目的时候&#xff0c;出现&#xff1a; error setting certificate verify locations: CAfile: D:/Git/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none原因是&#xff1a; 修改为自己git所在的文件夹即可&#xff08;原因是我是从另外一台电脑直…

AndroidStudio连接真机测试运行

文章目录准备步骤1、打开要连接的手机2、配置AndroidStudio3、用数据线将手机和电脑连起来4、打开 开发者模式后问题1、可能需要下user driver才能连接手机2、电脑连不上手机3、手机连上电脑后不能运行软件运行Android Studio运行虚拟机时会占用较大的电脑内存而自己电脑内存不…

流媒体传输 - HLS 协议

HLS 全称是 HTTP Live Streaming&#xff0c;是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议&#xff0c;用于实时音视频流的传输。目前 HLS 协议被广泛的应用于视频点播和直播领域。 概述 原理介绍 通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件&#xff…

SpringBoot中拦截器的使用

SpringBoot中拦截器接口&#xff1a; public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}default void postHandle(HttpServletRequest request, …

【jmeter】windows下使用 (测试MQTT)

1. 添加线程组 二、添加如下请求 1. 添加创建连接请求-选中线程组&#xff0c; 点击右键&#xff0c;添加>取样器>MQTT Connect设置MQTT连接 本次使用本机开启的MQTT服务进行测试&#xff0c;默认ip为127.0.0.1&#xff0c;端口默认1883 2. 添加发布请求-选中线程组 …

面试:各种热修复框架对比

目前Android热修复的技术方案大致可以归类为以下几种&#xff1a; 资源热替换代码热修复动态库替换 资源修复 创建新的AssetManager实例&#xff0c;利用反射加载外部(SD卡)需要热修复的资源路径通过当前Activity实例获取Resouces资源类&#xff0c;然后反射得到mAssets属性&…