最近有小伙伴私信我:“搞了4年Android,想转行音视频开发,怎么做”,正巧,前几天还在回答了这个问题,看到有人在问音视频的学习资料,还是个大一的学生。想说一句:真有眼光。
img如今这个时代,想赚钱,一个共识是,得先选对赛道。有些行业和领域,终其一生的天花板也不过如此。但有的朝阳行业,你一进去就可以获得大量的机会,就是“ROI(投入产出比)”很高。
为啥从事音视频技术,未来会很赚钱。要说音视频技术,在这两年迎来爆发期。首先 5G 的发展提供了硬件条件,又受疫情的影响,生活场景线上化,大量的线上办公、线上教育、线上娱乐等需求,让几亿人涌入各类线上互动平台。
再加上之前疫情的原因,用户市场突然爆增,自然对音视频技术人才的需求就多了。所以不夸张地说,音视频开发是一片蓝海,人少,钱多。而且未来,会更加炙手可热。
img如今除了大厂,很多小公司也在寻找音视频的人才,稍微好点的音视频人才可能同时 3~4 家公司抢着要。就是因为从业人才基数低,高端人才缺乏,最重要的是,音视频技术有开发门槛,不好培养,也很难自学。但这也意味着,你跟别人相比有技术上的核心竞争优势,有分水岭。
如何系统学习音视频开发
首先要掌握好基础知识:
音视频技术学起来并不容易,要懂的东西太多:音视频的采集、编码、传输、解码、渲染...等等,网上也少见体系化的资料,博客文章也都是比较零散的。只能通过一点点的学习和积累把这块的知识串联积累起来。
这里给大家推荐一套学习路线及配套视频,并附有相关《音视频开发核心知识点笔记》,相信可以给大家提供一些帮助,有需要的朋友们也可以下拿去随时查漏补缺。
img学习路线及配套视频还有《音视频开发核心知识点笔记》已经进行了整理好了,如果你正在进阶这一块,可以来参考Github上的这个《Android音视频开发知识学习手册》
img音视频初级入门
音视频初级入门主要是接触Android多媒体展示相关的API,通过单独的列举和使用这些API,对Android音视频处理有一个基本的轮廓,虽然知识点相对来说是比较散的,但是点成线、线成面,基本的基础掌握了,通过学习Android音视频核心的API将音视频的流程串联起来,这样对于音视频的了解和控制就不仅仅局限于最外层的API了,而是能够通过相对底层的方式来加深对Android 音视频开发的认知。
img- Android 音视频开发(一):通过三种方式绘制图片
- Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
- Android 音视频开发(三):使用 AudioTrack 播放PCM音频
- Android 音视频开发(四):使用 Camera API 采集视频数据
- Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
- Android 音视频开发(六):MediaCodec API 详解
- Android 音视频开发(七):音视频录制流程总结
- ……
音视频中级进阶:OpenSL ES 学习
学习 Android 平台 OpenSL ES API,了解 OpenSL 开发的基本流程,使用OpenSL播放PCM数据,并了解相关API的简单使用
- Android OpenSL ES 开发:Android OpenSL 介绍和开发流程说明
- Android OpenSL ES 开发:使用 OpenSL 播放 PCM 数据
- Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据
- Android OpenSL ES 开发:OpenSL ES利用SoundTouch实现PCM音频的变速和变调
这一部分主要是动手实践,积累实战经验,可以试试给自己定以下目标:
- 使用 OpenGL 显示一张图片
- GLSurfaceviw 绘制 Camera 预览画面及实现拍照
- 使用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 响应触摸事件
- Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
- Android OpenGL ES 开发(九): OpenGL ES 纹理贴图
- Android OpenGL ES 开发(十): 通过GLES20与着色器交互
- ……
音视频高级探究
- 深入学习音视频编码,如H.264,AAC,研究使用开源编解码库,如x.264,JM 等
- 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4
- 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
- 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器
- 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能
- 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能
音视频编解码技术
img- 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
- 音视频编解码技术(二):AAC 音频编码技术
- ……
流媒体协议
img- 流媒体协议(一):HLS 协议
- 流媒体协议(二):RTMP协议
- ……
多媒体文件格式
img- 多媒体文件格式(一):MP4 格式
- 多媒体文件格式(二):FLV 格式
- 多媒体文件格式(三):M3U8 格式
- 多媒体文件格式(四):TS 格式
- 多媒体文件格式(五):PCM / WAV 格式
- ……
FFmpeg 学习
img- 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中重要结构体之间的关系
- ……
- FFmpeg 开发之 AVFilter 使用流程总结
- FFmpeg 过时 Api 汇总整理
- ……
总结
现在还会有人质疑说:“做音视频给人的感觉就是个小众市场呀!发展前景会好吗?” 这里我有必要再强调和说明下。那是过去,由于网络带宽的限制,以及音视频技术本身的一些原因,音视频技术无法被广泛地应用。但现在不一样了,随着近几年技术的发展,音视频已经越来越被广泛地应用于各行各业。
我一直相信带着 “任务” 去学习和实践,效率会高很多,因此我列出了一系列音视频相关的 “开发任务”,从简单到困难(当然,不一定非常严格和完美,部分任务先后可调整),大家在完成任务的过程中,遇到任何不懂的地方都要及时去 google,或者去请教身边的大牛,不放过任何一个疑点,相信大家会很快就能把音视频周边相关知识积累起来。如果你对学习音视频还无从下手,这份笔记手册及配套视频非常适合你,如果你正在进阶这一块,可以来参考Github上的这个《Android音视频开发知识学习手册》
网友评论