专栏说明

本专栏专门讲解Android音视频方面的基础知识

虽然定位是基础知识,但是范围基本涵盖了数据采集,数据转码,数据播放,推流取流等所有常用知识

如果不是做特别专业的音视频开发,只是实现基本功能,这些知识已经完全足够

由于是Android音视频,因此需要具备NDK基础,没有这方面基础的请先学习我的NDK专栏

这篇博客我们从最基本的音视频格式,数据采集方法开始讲起

声波的特征

  • 音调:即通常说的高低音,本质是音波频率不同
  • 音量:即通常说的声音大小,本质是音波强度不同
  • 音色:即每个人的声音特色,取决于音调和音量的变化细节

从波形图观察声音特征

  • 音调越高,波形越密集,代表频率高
  • 音量越大,波形越高,代表强度大
  • 音色不同,波形的形状不同,代表震动细节不一样

音频数据采集

  • 采样,真实的声音波形是连续的,即一秒内波形包含了无数个点,显然这样的数据是无法全部存储的。所以我们要对波形进行采样,一秒内只保留若干个点。每秒的采样数量叫做采样率,单位为Hz
  • 量化,不止采样点的数量是无限的,每个点的音量值也是连续的,可能包含无数个小数位。这样的数据即便用近似值存储,占用字节空间也特别大。此时我们可以将整个波形的音量强度划分为若干个等量区间,实际音量靠近哪个临界值,就近似等于临界值,这样我们用整数就可以存储所有的波形强度。声波强度被划分为多少区间叫做采样精度,单位为bit,比如一个16位的整数,可以将波形强度划分为65536个级别
  • 声道,我们可以用几种波形分别代表不同的声音,比如一个代表背景音乐,一个代表人声,一个代表特效音,然后就可以在播放时,将不同声音进行任意组合。比如K歌时,我们可以只开启背景音乐,听歌时,我们可以组合音乐和人声,如果我们想在歌曲中掺入鼓掌声或笑声,还可以再组合一个特效音。这种相互独立又可以组合的波形,就叫做声道
  • 比特率,在采样率,采样精度,声道都确定后,每秒生成多少声音数据也就确定了,这个就叫比特率。比特率 = 采样率 * 采样精度 * 声道数
  • 裸数据,音频数据在经过采样和量化后,最终还要通过字节数据来存储和表示,没经过任何处理,原始的裸数据通常用PCM格式来存储
  • 编码,原始的裸数据占据空间是特别大的,所以在PCM的基础上,还要再压缩数据来精简体积,这个过程叫做编码。常见的音频压缩编码算法有WAV编码,MP3编码,AAC编码,OGG编码,压缩算法一般通过去除人耳无法识别的冗余数据来精简数据
  • 封装,以上说的编码和压缩,还是指单个采样点的编码和压缩,最终所有的采样点,以一定的格式合并成文件,这个操作叫做封装。用于存放所有音频采样数据的文件叫做音频容器,音频容器大多使用编码方式作为文件后缀名,即WAV文件,MP3文件,AAC文件,OGG文件
  • 播放,播放即是数据采集编码封装的逆过程,音频文件经过解封装,解码后即可获取PCM数据进行播放

图像的表示方法

  • 图像的表示有两种方法,一种是大家在初中物理就学过的RGB表示法,另一种是视频帧裸数据最常用的表示方法,YUV表示法
  • YUV表示法由RGB表示法演变而来,用Y表示灰度,U和V表示色度,这种方法可以独立使用Y就能表示黑白画面,可以方便在黑白模式和彩色模式之间切换,而且总数据占用的体积比RGB表示法更小

帧数据采集

  • 裸数据,和音频一样,未经任何处理过的图像数据叫做裸数据,一般用YUV格式表示
  • 编码,视频编码方式有H264,H265,VP9,AV1
  • 封装,视频容器,即视频文件,常见格式有AVI,MP4,RMVB

MPEG4,FFMPEG,H264,MP4

  • MPEG4是一个视频标准,它只声明规范,不实现具体细节
  • H264是一种帧数据编码方式,它遵循MPEG4规范
  • MP4是一种视频容器封装方式,它也遵循MPEG4规范
  • FFMPEG是一套强大的音视频开发软件,它遵循MPEG规范,可以胜任从采集到编码,解码,转码,播放,特效等绝大多数音视频开发工作

以上为大家讲解了在音视频开发中常见的一些术语,如文件格式,编码格式,视频标准等,还有数据采集和处理的过程原理

这些基本上是大家刚开始接触音视频,就会遇到的容易混乱的概念

大家理清这些,以后就可以专心学习其它更细的知识,而且能有一个大局观,不会学得越多反而越乱

【Android音视频开发】【001】音视频格式和采集编码流程相关推荐

  1. iOS音视频开发七:视频采集

    将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第七篇:iOS 视频采集 Demo.这个 ...

  2. iOS音视频开发八:视频编码,H.264 和 H.265 都支持

    我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第八篇:iOS 视频编码 Demo. ...

  3. linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用

    Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...

  4. 直播软件搭建音视频开发中的视频采集

    直播软件搭建音视频开发中的视频采集 前言 在直播和短视频行业日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的 ...

  5. 音视频开发录制功能 3GP格式的开发

    06我开始做3gp文件的播放器,但是关于3gp的文档太少了也很难找,在网友luxh的帮助下, 我终于有了第一份关于3gp文件格式的文档<ISO/IEC 14496-12,ISO媒体文件格式> ...

  6. iOS音视频开发十三:视频渲染,用 Metal 渲染

    本系列文章通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第十三篇:iOS 视频渲染 De ...

  7. 音视频开发基础入门|声音的采集与量化、音频数字信号质量、音频码率

    栏目介绍: 为了帮助开发者更好的理解音视频概念,进行音视频应用开发,ZEGO 即构科技联合内部音视频开发专家打磨了本套<音视频开发进阶>课程,帮助大家轻松入门并可以自己动手开发音视频 Ap ...

  8. 音视频开发—抖音GsyVideoPlayer视频底层分析使用

    theme: channing-cyan 一.初始化分析 1.初始化主要是构造了一个StandardGSYVideoPlayer 2.设置全屏布局的容器 代码如下: listVideoUtil = n ...

  9. python音视频开发_Python音视频开发:消除抖音短视频Logo的图形化工具实现

    一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现消除视频Logo的四种方法,并提供了详细的 ...

最新文章

  1. Python Tutorial(十):浏览标准库(一)
  2. Centos 6 克隆导致网卡eth0变成eth1、及修改网卡名的方法
  3. 【系统分析与设计】业务流程图绘制方法
  4. 【物联网工厂大揭秘】电路板、数传模块 是怎么生产制造出来的?
  5. @Python 开发者,如何更加高效地编写代码?
  6. SQL Serever学习4
  7. Linux下可用的开源网络调试助手
  8. 商业智能BI财务分析,如何从财务指标定位到业务问题
  9. 企业之家完成华为鲲鹏云服务兼容性认证
  10. 用onetab插件管理chrome的tab页,解决.crx安装时显示invalid的问题
  11. 转载:mongo常规操作 大于/小于/不等于……
  12. 《HTML5与CSS3基础教程》第四章学习笔记 文本
  13. 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
  14. dnet: Failed to open device lo0
  15. 无线网关怎样对接VOS?
  16. device的注册流程
  17. android获取网卡ip地址吗,Native.js获取android有线网络IP地址
  18. 购买域名之后如何设置DNS,DNS解析原理与dig命令使用
  19. Stream流(Stream,Lambda)
  20. LeetCode 101:和你一起你轻松刷题(C++)总篇章正在陆续更新

热门文章

  1. tplinkapp虚拟服务器,tplink虚拟服务器怎么远程桌面
  2. WES数据如何判断性别?
  3. Python爬取猫眼电影TOP100榜
  4. 一键还原、撤销追踪操作与文件还原
  5. 关于移动端选择所有的分组和选择多个单个的,跟发布朋友圈选择分组一样
  6. 星舆科技:打造下一代定位技术 以高精度位置感知构筑AI+时代基础力量
  7. 浏览器下载中文乱码问题目
  8. 移动应用开发技术——Android Studio实验二——Activity的调用——竹园摘竹子
  9. [闲聊]恐怖的Google人物头像识别技术
  10. pygame创建窗口后窗口未响应,或pygame 窗口每次无法正常关闭