热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

视音频数据处理入门:PCM音频采样数据处理PCM数据格式介绍PCM数据格式文章目录PCM数据PCM采样率(Samplerate)Quantizationÿ

视音频数据处理入门:PCM音频采样数据处理

PCM数据格式介绍

PCM数据格式


文章目录

  • PCM数据
    • PCM
    • 采样率(Sample rate)
    • Quantization(量化)
      • 位深
      • 本质
    • Encoding(编码)
    • PCM数据常用量化指标
    • PCM数据流
      • PCM格式
        • 8 Bit 单声道
        • 8 Bit 双声道
        • 16 Bit 单声道
        • 16 Bit 双声道
    • 音量控制
  • 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音频采样数据处理


总结


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • ffmpeg做切片切出来最终是vod的切的过程中是直播的加载G:\MEDIA\HLS\index.m3u8进行播放播放器自己会做HLS多码率的切换。以下的切换日志,证明做了切换:B ... [详细]
  • ffmpeg  spydroid jrtplib
    2019独角兽企业重金招聘Python工程师标准手机上采用Spydroid程序。https:github.comfyhertzspydroid-ipcamera先用libcu ... [详细]
  • 刘连响:为什么看好小程序音视频在教育行业的应用?
    作者简介:刘连响,一起玩耍科技创始人。2013年起开始研究WebRTC,对音视频处理、直播、实时音视频相关技术非常感兴趣,具 ... [详细]
  • MACAndroidStudioNDK环境环境下FFmpeg的编译
    MAC-AndroidStudio-NDK环境环境下FFmpeg的编译环境:macOS10.15.4AndroidStudio3.5.3ffmpeg3.3.6nd ... [详细]
author-avatar
邱喷壶_381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有