前言
从历史来看,2G打开了了移动互联网天下,3G带来了即时通信,诞生了QQ 微信等巨头,4G 带来了短视频兴起。字节跳动等公司崛起。2 3 4G的出现促成了移动互联网10年繁荣。而5G的出现,也会促成至少10年音视频行业的繁荣
所以,做音视频研发的前景是广阔的,对于很早看出音视频前景的同学来说,已经开始通过各种渠道搜集相关的学习资料,及早的投入音视频研发的队伍。
作为开发者的我们到底应不应该上音视频这条船? 接下来一起分析下。
行业现状
- 核心竞争力:定义音视频是程序届的皇冠,掌握音视频意味着拿到通往未来的船票,不用担心会被其他人替代。音视频是有门槛的。是与其他人拉开差距的分水岭
- 高端人才相关缺乏:Boss直聘中,北上广深很多年限上50w-70w的音视频岗位,常年还招不到人,月薪2-3万大多是刚从事音视频入门级开发者
- 技术迭代慢:就H264编码从95年成为标准至今,都在使用。比较偏底层技术,底层技术几十年不会有太大的改变
音视频开发岗位
说道薪资待遇什么的,想必是你们比较关心的一件事。我就随便在Boss直聘搜索的音视频开发岗位的薪资。 从上图可以看出音视频开发岗位的薪资平均都是在20K以上,但是他们对学历还是有一定的要求的最低基本都是本科学历。
为什么音视频的开发薪资这么高呢?
因为是音视频岗位人才稀缺,很少有人会完整的音视频开发。
音视频可以自学吗?
说句实话,音视频自学起来困难重重,学习成本非常高,且效率低。但并不代表不能学习,说的好,赚得多的,往往也难学!大牛指路,少走弯路!
小编特意邀请了一位来自字节的博主花了半天时间,根据其自己的学习与工作历程,给大家列出了一个基础的方向学习指南:
- 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View
- 在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件
- 在 Android 平台使用 Camera API 进行视频的采集,分别使用 SurfaceView、TextureView 来预览 Camera 数据,取到 NV21 的数据回调
- 学习 Android 平台的 MediaExtractor 和 MediaMuxer API,知道如何解析和封装 mp4 文件
- 学习 Android 平台 OpenGL ES API,了解 OpenGL 开发的基本流程,使用 OpenGL 绘制一个三角形
- 学习 Android 平台 OpenGL ES API,学习纹理绘制,能够使用 OpenGL 显示一张图片
- 学习 MediaCodec API,完成音频 AAC 硬编、硬解
- 学习 MediaCodec API,完成视频 H.264 的硬编、硬解
- 串联整个音视频录制流程,完成音视频的采集、编码、封包成 mp4 输出
- 串联整个音视频播放流程,完成 mp4 的解析、音视频的解码、播放和渲染
- 进一步学习 OpenGL,了解如何实现视频的剪裁、旋转、水印、滤镜,并学习 OpenGL 高级特性,如:VBO,VAO,FBO 等等
- 学习 Android 图形图像架构,能够使用 GLSurfaceviw 绘制 Camera 预览画面
- 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4
- 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
- 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器
- 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能
- 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能
- 上面积累的经验,做一款短视频 APP,完成如:断点拍摄、添加水印、本地转码、视频剪辑、视频拼接、MV 特效等功能
以上就是一个基础的Android音视频开发入门学习路线【建议收藏起来】
资源分享
音视频技术本身纷繁、复杂,需要很深的专业及技术背景,想要成为一员合格的音视频开发工程师,你需要对各领域的知识都有一些掌握才行。你是不是遇到看到上面这些困难就开始打退堂鼓了?其实不必担心,音视频技术虽然门槛高。
但在此小编花费大量时间收集和整理,终于将音视频方面的知识点整理成了一个专题,今天借此文章无偿分享给对音视频感兴趣的小伙伴。
专题包括:音视频系列教学视频+《Android音视频开发入门进阶核心笔记》
24节课五个项目实战,分别是:Android音视频编解码项目实战、泛娱乐直播系统分析与推流实战、、斗鱼直播项目实战、OpenGL ES手写美颜相机APP项目实战、交叉编译与CameraX项目实战。
《Android音视频开发入门进阶核心笔记》
这份《Android音视频开发入门进阶核心笔记》是博主有幸在杭州某大厂任职时的内部培训文档,在内部论坛收获一致好评,今天就拿出来分享给大家。
有需要完整版的可以点击下方二维码免费获取,立即学习。
以下是这份开发文档的部分章节:
初级入门篇:
一、绘制图片
- ImageView 绘制图片
- SurfaceView 绘制图片
- 自定义 View 绘制图片
二、AudioRecord API详解
三、使用 AudioRecord 实现录音,并生成wav
- 创建一个AudioRecord对象
- 初始化一个buffer
- 开始录音
- 创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。
- 关闭数据流
- 停止录音
四、用 AudioTrack 播放PCM音频
1.AudioTrack 基本使用
- MODE_STATIC模式
- MODE_STREAM模式
2.AudioTrack 详解
- 音频流的类型
- Buffer分配和Frame的概念
- AudioTrack构造过程
- AudioTrack 与 MediaPlayer 的对比
- 区别
- 联系
- SoundPool
五、使用 Camera API 采集视频数据
1.预览 Camera 数据 2.取到 NV21 的数据回调
六、使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
1.MediaExtractor API介绍 2.MediaMuxer API介绍 3.使用情境
七. MediaCodec API 详解
1.MediaCodec 介绍
2.MediaCodec API 说明
3.MediaCodec 流控
- 流控基本概念
- Android 硬编码流控
- Android 流控策略选择
由于文章篇幅受限,剩余内容过多,文中插图有限,下文只能截图目录展示:
中级进阶篇:
- Android OpenGL ES 开发(一): OpenGL ES 介绍
- Android OpenGL ES 开发(二): OpenGL ES 环境搭建
- Android OpenGL ES 开发(三): OpenGL ES 定义形状
- Android OpenGL ES 开发(四): OpenGL ES 绘制形状
- Android OpenGL ES 开发(五): OpenGL ES 使用投影和相机视图
- Android OpenGL ES 开发(六): OpenGL ES 添加运动效果
- Android OpenGL ES 开发(七): OpenGL ES 响应触摸事件
- Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
- Android OpenGL ES 开发(九): OpenGL ES 纹理贴图
- Android OpenGL ES 开发(十): 通过GLES20与着色器交互
- 使用 OpenGL 显示一张图片
- GLSurfaceviw 绘制 Camera 预览画面及实现拍照
- 使用OpenGL ES 完成视频的录制,并实现视频水印效果
高级探究篇:
- 深入学习音视频编码,如H.264,AAC,研究使用开源编解码库,如x.264,JM 等
- 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4
- 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
- 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器
- 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能
- 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能
音视频编解码技术
- 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
- 音视频编解码技术(二):AAC 音频编码技术
流媒体协议
- 流媒体协议(一):HLS 协议
- 流媒体协议(二):RTMP协议
多媒体文件格式
- 多媒体文件格式(一):MP4 格式
- 多媒体文件格式(二):FLV 格式
- 多媒体文件格式(三):M3U8 格式
- 多媒体文件格式(四):TS 格式
- 多媒体文件格式(五):PCM / WAV 格式
FFmpeg 学习记录
- FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
- FFmpeg命令行工具学习(二):播放媒体文件的工具ffplay
- FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg
- FFmpeg命令行工具学习(四):FFmpeg 采集设备
- FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度
-
FFmpeg 学习(一):FFmpeg 简介 -
FFmpeg 学习(二):Mac下安装FFmpeg -
FFmpeg 学习(三):将 FFmpeg 移植到 Android平台 -
FFmpeg 学习(四):FFmpeg API 介绍与通用 API 分析 -
FFmpeg 学习(五):FFmpeg 编解码 API 分析 -
FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析 -
FFmpeg 结构体学习(一): AVFormatContext 分析 -
FFmpeg 结构体学习(二): AVStream 分析 -
FFmpeg 结构体学习(三): AVPacket 分析 -
FFmpeg 结构体学习(四): AVFrame 分析 -
FFmpeg 结构体学习(五): AVCodec 分析 -
FFmpeg 结构体学习(六): AVCodecContext 分析 -
FFmpeg 结构体学习(七): AVIOContext 分析 -
FFmpeg 结构体学习(八):FFMPEG中重要结构体之间的关系
总结
现在还会有人质疑说:“做音视频给人的感觉就是个小众市场呀!发展前景会好吗?”这里我有必要再强调和说明下。那是过去,由于网络带宽的限制,以及音视频技术本身的一些原因,音视频技术无法被广泛地应用。但现在不一样了,随着近几年技术的发展,音视频已经越来越被广泛地应用于各行各业。
另外,让人欣喜的是随着 Google 对 WebRTC 的推动,在浏览器下实现音视频应用变有极为简单,这大大降低了非音视频专业的开发人员学习成本,并且其应用前景也变得更加广阔。如果你对学习音视频还无从下手,这份学习总汇非常适合你!
由于笔记的内容太多,篇幅限制,下面只截取了部分内容展示。每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图吧。需要获取完整版的小伙伴可以麻烦点赞支持下,点击下方二维码即可入手获取!
|