音频相关属性

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

  • 声道: 单声道,双声道,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):各个声道的样本分开进行存储。
    在这里插入图片描述
    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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi是一种高级集成开发环境,可以用于创建各种类型的应用程序,包括音频播放应用程序。在Delphi中,我们可以使用TMediaPlayer组件来实现音频播放功能。 首先,我们需要在Delphi中创建一个新的窗体应用程序。然后,我们可以在工具箱中找到TMediaPlayer组件,并将其拖放到窗体上。 接下来,我们可以通过设置TMediaPlayer组件的属性来加载和播放音频文件。可以使用TMediaPlayer组件的FileName属性来指定音频文件的路径和文件名。我们还可以使用TMediaPlayer组件的Open和Play方法来加载和播放音频文件。 除了基本的播放功能,Delphi还提供了一些其他功能,例如控制音量、暂停和停止播放等。我们可以使用TMediaPlayer组件的Volume属性来控制音量大小。可以使用TMediaPlayer组件的Pause方法来暂停播放,使用Stop方法来停止播放。 此外,Delphi还支持一些其他的音频特性,例如循环播放和音频位置控制。我们可以使用TMediaPlayer组件的Loop属性来设置音频是否循环播放。可以使用TMediaPlayer组件的Position属性来获取或设置音频的当前位置。 在音频播放应用程序中,我们还可以添加一些其他的功能,例如播放进度显示、播放列表管理等。我们可以使用Delphi提供的其他组件和功能来实现这些功能。 总之,使用Delphi可以轻松实现音频播放功能。通过使用TMediaPlayer组件和其他相关组件,我们可以加载、播放和控制音频文件。同时,我们还可以添加其他功能来增强音频播放应用程序的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值