【以音视频开发进阶指南为基础】音视频基础概念

news2024/9/23 11:23:06

一、数字音频

数字音频可以粗糙的理解为将本质是模拟信号的声音音频数字化,那么如何数字化呢,需要经过三个步骤:采样、量化和编码

采样:将声音的振动信息转化为电信号,再对电信号进行放大处理得到声音的模拟信号,再对声音的模拟信号(初中物理的声音振幅图)进行采样就是在时间轴上对模拟信号进行高频率的抽取。把时间连续的模拟信号转换成时间离散、声音幅度连续的信号(相当于把折线图拆分成高度密集的柱状图)。一般都是每隔相等的一小段时间采样一次,其时间间隔称为采样周期(柱之间的间隔),倒数称为采样频率。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2hlbmd4dXlh,size_20,color_FFFFFF,t_70,g_se,x_16

根据奈奎斯特定理(即采样),按照比声音最高频率高两倍以上的频率对声音进行采样。人耳可以识别的声音频率范围是20HZ和20KHZ,所以为了让人可以听到听觉上高质量的音频,我们的采样频率一般为44.1KHZ,这样可以让人耳听到的声音质量不会有被降低的感觉。采样频率越高,可恢复的声音信号越丰富,其声音的保真度越好。

量化:把幅度上连续取值(模拟量)的每一个样本转换为离散值(数字值)表示(可以理解为对柱状图进行量化深度的横切),因此量化过程又是也称为A/D转换(模数转换)。量化后的样本是用若干位二进制数来表示的,位数的多少反映了度量声音波形幅度的精度,称为量化精度,也称为量化分辨率,也叫量化深度或者说位深度。

举例:每个声音样本的振幅幅度若用16位比特表示,16比特即两个字节,一个short,所表示的范围是[-32768,32767],共有65536个可能的取值,因此深度是65536,精度是1/65536,精度高;若只用8位表示,则样本的取值范围是0~255,深度是255,精度是1/256。精度低。

量化精度越高,所能表示的声音振幅就越丰富,声音的质量越好,需要的存储空间也就越多;量化精度越低,声音质量越差,而需要的存储空间也越少。

声道数:记录声音时,如果每次生成一个声波数据,称为单声道;每次生成两个声波数据,称为双声道。使用双声道记录声音,个人理解是采用不同位置接收到的两个声波,能够在一定程度上再现声音的方位,反映人耳的听觉特性。

数字音频存储大小:采样频率、量化深度数越高,声音质量也越高,保存这段声音所用的空间也就越大。立体声(双声道)存储大小是单声道文件的两倍。即:文件大小(B)=采样频率(Hz)×录音时间(S)×(量化深度/8)×声道数(单声道为1,立体声为2)
如:录制1分钟采样频率为44.1KHz,量化深度为16位,立体声的声音(CD音质),文件大小为:
44.1×1000×60×(16/8)×2=10584000B≈10.09MB

编码:编码是按照一定格式记录采样和量化后的数字数据,比如顺序存储或者压缩存储等。

这里面涉及了很多种音频数据的编码存储格式,通常所说的音频的裸数据格式就是脉冲编码调制(PCM)格式数据。描述一段PCM数据一般需要一下几个概念:量化格式(sampleFormat)或者说位深度或者说量化深度、采样率(sampleRate)、声道数(channel)。

这几个概念也是用来描述判断声音的音质的指标。比如描述一段CD音质:该CD的位深度是16比特(2个字节)、采样率为44100、声道数为2。

上述的数字音频存储大小,其实不是一个用来衡量音频大小的标准指标。对于声音格式常用数据比特率来描述声音的大小,即1S内声音对应的比特数目。

数据比特率:CD音质的数据比特率是:44.1KHZx2Bx2x1s=176.4KBPS。接下来在用数据比特率x60s就同样得到1min音频的存储容量,是约10.1MB。符合奈奎斯特定理的CD音质的音频一般被视作“无损音频”。

压缩编码:上述1min的音频就要占据10.1MB的存储空间,耗费10.1MB的网络流量,很直观的发现存储代价和网络传输的代价都有点高,因此我们需要对音频进行压缩。那怎么进行压缩呢?其实也是通过编码技术对音频进行压缩的,这种编码叫做压缩编码。

压缩编码的重要指标直观可见是压缩比,理所当然它需要小于1。

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

无损压缩是指解压缩后声音可以和压缩前的声音完全一致,也就是说完全复原。

在常用的压缩格式中,用的较多的方法是有损压缩,也就是说会丢失声音的一部分信息然后无法完全复原。往往压缩比越多,丢失的信息也就越多,信号还原后的失真也会越高。

因此根据不同的应用场景(存储设备(手机和服务器)传输网络环境(国内和国外)播放设备(手机和服务器)等),可以采用不同的压缩编码算法,如PCM、WAV、AAC、MP3、Ogg等,尽量的压缩掉冗余信号(即不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号等),从而尽可能让 可以在声音复原时减少失真的必要信息 丢失最少。

下面介绍几种常用的压缩编码格式:

(1)WAV编码

PCM(脉冲编码调制)是Pulse Code Modulation的缩写。WAV编码的一种实现(哪种WAV实现都不会进行压缩操作)就是在PCM的数据格式前面加上44字节,分别用来描述PCM的采样率、声道数、量化格式等信息。

  • 特点:音质非常好,大量软件都支持。
  • 适用场合:多媒体开发的中间文件、保存音乐和音效素材。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2hlbmd4dXlh,size_20,color_FFFFFF,t_70,g_se,x_16

理解PCM数据的参考链接:PCM数据格式介绍_SuperLi-CSDN博客

(2)MP3编码

MP3编码具有不错的压缩比,使用LAME编码(MP3编码格式的一种实现)的中高码率的MP3文件,听感上非常接近源WAV文件。在不同的应用场景下,需要调整合适的参数来达到最好的效果。

  • 特点:音质在16KB/s以上表现还不错,压缩比比较高,大量软件和硬件都支持,兼容性好
  • 使用场合:高比特率下对兼容性有要求的音乐欣赏。

(3)AAC编码

AAC是新一代的音频的有损压缩技术。它通过一些附加的编码技术(比如PS、SBR等),衍生出了LC-AAC、HE-AAC、HE-AAC v2三种主要的编码格式。

LC-AAC是比较传统的AAC,主要应用于中高码率场景的编码(>=10kB/s);

HE-AAC(相当于AAC+SBR)主要应用于中低码率场景的编码(>=10kB/s);

HE-AAC v2(相当于AAC+SBR+PS)主要应用于低码率场景的编码(<=6KB/s)。

事实上,大多数编码器在(<=6KB/s)时自动使用PS技术,而大于这个值则不加PS,相当于普通的HE-AAC。

  • 特点:在小于16KB/s的码率下表现优异;
  • 场合:多是用于视频中音频轨的编码。

(4)OGG编码

OGG很有潜力,算法出色,可以用更小的码率达到更好的音质,16KB/s的OGG编码比码率为24KB/s的码率更高的MP3编码质量还好。

  • 特点:可以用比MP3更小的码率实现比MP3更好的音质,高中低码率下均有良好的表现,问题是对硬件或者软件的兼容性不够好,也就是说不是所有的芯片和软件算法都兼容了OGG算法;另外由于目前还没有媒体服务软件的支持,所以基于OGG的数字广播无法实现,因此不具备流媒体特性。
  • 适用场合:语音聊天的音频消息场景。

二、图像

视频由一幅幅图像构成,所以先学习图像。

白光可以被分解为红绿蓝三种无法再被分解的光,所以红绿蓝三种色光被称为三原色光。白光中含有等量的红光(R),绿光(G),蓝光(B)。

 

 

三、视频

 

 

 

 

 

 

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

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

相关文章

POE交换机常见问题解答

POE交换机通过网线供电的方式为标准的POE终端设备供电&#xff0c;可以免去额外的电源布线&#xff0c;在为一些基于IP的终端&#xff08;如IP电话机、无线局域网接入点AP、网络摄像机等&#xff09;传输数据信号的同时&#xff0c;还能为此类设备提供直流供电的技术。POE技术能…

Windows10安装java环境

Windows10安装java环境 文章目录Windows10安装java环境下载解压配置下载 Java8 https://www.oracle.com/java/technologies/downloads/#java8-windows Java11 https://www.oracle.com/java/technologies/downloads/#java11-windows Java17 https://www.oracle.com/java/techno…

12.日期与时间

目录 一.Date类 1.1 什么是Date类 1.2 Date类的构造器和常用方法 1.2.1 常用构造器 1.2.2 常用方法 二.SimpleDateFormat 2.1 什么是SimpleDateFormat 2.2 SimpleDateFormat的作用 2.3 SimpleDateFormat的构造器和方法 2.3.1 构造器 2.3.2 方法 2.3.3 例子 2.4 Sim…

[论文笔记] XRP: In-Kernel Storage Functions with eBPF

XRP: In-Kernel Storage Functions with eBPF XRP: 利用 eBPF 的核内存储函数 [Paper] [Slides] [Code] OSDI’22 摘要 提出了 XRP, 一个允许应用程序从 NVMe 驱动程序中的 eBPF 钩子(hook)执行用户定义的存储函数(例如索引查找或聚合)的框架, 可以安全地绕过大部分内核的存…

中国电子学会2022年09月份青少年软件编程Python等级考试试卷一级真题(含答案)

分数&#xff1a;100 题数&#xff1a;37 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1.表达式len("学史明理增信 &#xff0c;读史终生受益") > len(" reading history will benefit you ")的结果是&#xff1f;&#xff08;…

vue3全局组件自动注册

前言&#xff1a;本文主要讲述vue3的全局公共组件的自动注册第一步&#xff1a;建文件需要在src/components 下创建一个文件夹用于存放封装的公共组件&#xff08;这里我起名叫coms&#xff09;需要在src/components 下创建一个js文件用于存放引入组件并注册&#xff08;这里我…

前端经典面试500题【下】

面试 一、vue 说说vue动态权限绑定渲染列表&#xff08;权限列表渲染&#xff09; 首先请求服务器,获取当前用户的权限数据,比如请求 this.$http.get(“rights/list”); 获取到权限数据之后,在列表中使用v-if v-if-else的组合来展示不同的内容 <template><div>&…

JavaScript基础复盘3

流程控制 在一个程序执行的过程中&#xff0c;各条代码的执行顺序怼程序的结果是有直接影响的。很多时候我们药通过控制代码的执行顺序来实现我们药完成的功能。 简单理解&#xff1a;流程控制就是来控制我们的代码按照什么结构顺序来执行 JavaScript作为一门程序语言&#x…

JDBC-Mysql数据库连接池

传统数据库连接的弊端 一个java程序多个正常要开启多个mysql连接-正常开发中次数在1w次往上&#xff08;还可能有多个java程序-并发编程&#xff09;&#xff0c;但是如果很多歌连接的话&#xff0c;数据库可能就瘫痪了 测试一个程序连接5000次 抛出一个&#xff0c;太多连接的…

离校毕业生刚去新的陌生城市,需要提高警惕的几点

很多大学毕业生其实阅历还不是特别的多&#xff0c;从小在自己熟悉的环境长大&#xff0c;即便是读了大学&#xff0c;可能也是在自己熟悉的学校附近活动&#xff0c;同学们集体出去逛个街&#xff0c;放假了就回家了。 但一旦大学毕业要离校&#xff0c;可能你会去一个陌生的新…

论文笔记:Learning Disentangled Representations of Video with Missing Data

2020 Neurips 1 intro & abstract 视频表征的一个挑战是高维、动态、各个像素之间多模态分布 最近的一些研究通过探索视频的inductive bias&#xff0c;并将高维数据映射到低微数据中—>这种方法通过将视频的各帧分解成语义上有意义的因子&#xff0c;来获得视频的解耦…

Maven初级(二)

目录 四.第一个Maven项目&#xff08;手工制作&#xff09; 4.1 Maven工程目录结构 4.2 手工制作Maven项目的步骤 4.2.1 手工制作项目的目录结构或使用插件创建项目的目录结构 4.2.2 在项目的src同层目录下创建pom.xml文件 4.2.3 在cmd中使用Maven项目构建命令 四.第一个…

自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达

文章目录1. 物体检测与跟踪算法1.1 DBSCAN1.2 卡尔曼滤波2. 毫米波雷达公开数据库的未来发展方向3. 4D毫米波雷达特点及发展趋势3.1 4D毫米波雷达特点3.1.1 FMCW雷达角度分辨率3.1.2 MIMO ( Multiple Input Multiple Output)技术3.2 4D毫米波雷达发展趋势3.2.1 芯片级联3.2.2 专…

[docker]-docker安装prometheus和grafana

导语&#xff1a;需要排查部分出问题的私有化环境。直接上一个docker的node_exporter prometheus grafana 最方便。 所用到的安装包在最下面的云盘。 解压安装自定义node_exporter # 这个abc的包名可以忽略 tar zxvf abc.tgz cd abc cp node_exporter /usr/local/ cat <…

Mybatis 动态sql的编写|开启二级缓存

❤️作者主页&#xff1a;微凉秋意 ✅作者简介&#xff1a;后端领域优质创作者&#x1f3c6;&#xff0c;CSDN内容合伙人&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3c6; ✨精品专栏&#xff1a;数据结构与课程设计 &#x1f525;系列专栏&#xff1a;javaweb 文章目录前…

Linux-主要目录

/: 根目录&#xff0c;一般根目录下只存放目录&#xff0c;在Linux下有且只有一个根目录&#xff0c;所有的东西都是从这里开始当在终端里输入 /home,其实是在告诉电脑&#xff0c;先从/&#xff08;根目录&#xff09;开始&#xff0c;再进入到home目录/bin、/usr/bin:可执行二…

java基于ssm的旅游景点门票预订网站

通过本系统&#xff0c;能够实现用户进行登录后&#xff0c;在网站上对旅游景点信息进行门票预订&#xff0c;也可以通过在线留言系统&#xff0c;了解景点相关信息&#xff0c;为用户提供全方位的服务&#xff0c;同时为节省用户的时间&#xff0c;本系统采用分地名的方式&…

2022尚硅谷SSM框架跟学(七)Spring MVC基础二

2022尚硅谷SSM框架跟学 七 Spring MVC基础二4.SpringMVC获取请求参数4.1.通过ServletAPI获取4.2.通过控制器方法的形参获取请求参数4.3.RequestParam4.4.RequestHeader4.5.CookieValue4.6.通过POJO获取请求参数4.7.解决获取请求参数的乱码问题5.域对象共享数据5.1.使用ServletA…

LCX端⼝转发

LCX是一款十分经典的内网端口转发工具&#xff0c;基于Socket套接字&#xff0c;具有端口转发和端口映射的功能。但是目前很多杀软已经将其加入了特征库&#xff0c;在实际利用的时候需要自行做免杀处理。lcx有三个功能&#xff1a;第一个功能将本地端口转发到本地另一个端口上…

红米10A 一键root教程 跳过 秒过 168小时解锁BL 限制完美面具root保数据救黑砖刷机 解决无法解锁BL 新版本问题

新版本红米10A 无法秒解锁BL。root bootloader 要刷机、线刷救砖、获取Root权限都需要解除bootloader锁 我们称解除刷机限制的这个操作就叫解锁BL&#xff0c;只有解锁BL后&#xff0c;才可以进行刷机、刷Root权限等等一些列的操作。&#xff08;注&#xff1a;bootloader锁不…