音频相关知识:声道、采样率、采样位数、样本格式、比特率

您所在的位置:网站首页 字节数和比特数哪个大一点 音频相关知识:声道、采样率、采样位数、样本格式、比特率

音频相关知识:声道、采样率、采样位数、样本格式、比特率

2024-07-03 11:17| 来源: 网络整理| 查看: 265

目录

声道

采样率

采样位数

样本的组合方式

样本格式

比特率

采样率、采样位数、比特率三者之间的关系

参考链接:

声道

当人听到声音时,能对声源进行定位,那么通过在不同的位置设置声源,就可以造就出更好的听觉感受,如果配合影像进行音频位置的调整,则会得到更好的视听效果。常见的声道有:

单声道,mono双声道,stereo,最常见的类型,包含左声道以及右声道2.1声道,在双声道基础上加入一个低音声道5.1声道,包含一个正面声道、左前方声道、右前方声道、左环绕声道、右环绕声道、一个低音声道,最早应用于早期的电影院7.1声道,在5.1声道的基础上,把左右的环绕声道拆分为左右环绕声道以及左右后置声道,主要应用于BD以及现代的电影院

如下是一个双声道的音频系统

采样率

音频采样,是把声音从模拟信号转换为数字信号。采样率,就是每秒对声音进行采集的次数,同样也是所得的数字信号的每秒样本数。在对声音进行采样时,常用的采样率有:

8,000 Hz - 电话所用采样率, 对于人的说话已经足够 11,025 Hz - AM调幅广播所用采样率 22,050 Hz和24,000 Hz - FM调频广播所用采样率 32,000 Hz - miniDV 数码视频 camcorder、DAT (LP mode)所用采样率 44,100 Hz - 音频 CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率 47,250 Hz - 商用 PCM 录音机所用采样率 48,000 Hz - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率 50,000 Hz - 商用数字录音机所用采样率 96,000 或者 192,000 Hz - DVD-Audio、一些 LPCM DVD 音轨、BD-ROM(蓝光盘)音轨、和 HD-DVD (高清晰度 DVD)音轨所用所用采样率 2.8224 MHz - Direct Stream Digital 的 1 位 sigma-delta modulation 过程所用采样率。

采样越高,声音的还原就越真实越自然,人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。

采样位数

音频在经过采样得到样本后,还需要对该样本执行两个步骤:

1.量化。音频量化的量化位数常用的有:

   8bit (也就是1字节) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;   

  16bit  (也就是2字节) 可以细到 65536 个数, 这已是 CD 标准了;   

  32bit (也就是4字节) 能把振幅细分到 4294967296 个等级, 实在是没必要了.

量化位数又叫做采样位数、位深度、分辨率, 它是指声音的连续强度被数字表示后可以分为多少级。N-bit的意思声音的强度被均分为2^N级。16-bit的话,就是65535级。这是一个很大的数了,人可能也分辨不出六万五千五百三十五分之一的音强差别。也可以说是声卡的分辨率,它的数值越大,分辨率也就越高,所发出声音的能力越强。这里的采样倍数主要针对的是信号的强度特性,采样率针对的是信号的时间(频率)特性这是两个不一样的概念。

2.二进制编码。也就是把量化所得的结果,即单个声道的样本,以二进制的码字进行存放。其中有两种存放方式:

直接以整形来存放量化结果,即Two's complement code;

以浮点类型来存放量化结果,即Floating point encoding code。

大多数格式的PCM样本数据使用整形来存放,而在对一些对精度要求高的应用方面,则使用浮点型来表示PCM 样本数据。

音频在量化得到二进制的码字后,需要进行变换,而变换(MDCT)是以块为单位(block)进行的,一个块由多个(120或128)样本组成。而一帧内会包含一个或者多个块。帧的常见大小有960、1024、2048、4096等。一帧记录了一个声音单元,它的长度是样本长度和声道数的乘积。FFmpeg中 AVFrame 结构体中的 nb_samples 代表的就是一帧中单个声道的音频样本数量。

样本的组合方式

这个主要是针对双声道或多声道音频来说的,对于一个双声道音频来说,它的组合方式可能有以下两种:

交错(interleaved)。以stereo为例,一个stereo音频的样本是由两个单声道的样本交错地进行存储得到的。平面(planar)。各个声道的样本分开进行存储。

FFmpeg音频解码后的数据是存放在AVFrame结构中的。

Packed格式,frame.data[0]或frame.extended_data[0]包含所有的音频数据中。 Planar格式,frame.data[i]或者frame.extended_data[i]表示第i个声道的数据(假设声道0是第一个), AVFrame.data数组大小固定为8,如果声道数超过8,需要从frame.extended_data获取声道数据。

样本格式

FFmpeg中的样本格式主要有:

enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, ///< unsigned 8 bits AV_SAMPLE_FMT_S16, ///< signed 16 bits AV_SAMPLE_FMT_S32, ///< signed 32 bits AV_SAMPLE_FMT_FLT, ///< float AV_SAMPLE_FMT_DBL, ///< double AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar AV_SAMPLE_FMT_FLTP, ///< float, planar AV_SAMPLE_FMT_DBLP, ///< double, planar AV_SAMPLE_FMT_S64, ///< signed 64 bits AV_SAMPLE_FMT_S64P, ///< signed 64 bits, planar AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically };

说明:

1.U8(无符号整型8bit)、S16(整型16bit)、S32(整型32bit)、FLT(单精度浮点类型)、DBL(双精度浮点类型)、S64(整型64bit),不以P为结尾的都是interleaved结构,以P为结尾的是planar结构。 2.Planar模式是FFmpeg内部存储模式,我们实际使用的音频文件都是Packed模式的。 3.FFmpeg解码不同格式的音频输出的音频采样格式不是一样。测试发现,其中AAC解码输出的数据为浮点型的  AV_SAMPLE_FMT_FLTP  格式,MP3解码输出的数据为  AV_SAMPLE_FMT_S16P  格式(使用的mp3文件为16位深)。具体采样格式可以查看解码后的AVFrame中的 format 成员或解码器的AVCodecContext中的 sample_fmt 成员。

比特率

每秒的传输速率(位速, 也叫比特率)。如705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒(per second)的意思,表示每秒705600bit的容量。压缩的音频文件常常用倍速来表示,譬如达到CD音质的MP3是128kbps/44100HZ。注意这里的单位是bit而不是Byte,一个Byte等于8个bit(位),bit是最小的单位,一般用于网络速度的描述和各种通信速度,Byte则用于计算硬盘,内存的大小。

Mbps 即:Milionbit per second(百万位每秒); Kbps 即: Kilobit per second(千位每秒); bps 即:bit per second (位每秒), 相应的换算关系为:

1Milionbit=1000Kilobit=1000000bit;1Mbps = 1000 000bps;  再次强调这里是速度单位,指每秒传输的二进制位数,数据传输速率的衡量单位K是十进制含义,但数据存储的K是二进制含义。例如:

通常描述的1M带宽就是1Mbps = 1000 000 bps =  1000 000 / 8 / 1000 = 125; 所以1M带宽的下载速率一般不超过125KB/s 100M宽带也就是100 000 000bps = 100 000 000 / 8 / 1000 / 1000 = 12.5, 所以100M带宽的下载速率最大可达到12.5MB/s 当然了,以上只是理论速率,实际上最大的下载速率可能还达不到那么多,主要还会受到各种损耗的影响,一般100MB宽带下载速率能达到10MB就算不错了。

采样率、采样位数、比特率三者之间的关系

例:根据一个文件的大小推算出文件时长

譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是 "22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),

那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒),  播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。

但是这还不够精确, 包装标准的 PCM 格式的 WAVE 文件(*.wav)中至少带有 42 个字节的头信息, 在计算播放时间时应该将其去掉,  所以就有:(424644-42) / (22050*16*2/8) ≈ 4.8140816(秒). 这样就比较精确了。也就是:

(文件总大小 - 头信息)/ (采样率 * 采样位数 * 通道数 / 8) [也就是比特率] ≈ 文件时长。

参考链接:

1.音频 属性详解(涉及采样率、通道数、位数、比特率、帧等)

2.PCM数据格式

3.[FFmpeg音频样本]

4.PCM音频数据



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3