一部童年电影带你搞懂,音视频开发到底是个啥玩意
在一个夜黑风高的晚上,一颗激动的心,一双颤抖的手,点开了那个神秘的网站。
进去后,一股东京的热浪扑面而来。那一刻,眼前电影的激情丝毫不逊色于好莱坞大片。
那狂野而又原始的咆哮,刺激着你身体的每一个细胞。
你也情不自禁的随着电影动了起来。
两分钟后,随着身体的一阵颤抖,整部电影变得索然无味。
进入了贤者模式的小马开始思考,这么精彩的电影,是怎么呈现到我面前的呢?
假设电影的主角名叫小泽。那么小泽老师从拍电影,到你看电影这中间,发生了什么呢?
简单来说,音视频开发就是要掌握图像、视频、音频的基本知识,并对它们实施采集、渲染、处理、传输等一系列操作。
采集
首先,肯定得需要一台摄像机....咳咳,没错,摄像机一秒钟可以捕获30张小泽的照片,也就是30帧。也就是我们所看到的:视频
光看画面肯定是不行的,怎么能没有小泽老师甜美的声音呢。所以,我们还需要麦克风,来采集小泽的声音,也就是我们所听到的:音频
编码
声音和视频的数据特别大,并且重复数据很多。为了传输和存储,需要将冗余数据去掉,这就需要编码。什么h264,h265说的就是编码的算法
原始数据为什么要编码呢?直接保存不行么,其实主要是为了减小文件的大小,便于传输和保存。如果不经过编解码处理,那一部几分钟的电影可能就要几个G大小。那么大的文件,想象一下你在偷偷下载或者拷贝的时候,是多么的焦虑。
封装
编码后的数据会被封装起来。相当于Java的容器,可以有hashmap,linkedList的,音视频的格式类型可以有MP4、MKV等等封装格式。
传输
传输解决的就是小泽老师的作品,是怎么通过播放器(平台)呈现到你面前的问题了。你既可以看小泽老师的直播,也可以看小泽老师的视频。既可以在线看,也可以下载后离线观看。甚至可以从隔壁小马的U盘里拷贝过来,这都是传输路径。数据共享最重要的一点就是传输协议。产生的带宽不一样,费用也不同。
解封装
播放器首先会解封装,将小泽的身姿(视频),甜美的声音(音频)等数据解析出来。
解码
解析出来的数据不能够被播放器直接使用,所以还需要视频解码(以前的播放器加载的时候会显示解码中,小伙伴们应该都看到过,比如现在的bilibili)。回到主题,摄像机所采集的数据是需要通过编码才可以封装成MP4的,所以当播放器将视频提取出来的时候,也就需要解码才可以播放出来。
渲染播放
无论是哪个平台、哪个播放器。图像、视频最终都是要绘制到视图上面,而音频最终都是要输出到扬声器。平台(播放器)将解码后的视频、音频同步后,分别交给视频驱动(显卡)和音频驱动(扬声器)。就是最终呈现在你面前的小电影了。
用一张流程图总结一下:
看到这里大家是不是觉得Android音视频开发好像也就那么回事呢?理解起来也不难嘛。
为了要大家更轻松无痛的上手学习Android音视频开发。我特邀前爱奇艺高级工程师Lance为大家带来《Android--音视频开发实战》直播分享,两天时间,秋名山车神带你熟练掌握音视频编码实战、泛娱乐直播系统分析和推流实战!
前爱奇艺高级工程师,某游戏公司主程
专精领域:移动平台开发,NDK、架构、性能优化;
具备移动开发基础;
具备一定自学能力;
立志成为高级工程师、架构师的安卓开发者;
3.15 Android音视频编解码实战
音视频编解码原理
h264码流分析
Android 编码实践
3.16 泛娱乐直播系统分析与推流实战
直播系统组成与流媒体协议
RTMP协议规范
手机端推流器实践
《Android音视频开发入门进阶核心笔记》
音视频知识庞杂,通俗易懂的资料非常少,目前也没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,可能还充斥着大量的错误信息,使得很多初学者掉到坑里就爬不出来了。有了这份学习笔记,可以助你在音视频学习中节省大量时间。
文中福利免费赠给参加训练营的学员
加薇薇老师微信报名训练营
立即获取
(如遇扫码频繁受限,点击左下角的阅读原文)