音频相关属性

音频相关属性:声道,采样率,样本格式

  • 声道: 单声道,双声道,2.1声道,5.1声道,7.1声道
  • 采样:模拟信号转为 数字信号。(现实生活中,我们听到的声音都是时间连续的,我们把这种信号叫模拟信号)。
  • 采样率: 1秒对声音的采集次数。也是得到的数字信号的1秒的样本数。常见的采样率:8000Hz(电话采样率);44100Hz(音频cd/mp3);48000(电视/DVD);96000Hz(高清晰度 DVD)音轨所用所用采样率)。
  • 采样位数/量化位数: 声音的连续强度被数字表示后可以分为多少级。
    8bit(一字节):表示256个数,则可以划分256个等级;
    16bit(二字节):表示65536个数
  • 编码: 把量化所得的结果,即单个声道的样本,以二进制的码字进行存放。
    1.以整形存放量化结果
    2.以浮点型存放量化结果(大多数格式的PCM样本数据使用整形来存放,而在对一些对精度要求高的应用方面,则使用浮点型来表示PCM 样本数据。)
  • 帧: 音频在量化得到二进制的码字后,需要进行变换,而变换(MDCT)是以块为单位(block)进行的,一个块由多个(120或128)样本组成。而一帧内会包含一个或者多个块。帧的常见大小有960、1024、2048、4096等。一帧记录了一个声音单元,它的长度是样本长度和声道数的乘积。FFmpeg中 AVFrame 结构体中的 nb_samples 代表的就是一帧中单个声道的音频样本数量。
  • 样本组合方式: 对于双声道和多声道来说有两种:
    交错(interleaved):以stereo立体声为例,一个stereo音频的样本是由两个单声道的样本交错地进行存储得到的。
    交错(interleaved):各个声道的样本分开进行存储。
    音频相关属性_第1张图片
    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获取声道数据。
  • 比特率:
    每秒的传输速率(位速, 也叫比特率)。如705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒(per second)的意思,表示每秒705600bit的容量。压缩的音频文件常常用倍速来表示,譬如达到CD音质的MP3是128kbps/44100HZ。注意这里的单位是bit而不是Byte,一个Byte等于8个bit(位),bit是最小的单位,一般用于网络速度的描述和各种通信速度,Byte则用于计算硬盘,内存的大小。
  • 采样率、采样位数、比特率三者之间的关系

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

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

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

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

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

------------------------------【等待后续继续补充。。。。。。】-----------------------------------------------

参考:
https://www.cnblogs.com/yongdaimi/p/10722355.html

你可能感兴趣的:(音频知识,音视频)