精华内容
下载资源
问答
  • Labview代码,我也不清楚在这里该分到哪里……可能版本有点老了
  • 不仅限于FFmpeg, 音频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、样本格式(sample format)。声道当人听到声音时,能对声源进...

    不仅限于FFmpeg, 音频采样所得的PCM都含有三个要素:声道(channel)采样率(sample rate)样本格式(sample format)

    声道

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

    常见的声道有:

    1. 单声道,mono

    2. 双声道,stereo,最常见的类型,包含左声道以及右声道

    3. 2.1声道,在双声道基础上加入一个低音声道

    4. 5.1声道,包含一个正面声道、左前方声道、右前方声道、左环绕声道、右环绕声道、一个低音声道,最早应用于早期的电影院

    5. 7.1声道,在5.1声道的基础上,把左右的环绕声道拆分为左右环绕声道以及左右后置声道,主要应用于BD以及现代的电影院

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

    eeec2a684d72c68503133c9e407ac8ad.png

    采样率

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

    • 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 帧图片的道理差不多。

    46d7754f7d950b22f8e34c58b3992c66.png

    采样位数

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

    1. 量化。

    音频量化的量化位数常用的有:

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

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

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

    量化位数又叫做采样位数位深度分辨率, 它是指声音的连续强度被数字表示后可以分为多少级。N-bit的意思声音的强度被均分为2^N级。16-bit的话,就是65535级。这是一个很大的数了,人可能也分辨不出六万五千五百三十五分之一的音强差别。

    也可以说是声卡的分辨率,它的数值越大,分辨率也就越高,所发出声音的能力越强。这里的采样倍数主要针对的是信号的强度特性,采样率针对的是信号的时间(频率)特性这是两个不一样的概念。

    1. 二进制编码。

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

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

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

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

    音频在量化得到二进制的码字后,需要进行变换,而变换(MDCT)是以块为单位(block)进行的,一个块由多个(120或128)样本组成。而一帧内会包含一个或者多个块。

    帧的常见大小有960、1024、2048、4096等。一帧记录了一个声音单元,它的长度是样本长度和声道数的乘积。

    FFmpeg中 AVFrame 结构体中的 nb_samples 代表的就是一帧中单个声道的音频样本数量。

    f34ff3369cee2f1aa1fd4bab39dcdf60.png

    样本的组合方式

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

    1. 交错(interleaved)。以stereo为例,一个stereo音频的样本是由两个单声道的样本交错地进行存储得到的。

    2. 平面(planar)。各个声道的样本分开进行存储。

    a7db48c9b5569b14eeba26498105cb76.png

    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 
    };

    说明:

    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 / 立体声" 格式(这可以从其 "属性->摘要" 里看到)。

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

    但是这还不够精确, 包装标准的 PCM 格式的 WAVE 文件(*.wav)中至少带有 42 个字节的头信息, 在计算播放时间时应该将其去掉。

    所以就有:(424644-42) / (22050162/8) ≈ 4.8140816(秒). 这样就比较精确了。也就是:

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

    来源:https://www.cnblogs.com/yongdaimi/p/10722355.html

    8abbe624c1ae7ed10b3b237d43b8ccc2.png

    技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。

    6f2cc3373486442d488aa2c6c5d1a984.png

    私信领取相关资料

    推荐阅读:

    音视频开发工作经验分享 || 视频版

    OpenGL ES 学习资源分享

    开通专辑 | 细数那些年写过的技术文章专辑

    NDK 学习进阶免费视频来了

    你想要的音视频开发资料库来了

    推荐几个堪称教科书级别的 Android 音视频入门项目

    觉得不错,点个在看呗~

    b52e53d011e1c747d69bc1b7ea5ee96d.gif

    展开全文
  • 采样位数(采样大小): 采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。所以在电脑上录音的本质就是...

    采样位数(采样大小):

    采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。所以在电脑上录音的本质就是把模拟声音信号转换成数字信号。反之,在播放时则是把数字信号还原成模拟声音信号输出。采集卡的位是指采集卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采集卡的位客观地反映了数字声音信号对输入声音信号描述的准确程度。8位代表2的8次方--256,16位则代表2的16次方--64K。比较一下,一段相同的音乐信息,16位声卡能把它分为64K个精度单位进行处理,而8位声卡只能处理256个精度单位, 造成了较大的信号损失,最终的采样效果自然是无法相提并论的。

    通常市面上是这样说,16bit/24bit/32bit。数值越高声音越好。

    采样率:

    采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数叫作采样周期或采样时间,它是采样之间的时间间隔。采样定理指采样频率必须大于被采样信号带宽的两倍,另外一种等同的说法是奈奎斯特频率必须大于被采样信号的带宽。

    如果信号的带宽是100Hz,那么为了避免混叠现象采样频率必须大于200Hz。

    换句话说就是采样频率必须至少是信号中最大频率分量频率的两倍,否则就不能从信号采样中恢复原始信号。过采样指采样频率超出信号带宽的两倍这样就可以用数字滤波器替换性能不好的模拟抗混叠滤波器。

    比特率:

    比特率是指将数字声音由模拟格式转化成数字格式的采样率,采样率越高,还原后的音质就越好。 作为一种数字音乐压缩效率的参考性指标,比特率表示单位时间(1秒)内传送的比特数bps(bit per second,位/秒)的速度。通常使用kbps(通俗地讲就是每秒钟1000比特)作为单位。CD中的数字音乐比特率为1411.2kbps(也就是记录1秒钟的CD音乐,需要1411.2×1024比特的数据),音乐文件的BIT RATE高是意味着在单位时间(1秒)内需要处理的数据量(BIT)多,也就是音乐文件的音质好的意思。但是,BIT RATE高时文件大小变大,会占据很多的内存容量,音乐文件最常用的BIT RATE是128kbps,MP3文件可以使用的一般是8~320kbps,但不同MP3机在这方面支持的范围不一样,大部分的是32-256Kbps,这个指数当然是越广越好了,不过320Kbps是暂时最高等级了。

    比特率值与现实音频对照:

    1. 16Kbps=电话音质
    2. 24Kbps=增加电话音质、短波广播、长波广播、欧洲制式中波广播
    3. 40Kbps=美国制式中波广播
    4. 56Kbps=话音
    5. 64Kbps=增加话音(手机铃声最佳比特率设定值、手机单声道MP3播放器最佳设定值)
    6. 112Kbps=FM调频立体声广播
    7. 128Kbps=磁带(手机立体声MP3播放器最佳设定值、低档MP3播放器最佳设定值)
    8. 160Kbps=HIFI高保真(中高档MP3播放器最佳设定值)
    9. 192Kbps=CD(高档MP3播放器最佳设定值)
    10. 256Kbps=Studio音乐工作室(音乐发烧友适用)
    11. 实际上随着技术的进步,比特率也越来越高,MP3的最高比特率为320Kbps,但一些格式可以达到更高的比特率和更高的音质。
    12. 比如正逐渐兴起的APE音频格式,能够提供真正发烧级的无损音质和相对于WAV格式更小的体积,其比特率通常为550kbps-----950kbps。

    常见编码模式:

    1. VBR(Variable Bitrate)动态比特率,也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;
    2. ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。
    3. CBR(Constant Bitrate),常数比特率,指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。

    通俗表示:

    简单来讲,采样率和比特率就像是坐标轴上的横纵坐标。

    横坐标的采样率表示了每秒钟的采样次数。

    纵坐标的比特率表示了用数字量来量化模拟量的时候的精度。

    采样率类似于动态影像的帧数,比如电影的采样率是24赫兹,PAL制式的采样率是25赫兹,NTSC制式的采样率是30赫兹。当我们把采样到的一个个静止画面再以采样率同样的速度回放时,看到的就是连续的画面。同样的道理,把以44.1kHZ采样率记录的CD以同样的速率播放时,就能听到连续的声音。显然,这个采样率越高,听到的声音和看到的图像就越连贯。当然,人的听觉和视觉器官能分辨的采样率是有限的,基本上高于44.1kHZ采样的声音,绝大部分人已经觉察不到其中的分别了。

    而声音的位数就相当于画面的颜色数,表示每个取样的数据量,当然数据量越大,回放的声音越准确,不至于把开水壶的叫声和火车的鸣笛混淆。同样的道理,对于画面来说就是更清晰和准确,不至于把血和西红柿酱混淆。不过受人的器官的机能限制,16位的声音和24位的画面基本已经是普通人类的极限了,更高位数就只能靠仪器才能分辨出来了。比如电话就是3kHZ取样的7位声音,而CD是44.1kHZ取样的16位声音,所以CD就比电话更清楚。

    解释:

    1、那为什么很多专业的标准都达到了24Bit/192KHz呢?

    现在普遍在工程中都是使用48kHz或者96kHz频率录音,只有在最终母带处理时才会转成44.1kHz的CD格式,这样减少多次采样率转换造成的失真。

    而在电脑领域,作为音频硬件codec标准的AC97规范只规定了48kHz。这造成几乎所有的输入、输出信号都要被重新采样(专业术语叫采样率转换,即 SRC)。SRC一般都会造成音质的损失,较简单(即较差)的SRC算法会造成音质明显劣化。但这已经是一个既成事实了。

    2、既然44K够了,那为什么还要用192KHZ来录音?

    首先,20kHz只是大多数人的听觉门限,也就是说,人耳对于20kHz以上的声音很不敏感。注意不敏感并不意味着完全无法感知。大多数乐器(特别是钢琴和弦乐器)的乐音含有丰富的高次谐波,用音乐术语来说即所谓的上方泛音。截止频率为22.05kHz的CD音频,的确会给听惯了真实乐器的人一种不自然的感觉,尤其在高频部分,因为奈奎斯特截止频率造成更高频率泛音的信号失真。

    其次,数字录音通常都需要进行后处理。音频处理会对信号产生进一步的失真,包括信号畸变、频谱混叠,等等。如果录音时仅仅用44.1kHz对原始信号采样,那么在后处理前还得进行上采样(up-sampling),对采样频率进行扩展。由于这种扩展是“假”的,实际上并没有更多有用的原始信号,并且上采样算法的优劣也会影响原录音信号的失真,所以这个做法并不可取。因此,通常的做法是用更高的频率进行采样。

    而现在的完全专业数字录音棚中,则不再按CD标准的规范录音、混音以及母带,而是优先使用HD音频规范。即:

    采用24Bit 48KHz、24Bit 96KHz、24Bit 192KHz 三种规格进行录音,当然,24Bit 48KHz是一些小的录音棚使用,因为他们的处理器资源有限。而大的录音棚,都清一色的使用24Bit 96KHz和24Bit 192KHz 进行录音。

    那么,这样的录音规范,有什么好处?

    1.符合HD音频标准,这也是将来的主流标准,制作出的成品,可以直接应用于HDCD、DVD-Audio、蓝光唱片、数字音乐下载业务、数字对媒体播放机业务。

    2.完全照顾数字影视视频业务,多声道电影视频都会采用HD音频规范。包括移动便携数字视频设备都用它。

    3.完全照顾消费性音频播放业务,比如:因特尔HD-Audio音频标准,AC97音频编码解码,便携MP3/mp4/电话/游戏机最高音频质量播放。

    目前,专业录音行业的最高质量标准就是:24比特定点位深、192000Hz采样频率,简称“24Bit/192KHz”。当然,将来这个标准依然会继续提高,向32Bit 384KHz进发也是可能的。

    实际上,现在的CD唱片市场上卖的产品(正版),最低级别的通常都是HDCD唱片,你买唱片时都会发现基本上都是HDCD标识,也就是一张激光唱片包含两种音轨:普通CD音轨和HDCD音轨。其中CD音轨记录16比特44.1KHz信号(这是这张唱片的兼容内容,照顾早期的CD播放机),HDCD音轨则记录24Bit 96KHz信号(这才是该唱片的主要内容)。普通的CD播放机只能播放CD音轨信号,而HDCD音轨则需要HDCD播放机才能播放(实际上现在的绝大多数 DVD播放机都能播放HDCD,而现在的电脑则更没问题了。)

     

    最后附上一张图以便跟好的理解:

     

     

    说明:虽然文章有一定历史,但可以了解相关知识点。

     

    以上转自:http://blog.sina.com.cn/s/blog_7032e6960100zzhn.html

    转载于:https://www.cnblogs.com/EasonJim/p/6883103.html

    展开全文
  • 采样位数 帧 样本的组合方式 样本格式 比特率 采样率、采样位数、比特率三者之间的关系 参考链接: 声道 当人听到声音时,能对声源进行定位,那么通过在不同的位置设置声源,就可以造就出更好的听觉感受,...

    目录

    声道

    采样率

    采样位数

    样本的组合方式

    样本格式

    比特率

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

    参考链接:


    声道

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

    1. 单声道,mono
    2. 双声道,stereo,最常见的类型,包含左声道以及右声道
    3. 2.1声道,在双声道基础上加入一个低音声道
    4. 5.1声道,包含一个正面声道、左前方声道、右前方声道、左环绕声道、右环绕声道、一个低音声道,最早应用于早期的电影院
    5. 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 代表的就是一帧中单个声道的音频样本数量。

    样本的组合方式

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

    1. 交错(interleaved)。以stereo为例,一个stereo音频的样本是由两个单声道的样本交错地进行存储得到的。
    2. 平面(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音频数据

    展开全文
  • 不仅限于FFmpeg, 音频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、样本格式(sample rate)。 声道 当人听到声音时,能对声源进行定位,那么通过在不同的位置设置声源,就可以造就出更好的...

    不仅限于FFmpeg, 音频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、样本格式(sample rate)。

    声道

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

    1. 单声道,mono
    2. 双声道,stereo,最常见的类型,包含左声道以及右声道
    3. 2.1声道,在双声道基础上加入一个低音声道
    4. 5.1声道,包含一个正面声道、左前方声道、右前方声道、左环绕声道、右环绕声道、一个低音声道,最早应用于早期的电影院
    5. 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 代表的就是一帧中单个声道的音频样本数量。

     

    样本的组合方式

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

    1. 交错(interleaved)。以stereo为例,一个stereo音频的样本是由两个单声道的样本交错地进行存储得到的。
    2. 平面(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音频数据

     

    转载于:https://www.cnblogs.com/yongdaimi/p/10722355.html

    展开全文
  • 目录wav文件采样位数修改程序实现问题解决程序结果 wav文件采样位数修改 本文是在前一篇文章的基础上,将已经完成的有关16位采样转化为8位采样的程序加入自己的毕设程序当中。在前一篇文章的基础上,接下来的工作就...
  • 今天来对自己找到的一份网上的有关将wav文件的采样位数从16位转化成8位的程序进行解析,通过分析后加入到自己的程序中,从而完成一个自己毕设软件中的一个功能。 程序解析及源码 函数学习 首先对程序中遇到的新函数...
  • ffmpeg将音频文件重采样为8位、16位、32位的命令比较容易查找,但是重采样为24位却非常非常的少。 ffmpeg -i 32.wav -vn -ac 2 -ar 44100 -acodec pcm_s24le -y 24.wav -i: 输入文件,这里为 32.wav -vn: 输出文件...
  • 采样位数、采样率、比特率

    千次阅读 2015-01-14 18:13:48
    采样位数采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来 表示的。所以在电脑上录音的本质就是把模拟...
  • 原文https://blog.csdn.net/qq_31615049/article/details/88562892 public static int toInt(byte[] b) { return ((b[3]  24) + (b[2]  16) + (b[1]  8) + (b[0]  ... // 采样位数 rdf.close(); }
  • 音频的参数--采样位数、采样频率

    万次阅读 2014-09-25 22:35:18
    采样位数---也就是表示的值的范围也就越大 采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。连续的...
  • 音频采样位数,采样率,比特率

    千次阅读 2015-06-11 19:45:45
    一、关于数字音频 数字音频是指使用数字编码的方式也就是使用0和1来记录音频信息,它是相对于...1)采样位数——可以理解数字音频设备处理声音的解析度,即对声音的辨析度。就像表示颜色的位数一样(8位表示256种颜
  •  一款命令行转换工具,可以转换采样率、音量、保存位数等,转换效果很好。比取平均值的方案效果好多了。  对于一个音频应用的开发人员来说,感觉质量很高,效果也是够用。但是效率较慢。我记得还有JAVA方面的。有...
  • 一 音频通道数、采样率、采样个数(样本数)、采样位数的概念 1 通道数: 个人理解,就是同时有个几个设备在进行音频的采样,这样对上面的公式更好理解,最少为1,一般通道数越多,音质越好。 2 采样频率: 也称为采样...
  • 采样位数 ,也就是上面每个采样数据所记录的振幅。 所谓音质,就是指最后我们描述这个曲线的数字,到底和真实的曲线误差有多大。  本文转自: 什么是音频的采样率?采样率和音质有没有关系?   转载...
  • I2S总线规范 I2S(Inter-IC Sound ...SCLK的频率=2×采样频率×采样位数。 2、帧时钟LRCK,用于切换左右声道的数据。LRCK为“0”表示正在传输的是左声道的数据,为“1”则表示正在传输的是右声道的数据。LRCK的频率
  • 转载自:matlab-采样位数与信号强度关系概念采样位数:指被采集信号的解析度。例如:12bit 16bit32bit等。信号强度:指信号能量的大小,通过用dB表示。 dB单位:分贝,是一个比值,表示相对某个参考值的强度。在...
  • 音频采样位数问题

    2012-11-14 08:49:00
    由于CPU的位数一般约定俗成是8的整数倍,8位、16位、32位等等,而ADC(模数转换器)的位数一般不是8的整数倍,比如9位、10位、12位、14位等等;采样生成的数据在存储时,就有了“向左对齐,右边填齐,左边填0”两种存储方法,...
  • // 采样帧的大小 System.out.println("采样位数: " + toShort(read(rdf, 34, 2))); // 采样位数 rdf.close(); } 控制台打印结果: 参考文章:https://www.iteye.com/blog/mzhj-1068237 个人总结: 我是南国以南i...
  • 采样率为8000、11025、16000、22050、32000、44100、48000的10几个aac文件
  • 主要介绍了python wav模块获取采样采样点声道量化位数,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • AD中的采样率与量化位数

    千次阅读 2018-05-02 20:36:11
    AD芯片的两个最重要参数是采样率和量化位数。我们知道,ADC转换过程包括两个过程:采样和量化。采样率决定了采样过程的时间及精度,量化位数直接决定量化过程的精度。采样过程中有两部分时间,一是采样时间,一是...
  • neaacdec.h中最低只有16bit的设置 ``` #define FAAD_FMT_16BIT 1 #define FAAD_FMT_24BIT 2 #define FAAD_FMT_32BIT 3 #define FAAD_FMT_FLOAT 4 #define FAAD_FMT_FIXED FAAD_FMT_FLOAT #define FAAD_FMT_DOUBLE...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,365
精华内容 7,746
关键字:

采样位数