1. 前言

本文是音视频工程师系列的第一篇文章。

学习音视频的过程中发现,网络上高质量的音视频技术博客不是很多。具有代表性的是

  • 雷神的 雷霄骅的CSDN博客

因为笔者是一名普通的软件开发人员,一向不喜欢高高在上或者晦涩难懂的理论,我们向来喜欢通俗易懂的东西。我认为知识的本身也应该是通俗易懂的东西。知识用晦涩难懂的东西描述出来,是对人类进步的阻碍,是知识垄断。

音视频的很多标准都是国外制定的,而且很多音视频开发基础库也是国外的,国内外技术差距是存在的。

笔者希望此系列教程能够以工程实现为出发点和落脚点,简化理论知识,化繁为简地解析音视频技术,为音视频技术的发展,为各位读者成长为音视频工程师贡献一点微不足道的力量。

2. 音视频数据内容信息分类

音视频数据内容从本质上讲,分为两种:

  1. 音视频数据:存储音视频本身想要传达的信息,即声音和图像。
  2. 音视频参数:存储音视频的控制参数。例如采样率,帧率等信息,是处理音视频数据时必不可少的信息。

3. 格式

封装格式(容器)

音视频内容包含了音视频数据和音视频参数两种信息,这两种信息打包放在一个文件中采用的格式,就叫做封装格式,也叫容器。个人觉得叫封装格式更容易理解。

目前,人们已经发明了很多种视频文件格式。当然发明这些格式并不是一拍大腿想起来的,而是在特定的使用场景下,对应的视频格式,可以更高效地存储和处理音视频数据。

由于封装格式在开发中基本上都是由库来处理,不需要我们自己封装和解析,所以可以先不做细致了解。在初学阶段的首要任务是把握音视频的整体工作框架,某些技术细节可以先放一放,后面再研究。这也是笔者建议的学习方法:学习精力分配要遵循二八定律,大部分领域中,只有大约20%的知识最重要,在这20%上面我们要花80%的时间,剩下80%不是那么重要的,只需要花20%的时间即可。

编码格式(压缩)

不经过压缩的音视频数据是很大的。例如:

1920x1080的RGB24图像,1秒25帧,不压缩,1小时的视频总大小约为 1920 * 1080 * 3 * 25 * 60 * 60 = 521G。
这种情况下,500G的电脑硬盘,最多只能存1个小时的电影;刷小视频会变得很卡;百度网盘128KB/s的速度下载一部电影需要一两个月…

所以,音视频 必须被压缩后存储或者传输

采用某种编码格式(即压缩格式)对音视频数据进行压缩,压缩后的音视频数据和音视频参数一起按照某种封装格式,被打包放入到音视频文件中,这样就生成了视频文件。

4. 音视频数据基本单位

4.1 采样/抽样

首先要明白采样/抽样的概念。
视频采样是指:以某一速度对物体连续拍照,不断记录物体在某一瞬间的画面。
音频采样是指:以某一速度连续记录声音在某一瞬间的震动幅度。
采样是对原事物的一种反映手段。对于采样后的音视频数据,计算机可以进行播放和加工处理。

4.2 视频帧

每一个时刻拍的那张照片,就叫视频帧,它是视频的基本数据单位。

4.3 PCM音频采样点

每一个时刻获取到的声音振幅,就叫PCM采样点,它是音频的基本数据单位。

了解这些基本够用了,不需要深入地去研究过多的细节。最主要的是要了解,通过采样可以将现实世界的事物反映到计算机中,变成可处理的数据。

5. 音视频参数

既然音视频数据是经过采样得到的,那么我们想要播放音视频数据,就必须用到采样过程中使用到的一些参数,这样音视频数据才能正确的反应原事物的状态。

5.1 音频参数

5.1.1 基本参数

音频有三个基本参数:

  • 采样位数:表示每个采样使用多少个比特位来保存,一般为4、8、16、32位(bit)。采样位数为8 bit时,每个采样点可以表示256个不同的采样值,而采样位数为16 bit时,每个采样点可以表示65536个不同的采样值。采样位数的大小影响声音的质量,采样位数越多,量化后的波形越接近原始声音,声音的质量越高,但是需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。通常,CD音质的采样位数是16 bit,移动通信是8 bit。

  • 采样频率(Sampling Rate):表示一秒钟采样多少次,常用的采样频率有44100=44.1k,以及44800=44.8k。采样频率必须至少是人可以听到的频率的2倍,这是由奈奎斯特采样定理得到的,采样频率再低的话,原声音中的频率就会丢失。奈奎斯特采样定理是信号与系统这门课中的,不懂的话没关系,不需要做过多了解。

  • 声道数:声道数是指有多少个录音麦克风放在音源的周围录音。声道间是独立、同时进行采样的。大部分音乐是双声道的,播放时用耳机听,会有一定的立体感。

上面三个是最基本的三个参数,只要知道了这三个参数,就可以将声音记录下来,而且可以播放出来。

这三个参数怎么记忆呢?按照从小到大、从少到多的逻辑记忆即可:

  • 先从单个采样点开始,存储一个点所用位数叫采样位数;
  • 一秒钟采样得到的采样点的个数叫采样频率;
  • 同时进行的采样任务的个数叫声道数。

5.1.2 网络参数

为什么要说网络参数呢,由于互联网的发展,音视频成为一种服务,逐渐出现在互联网上。在线看电影,刷短视频,上网课等等都已经成为了一种新的生活方式。把音视频搬到网络上,必然会有一些和网络相关的技术参数,来实现对音视频服务的控制。有如下几种:

  • 码率:单位是 比特每秒,英文是bps(bit per second)。此参数表示播放某音频需要占用多少网络带宽。因为码率是网络环境下的参数,所以要结合网络来理解。网络带宽就是网络速度,单位是bps。咱们家里办的宽带,一般都是百兆千兆的带宽,听着似乎很快,但是由于它的单位是bps,实际上转换成字节(Byte),要除以8,百兆不过12.5MB/s,千兆不过125MB/s每秒。因为文件是以字节为单位衡量的,所以这个速度实际上并不是像听起来那么快。所以,码率是衡量音频在网络上传输时,对网络带宽占用量的一个参数。当网络带宽比较小时,可以选择降低音视频码率,这可以通过降低音频质量来实现;当网络带宽比较大时,可以选择提高音频码率,传输更高质量的音视频。

5.2 视频参数

5.2.1 基本参数

视频有三个基本参数:

  • 像素格式:像素用来保存某一点的颜色,这个颜色可以采用不同的格式存储。常见的有RGB、YUV、HSV等。学习这些格式需要一定的数学运算,我们后面将单独写一篇文章讲解,并计划写一个工具来实现他们之间的转换。
  • 画面分辨率:分辨率是指一帧画面的长宽各有多少像素,一般的写法是宽 * 高,如1920 * 1080。分辨率越高,画面越细腻。
  • 帧率:帧率是指1秒钟播放的帧的个数,帧率越高,画面越流畅,帧率越低,画面越卡顿。

对视频基本参数,也可以采用从小到大的逻辑记忆:

  • 先从最基本的像素开始,存储某颜色的格式叫像素格式。
  • n个像素构成一帧画面,帧的长宽叫做分辨率。
  • n个帧连续播放才能形成视频,帧率是指1秒中播放的帧的个数。

5.2.2 网络参数

视频的网络参数和音频类似,主要有:

  • 码率:解释同音频的码率。需要提及的是,视频的码率等级比音频多一些,因为视频的数据相对于音频数据,大了不止一点点,所以视频码率等级分的也更多。

结语

本文主要是梳理了一下音视频中的必须了解的基本知识。笔者本系列文章的定位是既要精简又要通俗易懂。现代社会每个人都很忙,尽量降低学习成本,才是一个优秀的教程应该做的事情,而不是把简单的东西用一些专业术语和公式把它复杂化。后面的文章会陆续在公众号及网站更新,希望大家多多关注。


附录及参考链接

  • 雷神博客链接:视音频数据处理入门:PCM音频采样数据处理
  • PCM百度百科:https://baike.baidu.com/item/PCM/1568054
  • 音频基础知识—PCM浅析:cloud.tencent.com/developer/article/1802685

本文原创发布于微信公众号Qt未来工程师。

音视频工程师(初步)(一)音视频的基本概念相关推荐

  1. 技术系列课|音视频测试实战——记音视频测试那些事

    2020年持续火热的直播带货.在线教学.视频会议产品,让越来越多的人开始钻研并专注在音视频技术领域.音视频质量是如何一步步提升的?QA人员日常是如何做评测的?本次分享中,网易智慧企业部资深音视频测试工 ...

  2. 音视频编解码技术之视频编码基本概念介绍

    视频压缩名字解释: 1.有损和无损压缩:在视频压缩中有损(Lossy )和无损(Lossless)的概念与静态图像中基本类似.无损压缩也即压缩前和解压缩后的数据完全一致.有损压缩意味着解压缩后的数据与 ...

  3. 音视频开发二:音视频知识总结

    文章目录 简介 简单理解,音视频原理 音视频理论基础 音频 声音介绍 **为什么要存在数字音频 ?** **什么是数字音频?** 从"模拟信号"到"数字化"的过 ...

  4. LiveVideoStackCon 2018技术培训 — 从FFmpeg视频编码到抖音式视频特效实现

    LiveVideoStackCon 2018技术培训,"从FFmpeg视频编码到抖音式视频特效实现".我们拒绝"纸上谈兵",坚持技术讲解与实战训练相结合.门票火 ...

  5. 音视频前沿:新一代 AV1 视频标准究竟是怎样一种存在?

    导语 |  AV1是开放媒体联盟Alliance for Open Media (AOM) 开发的第一代视频编码标准,自推出以来获得了产业界巨大关注和支持.腾讯多媒体实验室也加入进来和其他公司团队一同 ...

  6. 音视频开发一:音视频基础概念

    文章目录 基础概念 音频 声音介绍 种类 音质 声音存储的发展 采样频率 信号频率 声道 声道布局 音帧 帧时长 采样数 采样位数 存储空间 码流(比特率) 采样格式 音频编码(音频压缩) 音频解码 ...

  7. 阿里云视频云低代码音视频工厂正式上线,以vPaaS全新定义企业级音视频应用开发

    1月5日,阿里云视频云"低代码音视频工厂vPaaS"正式上线,极大程度降低音视频开发门槛,打破传统音视频技术壁垒,全新定义企业级的音视频应用开发. 低代码音视频工厂基于云原生.音视 ...

  8. 移动版“全功能”Photoshop发布!还有AI剪视频一键传抖音、一键抠图功能上线 | Adobe MAX 2019...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在,你真的可以在iPad上用Photoshop了. 图片变AR.AI秒抠图.AI剪视频也通通正式上线. 这都是刚刚结束的Adobe MAX ...

  9. 抖音AI火了!以视频搜视频,不知小姐姐叫什么,也能搜出她的影像

    痴栗子 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 以图搜图,已经无法满足人类了. 如今,一个以视频搜视频的新技能上线了. 比如,你捕捉了一只可爱的妹子,想要看到更多她的影像,只要点一 ...

最新文章

  1. 北航云计算公开课 01 Introduction to Cloud Computing
  2. 那些学校计算机招不满,那些招不满人的985院校,请留意!
  3. 码crc校验_CRC计算
  4. css学习笔记2--多重边框
  5. android提交服务器,Android向WEB服务器提交数据
  6. QT绘制饼图和自定义饼图切片
  7. linux 开启 自动挂载U盘 权限的设置
  8. 前端性能优化之图像优化原理
  9. axis2 默认端口_使用axis2创建webservice
  10. Hadoop各个组件与端口
  11. 累加寄存器(AC)入门
  12. 【Python实例第17讲】均值偏移聚类算法
  13. postman工具 如何传递当前时间戳和MD5加密
  14. java字体除了宋体,为什么许多中文网站的主要字体仍然采用宋体而不是微软雅黑?...
  15. 苍井空老师推特唤醒中国网民正版意识
  16. 360浏览器下载|360安全浏览器下载
  17. linux网卡命名规则及修改ip地址
  18. android studio lint,Android Studio Lint 工具
  19. php 2038,php实现兼容2038年后Unix时间戳转换函数
  20. js数字输入的验证~

热门文章

  1. 我的第一次Pascal程序
  2. hihocoder1477 闰秒
  3. 用C#中的string.Replace有错误,无法替换。
  4. [算法][二分查找][排除法]
  5. druid 非对称加密_springboot配置文件中mysql的密码进行加密
  6. 简述oracle的主要数据库对象,Oracle数据库数据对象分析
  7. mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
  8. 234C. Weather
  9. php文件解锁,php文件锁怎么用
  10. Java设计模式笔记(2)工厂方法模式