news 2026/5/8 17:26:25

音频 PCM

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
音频 PCM

音频里的 PCM(Pulse Code Modulation)= 线性脉冲编码调制,是未经压缩的原始音频裸数据,Linux 音频栈最底层格式,ALSA、PipeWire、ALSA 设备交互全部基于 PCM。

核心定义

模拟声波电压 → 定时采样 → 量化为数字整数 → 原始二进制流

  • 无损、无压缩、无封装、无编码压缩
  • 所有音乐 / 视频音频解码后,最终都会输出为PCM送给声卡播放

四大关键参数(必懂)

1. 采样率 sample rate

每秒采集多少次声波幅值

  • 8000Hz:座机电话
  • 44100Hz:CD 标准
  • 48000Hz:视频 / 影视 / 设备默认
  • 96k/192k:HiFi 高解析

2. 位深 bit depth

单个采样点占用比特,决定动态范围、底噪

  • 16bit(S16):民用主流
  • 24bit(S24):专业录音、声卡
  • 32bit Float:混音器、音频引擎内部运算

3. 数据格式(存储 / 排列)

最常用:

  • S16_LE:16 位 有符号 小端(Linux 声卡默认)
  • S24_LE / S32_LE:24/32 位
  • F32_LE:32 位浮点

4. 声道 channels

  • 1:单声道
  • 2:立体声(左右)
  • 6:5.1 环绕
  • 8:7.1 环绕

字节计算

单帧(一次采样所有声道)字节数:

每秒字节数:

PCM 常见类型

LPCM 线性 PCM

音频默认,幅值线性分布,WAV、FLAC 原始数据、HDMI 音频都是 LPCM。

原始声波采样数据 = PCM → LPCM 是 PCM 最常用子集 → WAV/FLAC 是封装格式,里面装的是 LPCM

LPCM(Linear PCM,线性 PCM)

消费 / 专业音频唯一在用的 PCM

  • 采样值线性均匀量化,音量和数值成正比
  • 无压缩、无失真、无编码映射
  • CD、声卡、ALSA、HDMI、视频原生音频 全部用 LPCM
  • 区别:A/μ-law 是非线性 PCM(电话语音用,压缩动态)

日常口语:音频里 PCM = LPCM

WAV(微软 RIFF WAV)

容器格式(封装)

  • 结构:WAV 文件头 + LPCM 裸数据
  • 头里保存:采样率 / 位深 / 声道 / 字节对齐等参数
  • 特点:
    • 内部音频编码:固定 LPCM
    • 无损、无压缩、体积大
    • 后缀.wav

FLAC(Free Lossless Audio Codec)

无损压缩编码 + 容器

  • 输入:LPCM 原始音频
  • 处理:无损压缩算法(类似 zip 压缩音频)
  • 播放:FLAC 解码 → 还原出和原文件一模一样的 LPCM → 声卡播放
  • 特点:
    • 音质 = WAV 完全一致
    • 体积比 WAV 小 30%~50%
    • 不可逆压缩、无音质损失

关键维度对比表

格式编码类型压缩有无文件头音质体积场景
PCM调制标准统称不一定无(裸流)原始最大底层裸数据、ALSA 裸流
LPCM线性无损编码无压缩无损原版最大声卡底层、视频原生音轨
WAV容器 + LPCM无压缩无损录音、剪辑、编曲
FLAC无损压缩编码无损压缩无损 (同 WAV)中等音乐收藏、HiFi

区别于压缩音频

MP3/AAC/OPUS:压缩格式,播放时解码 → 转 PCM再输出。

核心从属关系

模拟声音 ↓ 采样量化 LPCM 原始裸数据(纯二进制,无参数) ↓ ├─ 加WAV头封装 → WAV 文件 └─ FLAC无损压缩 → FLAC 文件 MP3/AAC(有损) 解码后 → 也是 LPCM 再播放

PCM 与 LPCM 核心区别

PCM(脉冲编码调制)

一大类音频采样编码标准的统称,不是特指某一种格式。包含多种分支:

  • LPCM 线性 PCM(民用 / 专业音频主力)
  • A-law PCM(电信固话)
  • μ-law PCM(欧美电话)
  • 非线性压缩 PCM 等

LPCM(Linear PCM 线性脉冲编码调制)

PCM 的子集、最常用分支

核心:音频振幅数值 和 音量 呈严格线性正比,无非线性压缩、无失真。

核心差异

对比项PCM(广义)LPCM(线性 PCM)
范围通用大类PCM 的特定子集
量化方式可线性、可非线性纯线性均匀量化
压缩部分类型带非线性压缩完全无压缩、无失真
应用场景通信、语音、音频全覆盖音乐、声卡、视频、专业音频
设备底层不通用声卡 / ALSA/HDMI 原生格式

音频领域口语潜规则

日常音频开发、Linux 音频、音视频开发中:

口头说的「PCM」= 特指 LPCM

  • 裸音频流、ALSA 播放数据、WAV 内部数据、MKV/MP4 无损音轨,全是LPCM
  • 只有电信语音场景,才会区分 A-PCM / μ-PCM

关键实战区别

非线性 PCM(A/μ-law)

人为压低大音量、放大小音量(非线性),牺牲音质压缩动态,节省带宽,只用于电话。

LPCM

原汁原味记录声波电压数值,无损、线性、高动态,是所有无损音频的原始基底:

FLAC/MP3/AAC 解码 → 统一输出 LPCM → 声卡播放

PCM 裸数据排列(LPCM,最常用)

1)单声道(1ch,16bit 示例)

时间 → [样本1(2B)] [样本2(2B)] [样本3(2B)] ...
  • 每个样本:2 字节(16bit),依次排列

2)立体声(2ch,16bit 交错,主流)

时间 → [L1(2B)][R1(2B)] [L2(2B)][R2(2B)] [L3(2B)][R3(2B)] ...

3)立体声平面格式(planar,FFmpeg 常用)

L 声道:[L1][L2][L3]...(连续一块) R 声道:[R1][R2][R3]...(连续一块)

Linux 音频栈里的 PCM

ALSA

  • /dev/snd/pcmC0D0p:播放 PCM 设备
  • 应用直接写入 PCM 裸数据即可发声

PulseAudio / PipeWire

上层统一做音量、重采样、声道映射,底层依然流转 PCM。

工具测试

# 播放原始16位小端48k立体声PCM aplay -f S16_LE -r 48000 -c 2 test.pcm # 录制原始PCM arecord -f S16_LE -r 48000 -c 2 record.pcm

总结

裸 PCM 和 WAV 区别

  • 裸 PCM:只有声音二进制,不知道采样率 / 位深,直接打不开
  • WAV:带头部参数,播放器直接识别播放

LPCM 为什么单独存在?

电视 HDMI、MP4/mkv 内音轨、专业广播,都是封装里直接存 LPCM,不用 WAV 外壳

FLAC 和 WAV 可以互相无损互转

ffmpeg互转完全无音质损耗:

# WAV → FLAC 压缩 ffmpeg -i audio.wav audio.flac # FLAC → WAV 还原原始LPCM ffmpeg -i audio.flac audio.wav

谁是最终播放格式?

所有音频:MP3/OGG/FLAC/WAV/ 视频音轨→ 全部解码统一转为LPCM→ 送给声卡(ALSA/PipeWire)播放

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 17:26:24

利用 @property 注册自定义属性:渐变动画不再是梦

一个让我怀疑人生的渐变动画需求 2019年,设计师丢给我一个设计稿,里面有一个“流光溢彩”的卡片背景——颜色从蓝色到紫色平滑过渡,周而复始,像个呼吸的光环。 “没问题,”我心想,“不就是transition吗?” 结果写了才发现,CSS根本不支持直接对background-image做动画…

作者头像 李华
网站建设 2026/5/8 17:26:04

ModOrganizer2:为什么你的模组管理体验还停留在石器时代?

ModOrganizer2:为什么你的模组管理体验还停留在石器时代? 【免费下载链接】modorganizer Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/5/8 17:25:31

地质调查数据采集系统专栏⑤ | ZGIS赋能地质灾害调查,筑牢数智防线

本期以地质灾害调查为切入点,聚焦隐患识别、孕灾条件分析、风险评估、成果汇交等核心业务,并将AI智能技术与地质调查管理系统深度融合,直击灾调作业"急、难、险、繁"核心痛点,以数字化手段为地质灾害防治、风险双控、避…

作者头像 李华