GitHub标星5.8+!移动开发音视频学习路线指南

最近经常遇到一些同学问我如何学习音视频,怎样才能快速上手?还有一些对音视频不了解的同学问我该不该学习音视频?作为一名音视频行业的10年老兵,我有一些思考分享给大家,希望能对你有所帮助。

大背景

2020年真的是一个多灾、多难的年份,冠状病毒的爆发使得本该举国欢庆的春节变得尤为沉闷。不能走亲,不能访友,除了呆在家里,那儿也不能去。正如张文宏大夫向我们劝解的,我们要将病毒给闷死

大家都盼着疫情可以赶紧过去,早点恢复正常的生活。但从目前的情况看,短时间内这个疫情是很难结束的。这不刚从中国消停了一阵,又跑到海外大爆发了,谁知道它会不会又转回来呢?

可我们还得生活!还得工作!还要学习!

好时代

幸运的是我们生活在一个好时代,科技在这几十年得到了迅猛的发展。在疫情肆虐的当下,我们可以通过音视频会议进行远程办公;我们还有在线教育系统,对于大多数学生来说,完全可以在家进行在线学习。

从某个角度看,这次疫情虽然导致很多行业处于崩溃边缘,但也催生了新的行业发展,其中音视频会议和在线教育就是因而起的行业。在疫情短时间内难以结束的情况下,音视频会议和在线教育的重要性马上体现了出来,新的沟通方式和教育方式被越来越多的人所认知,所接纳。

甚至我们可以判定,在线教育行业和音视频会议行业会在今年崛起,并在未来十年得到迅猛发展。

目前,各大巨头公司(如阿里、腾讯、今日头条,新东方等),纷纷在这两个方向上谋篇布局,进行了大量的投资,笼络技术人才,也可以间接佐证这个判断了。

大趋势

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jhz5BMkw-1609828455806)(//upload-images.jianshu.io/upload_images/5956443-536df9a07276ccaf.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)]

从未来大的趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必须品。除了在线教育、音视频会议、即时通讯这些必须使用音视频技术的产品外,其它的产品也需要加入音频、视频元素。比如说将现在的网站注册与登陆的图文方式全部改为语音方式是否更加安全?相信随着音视频技术的普及,更加有创意的产品会如雨后春笋般孕育而生。

目前,音视频技术从之前的**“象牙塔”逐渐走向“百姓家”**已是不争的事实。正是因为这样一个大的趋势,现在除了各大厂之外,其它一些小厂也开始寻找音视频人才。一名稍好点的音视频人才现在可能会有3-4家公司抢着要、挣着要。

对音视频人才的需求从小众变成了大众,这更多的是大家对未来市场预期的结果。做个不恰当的比喻,3G/4G的出现,促成了移动互联网10年繁荣。而5G的出现,也会促成至少10年音视频行业的繁荣。

**除了5G的到来可以让音视频得到更广范的应用外,音视频技术在未来还有更重要的作用。**事实上,在人类可以识别的信息中,音视频包含的信息是最丰富的,但人类并没有很好的将它们利用起来。

究其原因,是因为这些信息都是非结构化的数据,而人类善长的是处理结构化数据(比如数据库)。而对于这些非结构化的数据却无从下手的,所以这些音视频数据都被白白浪费掉了。

但随着计算机视觉、人工智能的发展,人们开始撑握了如何将音视频这类非结构化数据转化为结构化数据的方法。一旦我们将音视频数据转为结构化数据后,我们就可以利用现有的技术(如搜索引擎、大数据,数据挖掘等)对这些数据进行各种分析了,这个价值是不是更加惊人呢?而这一切的基础都是音视频技术。

所以,音视频研发的未来是极为广阔的。目前可以说是学习音视频的最佳时机,及早的加入音视频研发的队伍,才能使自己在未来的职场上更有作为。

有钱景

正如我上面所说的,各大厂为了争夺未来,抢占先机,不惜重金笼络人才。通过招聘市场我们可以了解到,一名合格的音视频开发人员,少则年薪 30 万起,多则可以达 100万以上。

出现这种情况的原因主要有两个,一是音视频方面的人才不好培养,二是现有的优秀人才太少了。

从技术上来说,音视频从业者分成两个方向,一是搞算法的,另一个是搞工程的。搞音视频算法的这类人非常少,需要有深的数学能力和算法背景。相对来说,学习成本高,一般企业不需要,也养不起。这类人一般都会选择去大公司,薪水百万都是Low的。这些人一般只专注在一个领域上,因此就业面也窄。

搞工程的人相对多一些,他们有扎实的理论基础,很强的技术功底,对音频/视频都非常熟悉。这类人才工资要比同级别的其它开发人员薪资高20%以上。

因此,搞音视频技术的开发人员钱景还是非常乐观的。而且随着时间的推移,在未来几年音视频人才会更加炙手可热。

音视频好学吗?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bzpb6SCB-1609828455810)(//upload-images.jianshu.io/upload_images/5956443-cc4430d9d8e9ad45.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)]

说句实话,音视频自学起来困难重重,学习成本非常高,且效率低。主要有两方面的原因,一是音视频知识庞杂,通俗易懂的资料非常少;另一方面,网上充斥着大量的错误信息,使得很多初学者掉到坑里就爬不出来了。

我来举个例子,按照传统的音视频学习方法,学习音视频你首先要阅读大量的音视频规范/协议文档(如H264、MP4/FLV、RTP/RTCP等)。这些文档中的内容基本都以为单位的,即每个二进制位的变化都代表不同的含义,这种文档极其枯燥,很难阅读。

在对文档熟悉的前提下,再进行代码的开发难度就“更上一层楼”了。这时你会发现,如果你对 C/C++ 使用不熟练,没有专门进行过训练的话,你就进入了炼狱般的状况,那是一种折磨。

好在现在有FFMPG、WebRTC 等开源库,大大降低了研发成本。但即使这样,对于小白同学来说学习音视频依然是十分困难的。

小白如何学习音视频?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vIH850Bk-1609828455813)(//upload-images.jianshu.io/upload_images/5956443-60ea538b6913eabb.png?imageMogr2/auto-orient/strip|imageView2/2/w/1024/format/webp)]

如上面所讲,音视频的入门难度还是蛮大的,我们该如何更快的入门呢?

如何学习音视频开发

一,初级入门篇:

一 绘制图片

1. ImageView 绘制图片

2. SurfaceView 绘制图片

3. 自定义 View 绘制图片

二、AudioRecord API详解

三、使用 AudioRecord 实现录音,并生成wav

  • 创建一个AudioRecord对象
  • 初始化一个buffer
  • 开始录音
  • 创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。
  • 关闭数据流
  • 停止录音

四、用 AudioTrack 播放PCM音频

1.AudioTrack 基本使用

  • MODE_STATIC模式
  • MODE_STREAM模式

2.AudioTrack 详解

  • 音频流的类型
  • Buffer分配和Frame的概念
  • AudioTrack构造过程

3. 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中重要结构体之间的关系

更多目录截图:

**总结:**以上就是关于音视频的资料最强整理和概括了(还有部分内容没有截图出来),相信应该是全网最全了,所有资料都是免费分享给大家的,也省去了对音视频感兴趣的小伙伴们四处找资料的时间,如果你正好需要可以点此处免费获取

音视频开发的前景,相信大家从相关的招聘网站上就可以看到,不管是流媒体开发还是音视频处理开发,都是大量招人的,并且由于入门门槛相对较高,学习周期长,薪资也是居高不下。

另外:小编还收集整理一些音视频相关配套视频,相信能使大家学习起来更加快速有效:

文中所有资料都是免费分享给大家的,只需你动动手指点击此处就可直达免费领取方式了。

Android架构师之路很漫长, 一起共勉吧!学习之路犹如逆水行舟,不进则退,如果你松懈了, 那么你就退步了,而在Android开发工作中没有一门吃香独特的技术,想拿高薪也只能是望尘莫及的。做个勤奋向上的人,加紧学习,抓住中心,宁精勿杂,宁专勿多。

如果你正好需要这份完整版Android音视频开发,只需你多多支持我这篇文章。

快速入手通道:(点这里)下载!诚意满满!!!

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

猜你喜欢

转载自blog.csdn.net/weixin_43901866/article/details/112233469