音视频基础知识大全

今天跟几个朋友聊天,他们问我是不是在腾讯,在腾讯做什么?然后我就说了我做的事情,我说我在腾讯做音频方面的开发,对外的产品主要是腾讯会议。然后他我一个朋友就截图了他的腾讯会议的软件截图过来。

音视频是一个很好玩,也是一个发展了很久的技术,现在的很多技术知识都还是沿用原来的。不过音频的东西,是挺好玩的。

下面是一些音视频方面的资料

——

音视频开发要掌握图像,视频,音频的基础知识,并学会如何对他们进行采集,渲染,处理,传输等一系列开发和应用。

采集解决了数据从哪里来的问题,渲染解决的是数据怎么崭新的问题,处理解决的是数据怎么加工的问题,传输解决的是数据怎么共享的问题。这里的每一个门类都可以深挖,衍生出一 个个充满技术挑战的话题。

eb8f6fe7f6e539744a1b8e449b6afc2a.png

一、音频

音频技术是为了记录、存储和回放声学现象才发明的,所以先了解声学现象对学习数字音频是有很大帮助的。

1、声音的基础知识

声音的产生是由于物体的振动,造成空间内空气的波动而共鸣发音,再由大气的传播,使人的听觉神经感受到的一种物理现象。

声音的三要素是响度,音调和音色。

响度,和声音震动的幅度有关,用的力越大,人的鼓膜震动幅度就越大,发出的声音越响。

音调,主要是和频率有关。声波的频率越高,音调也越高。

音色在同样的音调(频率)和响度(振幅)下,钢琴和小提琴的声音听起来是完全不相同的,因为它们的音色不同。

声音传播的介质是固体、液体、气体。介质不同,传播的速度也不同。真空的情况下声音是无法传播的。

2、数字音频

对自然界的声音(模拟信号)进行采样,采样就是根据奈奎斯特定理在时间轴上对信号进行数字化信号,即按照一定时间间隔△t 在模拟信号 x(t)上逐点采取其瞬时值。采样率越高,声音的还原程度越高,质量就越好,同时占用空间会变大。

量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。

编码是按照一定的规律,把量化后的值用二进制数字表示,然后转化成二值或多值的数字信号流。这样得到的数字信号通过可以通过电缆,卫星通道等数字线路传输。在接收端与上述模拟信号数字化过程相反,再经过后置滤波再恢复成原来的模拟信号。

上面数字化的过程又叫做脉冲编码调制,通常我们说的音频的裸数据格式就是脉冲编码调制(PCM)数据。描述一段 PCM 数据需要几个量化指标,常用的量化指标是采样率,位深度,字节序,声道数。

采样率(Sample rate):每秒钟采样多少次,以 Hz 为单位。

位深度(Bit-depth):表示用多少个二进制位来描述采样数据,一般为 16bit。

字节序:表示音频 PCM 数据存储的字节序是大端存储(big-endian)还是小端存储(little-endian),为了数据处理效率的高效,通常为小端存储。

声道数(channel number):当前 PCM 文件中包含的声道数,是单声道(mono)、双声道

3、音频编码

以 CD 音质来说,量化格式是 2 字节,采样率是 44100,声道数是 2,这些信息就描述了 CD 的音质。那么 CD 的数据采样率 =44100*16*2=1378.125kbps, 在 1 分钟的时间里 ,需要占用的存储空间=1378.125 * 60/8/1024=10.09MB。并不小。

压缩算法包括有损压缩和无损压缩。

常用的音频编码方式有以下几种:

MP3,MPEG-1 or MPEG-2 Audio Layer III,是曾经非常流行的一种数字音频编码和有损压缩格式 , 它被设计来大幅降低音频数据量 。

AAC,Advanced Audio Coding,是由 Fraunhofer IIS、杜比实验室、AT&T、Sony 等公司共同开发, 在 1997 年推出的基于 MPEG-2 的音频编码技术。AAC 比 MP3 有更高的压缩比,同样大小的音频文件,AAC 的音质更高。

WMA,Windows Media Audio,由微软公司开发的一种数字音频压缩格式,本身包括有损和无 损压缩格式。

二、视频

像素:屏幕显示是把有效面积化为为很多个小格子,每个格子只显示一种颜色,是成像的最小元素,因此就叫做“像素”。

分辨率:屏幕在长度和宽度这俩个方向上各有多少像素,就叫做分辨率,一般用 AXB 来表示。分辨率越高,每个像素的面积越小,显示效果就越平滑细腻。

每一个像素点的 RGB 通道分别对应屏幕位置上的子像素点绘制到屏幕上,进而显示整个图像。

1、RGB 表示图像

一张图像是由每个像素点绘成的,那么一像素点的 RGB 又该如何表示呢?

浮点表示

归一化表示,取值范围 0.0~1.0,如 openGL 对每个子像素点的表示方式。

整数表示

取值范围 0~255 或者 00~FF,8bit 表示一个子像素。

如图像格式 RGBA_8888,表示 4*8bit 表示一个像素,而 RGB_565 用 5 + 6 + 5 bit 表示一个像素。一张 1280 * 720, RGBA_8888 格式的图片的大小= 1280 * 720 * 32bit = 1280 * 720 * 32 / 8 byte,也是位图在内存中占用 的大小。所以每一张图像的裸数据都是很大的。

2、YUV 表示图像

YUV,是另外一种颜色编码方法,视频的裸数据一般使用 YUV 数据格式表示。Y 表示明亮度,也称灰度 值(灰阶值)。UY 表示色度,均表示影响的色彩和饱和度,用于指定像素的颜色。

亮度需要透过 RGB 输入信号建立,方式为将 RGB 信号的特定部分(g 分量信号)叠加到一起。

色度定义了颜色的色调和饱和度,分别用 Cr、Cb 表示,(C 代表分量(是 component 的缩写))。Cr 反映 RGB 输入信号红色部分与 RGB 信号亮度值之间的差异。Cb 反映 RGB 输入信号蓝色部分与 RGB 信号亮度值之间的差异。

视频帧裸数据之所以采用 YUV 色彩空间,使用为亮度信号 Y 和色度信号 UV 是分离的。当无 UV 色度信号,只有 Y 亮度信号时,那么这样表示的图像就是黑白灰度图像。彩色电视正是使用 YUV 空间使用 Y 亮度信号解决彩色电视与黑白电视的兼容问题、使黑白电视也能接收彩色电视信号。最常用的 YUV 都使用 8 个 字节来表示,所以取值范围就是 0~255。

音频最开始需要采样,图像也是一样的,YUV 最常用的采样格式是 4:2:0。

YUV 格式有两大类:planar 和 packed

1.对于 planar 的 YUV 格式,先连续存储所有像素点的 Y,紧接着存储所有像素点的 U,随后是所有像素 点的 V。

2.对于 packed 的 YUV 格式,每个像素点的 Y,U,V 是连续存储的。YUV420(YUV420-Package),分辨率为 84(wh)的 YUV 图像,则内存分布如下

2a42fb32f0c0a7b45fb0c849760b95ca.png

YUV420P(YUV420-Planar) 分辨率为 84(wh)的 YUV 图像,则内存分布如下

634c987864b251c6a682ff607b279a60.png

YUV 码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2, YUV4:2:0。

YUV 4:4:4 采样,每一个 Y 对应一组 UV 分量。YUV 4:2:2 采样,每两个 Y 共用一组 UV 分量。YUV 4:2:0 采样,每四个 Y 共用一组 UV 分量。

3、YUV 和 RGB 转化

凡是渲染到屏幕上的东西(文字、图片或者其他),都要转换为 RGB 的表示形式,那么 YUV 的表示形 式和 RGB 的表示形式之间是如何进行转换的呢?

为了实现格式转换,我们首先要明确待转换格式和目标格式的特点和相互转换关系,这是编程实现转换的核心。对于 RGB 转 YUV 的过程,我们要首先拿到 RGB 文件的数据,再通过上图的 YUV 计算公式对其做 运算,得到 YUV 数据,从而实现转换。而对于 YUV 转 RGB 则要首先获得 YUV 数据,用第二组 RGB 公式计 算得到 RGB 数据。在本实验中,转换公式如下。

Y = 0.298R + 0.612G + 0.117B; 
U = -0.168R - 0.330G + 0.498B + 128; 
V = 0.449R - 0.435G - 0.083B + 128; R = Y + 1.4075( V - 128); 
G = Y - 0.3455( U - 128) - 0.7169( V - 128); 
B = Y + 1.779( U - 128);

4、视频编码

我们为什么要编码呢?原因很简单,因为 YUV RGB 形式的视频数据太大了。编码的目的就是为了压缩, 让各种视频的体积变得更小,有利于存储和传输。

视频编码的作用:将视频像素数据(RGB,YUV 等)压缩成视频码流,从而降低视频的数据量。视频编码方式有以下几种方式:

c6ab3c2a156e345fe98c4a29184805a8.png

5、编码标准

国际上主流制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准 有 H.261、H.263、H.263+、H.264 等,另一个是“国际标准化组织(ISO)”它制定的标准有 MPEG-1、MPEG-2、 MPEG-4 等。

WMV 是微软推出的一种流媒体格式,它是在“同门”的 ASF 格式升级延伸来得。在同等视频质量下,WMV 格式的文件可以边下载边播放,因此很适合在网上播放和传输。

VP8 来自 On2 的 WebM, VPX(VP6,VP7,VP8,VP9),这个编码设计用于 web 视频。

WebRTC,在 2010 年 5 月,Google 以大约 6820 万美元收购了 VoIP 软件开发商 Global IP Solutions 公司,并因此获得了该公司拥有的 WebRTC 技术。WebRTC 集成 VP8, VP9。

AV1 是一个开放,免专利的视频编码格式,针对互联网传输视频而设计。

AVS 是中国具备自主知识产权的第二代信源编码标准,是《信息技术先进音视频编码》系列标准的简称, 其包括系统、视频、音频、数字版权管理等四个主要技术标准和符合性测试等支撑标准。

H265与 H.264 编解码器相比,HEVC 在压缩方面提供了重大的改进。HEVC 压缩视频的效率比 H.264 要高出两倍。使用 HEVC,相同视觉质量的视频只占用一半的空间。

VP9 是由 Google 开发的开放式、无版权费的视频编码标准,VP9 也被视为是 VP8 的下一代视频编码标准。

6、H.265 与 VP9

H.265 与 VP9 编码质量的对比测试,数值越小,则表示编码质量越好。从对比中我们发现 H.265、VP9 两者的差别并不大,整体平均分只差了 0.001,在实际应用中几乎不存在差异。

在编码时间对比中,VP9 完胜 H.265,无论是 4K 视频还是 1920、1280 分辨率的视频,VP9 的编码 耗时都比 H.265 短很多。但是 H.265 的解码效率略高于 VP9 。

H.265 继承了 H.264 的视频编码标准体系,在商业应用中更加广泛,多使用于安防、军政、企业等场 景中,但由于其专利持有者过多,导致其商用费用过高,在推广中面临较大阻力。

VP9 由 Google 研发,可以免费使用。在实际推广中,微软、苹果等公司不愿看到 VP9 一家独大,其 他互联网厂商也不希望主流视频编码格式被垄断,因此目前在主要在 Google 自家的产品中得到支持,其他 使用 VP9 的大厂并不多。

就目前而言,H.265 在企业、安防中使用较为广泛,而 VP9 因其简易、实用的解决方案以及开发免费的特性在互联网应用场景中使用较多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解Android Touch事件的传递机制

1、基础知识 (1) 所有Touch事件都被封装成了MotionEvent对象,包括Touch的位置、时间、历史记录以及第几个手指(多指触摸)等。 (2) 事件类型分为ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANCEL,每个事件都…

项目专访|在ESP32上移植Linux

大家好,我是写代码的篮球球痴,最近在网上看到一个非常有意思的项目,有大神把Linux内核移植到ESP32上,并成功运行。在国外网站上,有很多人在议论这件事情https://hackaday.com/2021/07/21/its-linux-but-on-an-esp32/ES…

4.3英寸屏双核 LG Prada K2通过FCC认证

我们此前曝光过一款型号为LG Prada K2的智能手机,这款手机不仅配置出色而且外观极为时尚。如今,来自国外媒体的最新消息显示,LG Prada K2已经通过FCC认证,这意味着它距离上市已经为期不远。 LG Prada K2通过FCC认证 LG Prada K2是…

国内MCU厂商也开始卷了

最近我大学老师准备做一个项目,需要用到STM32的芯片,然后我就帮忙着一起找,不找不知道,找了才知道这个东西真的是贵。然后我就看了GD32,不了解不知道,这个东西也是真的贵。然后我又去看的MM32,结…

Google Flash转换HTML5工具Swiffy测试版发布

Google今年六月推出的Flash转换HTML5工具已经从实验室转为测试版,并新增一个Flash Professional扩充模组,可以直接将档案储存为HTML5格式。一开始Swiffy仅以网站方式,让使用者上传Flash的.swf档案,支持Flash所使用的swf 8格式与Ac…

什么是MCU里应尽量遵循的寄存器谨慎赋值法?

有人觉得搞MCU是一件简单的事情,往往觉得简单的事反而出错更多,今天转发一篇我朋友痞子衡的文章,说说MCU里面的寄存器的事。大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是改动i.MXRT1xxx里IOMUXC_G…

惠普电脑如何下载c语言软件,惠普笔记本电脑上的语言栏怎么弄

满意答案mygood12f32013.01.23采纳率:53% 等级:11已帮助:6723人首先运行“regedit”,展开“HKEY_CURRENT_USER/keyboard layout/preload”分支,在其下新建一个字符串值,命名为“1”,并将它对…

单件模式(Singleton Pattern)

1、单件模式试用与窗口管理器或者是打印假脱机、数据库连接池;2、目的:在单独得对象实例中,集中了这个对象所属类得所有权利;3、DoNet解决方案 public class DotNetSigleton { private static readonly DotNetSiglet…

LeetCode:二进制手表【401】

LeetCode:二进制手表【401】 题目描述 二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。 每个 LED 代表一个 0 或 1,最低位在右侧。 例如,上面的二进制手…

反馈电路中相位补偿,到底是什么鬼?

帮朋友做镍氢充电器,利用镍氢电池充满电时电压有一个微小的下降这个特点来识别是否已经充满,比如1.2V的镍氢电池,快充满的时候,电压在1.35V,之后逐步下降,电压可以低于1.30V。所以需要单片机间歇检测电池两…

RoseHA集群:RHEL+RoseMirror+Oracle【2】

博主正在参加“2011年度IT博客大赛”,欢迎帮顶! 投票地址 --------------------------------------------- 三.安装Rose Mirror HA:准备工作:在安装 Rose Mirror HA 前检查相应的软件包是否安装,如果没有安…

c语言笔试面试面试题,最新华为c语言笔试面试题

最新华为c语言笔试面试题本文是百分网小编搜索整理的一份最新华为c语言笔试面试题,有需要的朋友们一起看看吧!想了解更多相关信息请持续关注我们应届毕业生考试网!1、局部变量能否和全局变量重名答:能,局部会屏蔽全局。要用全局变量&#xff…

【项目管理】CMMI-需求跟踪矩阵模版

需求菜单/功能模块需求名称需求变更类型(新增、修改)需求状态(已建议、已批准、已设计、已实现、已验证、已删除)优先级(高、中、低)软件需求(工作产品、章节号)概要设计&#xff08…

嵌入式工程师薪资调查

大家好,嵌入式行业薪资一直是大家关心的问题,刚好我的好朋友发起了一个调查,大家可以匿名写下自己的薪资,也可以看看其他的薪资水平。3月4月份确实是找工作的好机会,求职和跳槽最好的月份要来了吗 ,最近看到…

在STM32单片机上跑神经网络算法

摘要:为什么可以在STM32上面跑神经网络?简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,支持转化的…

CF Edu54 E. Vasya and a Tree DFS+树状数组

Vasya and a Tree 题意: 给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x; 思路: 多开一个vector记录每个点上的操作。dfs这颗树,同时以深度开一个树状数组,踩…

通信教程 | 串口丢数据常见的原因

UART:Universal Asynchronous Receiver / Transmitter,通用异步收发传输器,即我们通常说的串口。串口是工程师最常用的串行外设之一,但在实际应用中还是会经常遇到各种问题。比如:丢失一字节数据。今天我们就结合STM32…

三次握手 四次握手 与socket函数的关系

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket&am…

110-简单类型之整数类型和小数类型

简单类型-整数 简单类型-小数 float myFloat12.5f;转载于:https://www.cnblogs.com/wuxiaohui1983/p/9965493.html

看了2022华为春季发布会

我之前在一家智能家居的公司干过,而且我是从0开始做的,所以对这个行业多少还是有点了解,我从技术人角度看一下这场发布会。看到了智能家居的几个产品,然后再想起来我们之前做的东西,嗯,感觉我们做的提前做了…