[笔记]音视频学习之视音频数据处理入门《二》PCM

简介: [笔记]音视频学习之视音频数据处理入门《二》PCM

PCM数据

PCM

PCM全称Pulse-Code Modulation,脉冲调制编码。

在音视频中,PCM是一种用数字表示采样模拟信号的方法。

音频模拟信号转换为数字过程:

  1. Sampling(采样)
  2. Quantization(量化)
  3. Coding(编码)

采样率(Sample rate)

每秒钟的样本数也被称之为采样率(Sample rate)。在Sampling图示案例中,采样率为每秒34次。意味着在一秒的时间内,原始信号被采样了34次(也就是蓝色垂直线段的数量)。

通常,采样率的单位用Hz表示,例如1Hz表示每秒钟对原始信号采样一次,1KHz表示每秒钟采样1000次。1MHz表示每秒钟采样1百万次。

根据场景的不同,采样率也有所不同,采样率越高,声音的还原程度越高,质量就越好,同时占用空间会变大。

例如:通话时的采样率为8KHz,常用的媒体采样率有44KHz,对于一些蓝光影片采样率高达1MHz。

采样率(sample rate),用来告诉驱动每秒钟应该播放多少个采样数据。

Quantization(量化)

原始信号采样后,需要通过量化来描述采样数据的大小。

量化处理过程,就是将时间连续的信号,处理成时间离散的信号,并用实数表示。这些实数将被转换为二进制数用于模拟信号的存储和传输。

位深

bit-depth(位深):用来描述存储数字信号值的bit数。

较常用的模拟信号位深有:

8-bit:2^8 = 256 levels,有256个等级可以用于衡量真实的模拟信号。

16-bit:2^16 = 65,536 levels,有65,536个等级可以用于衡量真实的模拟信号。

24-bit:2^24 = 16,666,216 levels,有16,666,216个等级可以用于衡量真实的模拟信号。

位深越大,对模拟信号的描述将越真实,对声音的描述更加准确。

本质

量化的过程就是将一个平顶样本四舍五入到一个可用最近level描述的过程。如图中黑色加粗梯形折线。量化过程中,我们将尽量让每个采样和一个level匹配,因为每个level都是表示一个bit值。

Encoding(编码)

在编码这一步,我们会将时间线上的每个sample数据转化为对应的二进制数据。

采样数据经过编码后产生的二进制数据,就是PCM数据。PCM数据可以直接存储在介质上,也可以在经过编解码处理后进行存储或传输。

PCM数据常用量化指标

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

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

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

声道数(channel number):当前PCM文件中包含的声道数,是单声道(mono)、双声道(stereo)?此外还有5.1声道等。

采样数据是否有符号(Sign):要表达的就是字面上的意思,需要注意的是,使用有符号的采样数据不能用无符号的方式播放。

以FFmpeg中常见的PCM数据格式s16le为例:它描述的是有符号16位小端PCM数据。

s表示有符号,16表示位深,le表示小端存储。

PCM数据流

PCM格式

8 Bit 单声道

一个声音通道,用一个传声器拾取声音,用一个扬声器进行放音的过程,称之为单声道。单声道是指把来自不同方位的音频信号混合后统一由录音器材把它记录下来,再由一只音箱进行重放。

格式:

采样1 采样2
数据1 数据2
8 Bit 双声道

双声道就是有两个声音通道,其原理是人们听到声音时可以根据左耳和右耳对声音相位差来判断声源的具体位置,在电路上它们往往各自传递的电信号是不一样的,电声学家在追求立体声的过程中,由于技术的限制,在最早的时候只有采用双声道来实现。

格式:

第一个字节存放第一个左声道数据(FL),第二个字节放第一个右声道数据(FL),第三个字节放第二个左声道数据(FL)…

采样1 采样2
声道1数据1 声道2数据1 声道1数据2 声道2数据2
16 Bit 单声道

格式:

采样1 采样2
数据1低字节 数据1高字节 数据1低字节 数据1高字节
16 Bit 双声道

格式:

采样1 采样2
声道1数据1低字节 声道1数据1高字节 声道2数据1低字节 声道2数据1高字节 声道1数据2低字节 声道1数据2高字节 声道2数据2低字节 声道2数据2高字节

音量控制

音量的表示实际上就是量化过程中每个采样数据的level值,只要适当的增大或者缩小采样的level就可以达到更改音量的目的。

但需要说明的是,并是不将level值*2就能得到两倍于原声音的音量。

因为如下两个原因:

  1. 数据溢出
  2. 对数描述

PCM音频采样数据处理

总结

相关文章
|
iOS开发 MacOS 数据安全/隐私保护
|
9月前
|
前端开发 JavaScript IDE
WebStorm 2025.1 最新版本发布安装+激活+中文设置全流程教程
WebStorm 2025.1 是 JetBrains 推出的专业前端 IDE,全面支持 JS/TS 及主流框架,智能补全、重构与调试能力升级,新增 AI 辅助编码、性能分析工具,大幅提升开发效率与代码质量。
2206 1
|
12月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型
阿里云 PAI-Model Gallery 已同步接入 gpt-oss 系列模型,提供企业级部署方案。
|
数据可视化 测试技术 数据处理
自定义函数:为接口开发增添灵活性 - Apipost 的独特优势
Apipost 的自定义函数功能为接口开发带来了灵活性与效率,支持内置函数(如 `md5`、`sha`、`base64` 等)和自定义扩展,满足复杂业务需求。相比 Apifox 的局限性,Apipost 可轻松实现数据加密、格式化等操作,例如对用户密码或银行卡号进行多层加密处理。实际案例中,某金融科技公司利用 Apipost 自定义函数实现了数据安全与合规要求,大幅提高开发效率。通过透明化、生态化和智能化的参数处理,Apipost 成为高效接口开发的理想工具。
|
程序员 编译器
C 标准库 - <float.h>详解
`&lt;float.h&gt;` 是 C 标准库中的头文件,用于定义浮点数的属性和限制,包括有效数字位数(如 `FLT_DIG`)、最小最大值(如 `FLT_MIN` 和 `FLT_MAX`),以及特殊值(如 `FLT_INFINITY`)。它通过提供一系列常量和宏帮助程序员处理浮点运算的范围和精度问题。
|
存储 算法 调度
【数据结构与算法】详解循环队列:基于数组实现高效存储与访问
【数据结构与算法】详解循环队列:基于数组实现高效存储与访问
|
数据采集 人工智能 算法
FPGA技术特点与应用效果
FPGA技术特点与应用效果
786 0
|
定位技术
哨兵2号Sentinel-2分幅条带介绍与MGRS网格矢量文件获取
哨兵2号Sentinel-2分幅条带介绍与MGRS网格矢量文件获取
731 1
|
编解码 算法 数据格式
【经典蓝牙】蓝牙 A2DP协议分析
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议, 用于传输单声道, 双声道音乐(一般在 A2DP 中用于 stereo 双声道) , 典型应用为蓝牙耳机。         A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。
5561 0
【经典蓝牙】蓝牙 A2DP协议分析
|
网络协议 算法 安全

热门文章

最新文章