P4 音频知识点——PCM音频原始数据
目录
前言
01 PCM音频原始数据
1.1 频率
1.2 振幅:
1.3 比特率
1.4 采样
1.5 量化
1.6 编码
02. PCM数据有以下重要的参数:
采样率:
采集深度
通道数
PCM比特率
PCM文件大小计算:
PCM存储格式
前言
从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板
🎬 个人主页:@ChenPi
🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨
🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨
🛸推荐专栏3:《嵌入式音视频_@ChenPi的博客-CSDN博客》
🌺本篇简介 :这章记录音频的基础知识学习
01 PCM音频原始数据
音频原始数据PCM,PCM全称是脉冲编码调制数据。PCM数据是未经过压缩的音频数据,它是由模拟信号经过采样、编码等步骤转换成标准的数字信号。
1.1 频率
频率:声音的频率,我们人类的所听到的声音频率范围大概在20hz-20khz
1.2 振幅:
振幅:指的是声音的响度,也就是我们常说的高低音
1.3 比特率
比特率:代表的是音频未经过压缩的数据,每秒需要传输的数据量,它的公式是:
采样率*采样深度*通道数
1.4 采样
采样:采样是我们音频最重要的知识点之一,它指的是把一段连续的模拟信号转换成离散的数字信号。而采样率就指的是每秒钟采样的个数,而根据奈奎斯特采样公式:当采样率大于等于连续信号的2倍时,采样信号就能够无差别还原出原始的信号。比方说人类的听觉频率是20HZ-20KHZ,而采样率就需要达到40KHZ以上才能够保证数据的完整性。
1.5 量化
量化:量化指的是在坐标轴上,把每一个离散数据进行数字化操作。换言之就是把我们每一个采样的点都按照数字化表示出来,如下图
从这张图我们可以看出,量化的过程就是把刚才我们转换成的数字信号一个一个点用竖线显示出来,这样的话我们在数字化的时候就方便很多。
1.6 编码
编码:把每一个量化的采样点存储起来,并以二进制的形式表现出来的过程就是编码。下图就是存储的表格:
把上图所有的数据存储起来,就是一段连续的PCM数据。
PCM数据,二进制形式:
011011110111101……
对于一个音频的原始数字信号的生成:
采集->采样->量化->编码:->PCM数据
02. PCM数据有以下重要的参数:
采样率:
采样率:指的是每秒钟采样的个数,换言之就是1S钟采集声音的频率,比方说48000HZ就相当于一秒钟PCM采集48000个。PCM数据常用的采样率有:
- 192000HZ:192KHZ(蓝光、高清电影DVD)
- 96000HZ: 96KHZ(蓝光、高清电影DVD)
- 48000HZ:48KHZ(数字电视、DVD) (最常用)
- 44100HZ:44.1KHZ(CD音质)
- 22000HZ:22KHZ(无线广播)
采集深度
采样深度:每次采样的大小,比方说如果采样深度是16BIT,
那声音就有2的16次方的振幅,而32bit就相当于有2的32次方个振幅。
声音振幅越多,声音的质量就会越高。
在PCM中,有三种常见的采样大小:
8 BIT、16BIT、32BIT(FLTP)
通道数
PCM一般有四种通道数:
单声道:
指的是只有一个声音的通道,比方说电话、喇叭之类的
双声道(立体声):
双声道指的是有两个声音的通道,声音在录制的过程中分配到两个独立的声道,这让人听起来就有立体的感觉。
四声道:
四声道指的是前左、前右、后左、后右四个发声通道。观众听起来,则像被声音包围了一样。
声道:
5.1声道广泛运用在家庭影院
PCM比特率
比特率指的是每秒传输的比特数(bit),一般PCM的比特率计算公式是:
采样率*采样深度*通道数
比如:48000 * 16 * 2 = 1536000
PCM文件大小计算:
假设一个PCM音频设备采样率48000、采样精度是16bit、2通道,大概采集10分钟数据,那它的大小:采样率 * 采样深度 * 通道数 * 时长 = 48000 * 16 * 2 * 10 * 60 = 921600000bit,然后再把bit转换成字节(BYTE) 921 600 000/8/1024/1024 = 109M
PCM存储格式
上图是PCM单双声道的存储布局,这里我们来重点讲解一下双声道的布局。
一般双声道的存储有两种存储方式,一种是交错模式、另外一种是非交错模式。
- 交错模式:首先记录第一帧的左声道样本和右声道样本;
- 非交错模式:首先先记录一个周期内所有帧的左声道样本、再记录所有右声道样本
交错模式:L R L R L R L R
非交错模式:L L L L L R R R
此篇文章来源于B站博主——飞一样的成长
相关文章:

P4 音频知识点——PCM音频原始数据
目录 前言 01 PCM音频原始数据 1.1 频率 1.2 振幅: 1.3 比特率 1.4 采样 1.5 量化 1.6 编码 02. PCM数据有以下重要的参数: 采样率: 采集深度 通道数 PCM比特率 PCM文件大小计算: …...
解决Electron中WebView加载部分HTTPS页面白屏的方法
Electron是一个开源的桌面应用程序框架,它允许使用Web技术构建跨平台的桌面应用。在Electron应用中,WebView 是一个常用的组件,用于嵌套加载Web内容。然而,有时候在加载使用 HTTPS 协议的页面时,可能会因为证书问题导致…...

【Java中创建对象的方式有哪些?】
✅Java中创建对象的方式有哪些? ✅使用New关键字✅使用反射机制✅使用clone方法✅使用反序列化✅使用方法句柄✅ 使用Unsafe分配内存 ✅使用New关键字 这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造函数 (无参的和有…...
npm使用详解(好吧好吧是粗解)
目录 npm是什么? npm有什么用? npm安装 在 Windows 上 在 macOS 上 在 Linux 上(使用 apt 包管理器为例) 验证 npm 安装成功: npm使用 1. 初始化项目: 2. 安装和管理依赖: 3. 查看和…...

uniapp自定义头部导航怎么实现?
一、在pages.json文件里边写上自定义属性 "navigationStyle": "custom" 二、在对应的index页面写上以下: <view :style"{ height: headheight px, backgroundColor: #24B7FF, zIndex: 99, position: fixed, top: 0px, width: 100% …...

什么是 Dubbo?它有哪些核心功能?
文章目录 什么是 Dubbo?它有哪些核心功能? 什么是 Dubbo?它有哪些核心功能? Dubbo 是一款高性能、轻量级的开源 RPC 框架。由 10 层模式构成,整个分层依赖由上至下。 通过这张图我们也可以将 Dubbo 理解为三层模式&…...

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成
FuseDream: Training-Free Text-to-Image Generation with Improved CLIPGAN Space Optimization 公众:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. CLIPGAN 文本到图…...

python pip安装依赖的常用软件源
目录 引言 一、什么是镜像源? 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中,我们经常需要下载和更新各种软件包和库文件。然而,由于网络环境的限制或者服务器的负载&#…...
避免大M取值过大引起的数值问题
在数学建模当中,常常会见到大M法,它之所以叫大M法,是因为它涉及到一个(绝对值)较大的系数M,这个大M的值应大于约束中的连续变量或者约束表达式可能取到的任何合理值,M值取过大往往会造成优化问题…...
史密斯圆图的使用
史密斯圆图的使用 简介识别史密斯圆图等反射系数圆归一化阻抗圆导纳圆图史密斯圆图的使用单支匹配双支匹配简介 史密斯图Smith Chart是电气工程,无线电,射频工程,微波工程和通信等领域常用的一种图示工具,用于分析和设计传输线和阻抗匹配网络,它由美国工程师Phillip H.Sm…...
可重复读解决了哪些问题? 对 SQL 慢查询会考虑哪些优化 ?
文章目录 可重复读解决了哪些问题?对 SQL 慢查询会考虑哪些优化 ? 可重复读解决了哪些问题? (1)可重复读的核心就是一致性读(consistent read);保证多次读取同一个数据时,其值都和事务开始时候的内容是一致…...

从0开始python学习-35.allure报告企业定制
目录 1. 搭建allure环境 2. 生成报告 3. logo定制 4. 企业级报告内容或层级定制 5. allure局域网查看 1. 搭建allure环境 1.1 JDK,使用PyCharm 找到pycharm安装目录找到java.exe记下jbr目录的完整路径,eg: C:\Program Files\JetBrains\PyCharm Com…...

蓝桥杯2020年10月青少组Python程序设计省赛真题
1、设计一个猜字母的程序,程序随机给出26个小写字母中的一个,答题者输入猜测的字母,若输入的不是26个小写字母之一,让用户重新输入,若字母在答案之前或之后,程序给出相应正确提示,如答错5次,则答题失败并退出游戏,若回答正确,程序输出回答次数并退出游戏。 2、试编一个“口…...

【数据结构】布隆过滤器原理详解及其代码实现
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…...
Qt中实现短信验证码功能
在Qt中实现短信验证码功能,可以使用Qt的信号槽机制和计时器来实现。 首先,在mainwindow.h头文件中添加下列代码: #include <QMainWindow> #include <QTimer>namespace Ui {class MainWindow; }class MainWindow : public...

Redis-运维
转自 极客时间 Redis 亚风 原文视频:https://u.geekbang.org/lesson/535?article681062 Redis 同步 Redis主从数据同步,主从第⼀次同步是全量同步 replicaof 主机 端口 #当前这个机器做Master的备份master如何判断slave是不是第⼀次来同步数据: Repl…...

Qt制作定时关机小程序
文章目录 完成效果图ui界面ui样图 main函数窗口文件头文件cpp文件 引言 一般定时关机采用命令行模式,还需要我们计算在多久后关机,我们可以做一个小程序来定时关机 完成效果图 ui界面 <?xml version"1.0" encoding"UTF-8"?>…...
LeetCode day30
LeetCode day30 害,昨天和今天在搞数据结构的报告,后面应该也会把哈夫曼的大作业写上来。 今天认识认识贪心算法。(。・∀・)ノ 2697. 字典序最小回文串 给你一个由 小写英文字母 组成的字符串 s ,…...

数据分析基础之《numpy(5)—合并与分割》
了解即可,用panads 一、作用 实现数据的切分和合并,将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […...
centos 安装 Miniconda
在 CentOS 上安装 Miniconda 的步骤通常包括下载 Miniconda 安装脚本、运行脚本以及配置环境。以下是详细步骤: 1. 下载 Miniconda 安装脚本 首先,您需要从 Miniconda 的官方网站下载适用于 Linux 的安装脚本。您可以使用 wget 命令在 CentOS 终端中直…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候,显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...