帧大小与帧长度

本文详细介绍了音频帧的概念,特别是针对MP3编码格式,包括帧大小、帧长度的计算以及帧头中的信息。讨论了不同音频格式如PCM和AMR的帧结构,并以MP3为例解释了其帧头包含的位率、采样率等参数。还提供了计算每帧播放时间的公式,并强调了由于填充和比特率变化,MP3帧长度可能不固定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几乎所有视频编码格式都可以简单的认为一帧就是编码后的一副图像。

而音频帧跟音频格式有关,由各个编码标准规定。

如果以PCM(未经编码的音频数据)来说,它根本就不需要帧的概念,根据采样率和采样精度就可以播放了。比如采样率为44.1kHZ,采样精度为16位的音频,你可以算出bps(比特率)是44100*16bps,每秒的音频数据是固定的44100*16/8= 88200 bytes

amr帧比较简单,它规定每20ms的音频是一帧,每一帧音频都是独立的,有可能采用不同的编码算法,以及不同的编码参数。

mp3帧较为复杂一点,包含采样率,比特率,等各种参数。具体如下:

说明一下,音频数据帧个数由文件大小和帧长决定,每个frame的长度可能不固定,也可能固定由位率决定,每个frame又分为帧头和数据实体两部分,帧头记录了mp3的位率,采样率,版本等信息,帧与帧间相互独立。

有两个概念要区分

帧大小:每帧采样数,表示每一帧中采样点的个数,这是一个恒定值,由下表表示

              MPEG1     |      MPEG2     |      MPEG2.5

Layer1 384                    384                   384

Layer2 1152                  1152                 1152

Layer3 1152                   576                   576

帧长度:是压缩时每一帧的长度,包括帧头。它将填充的空位也计算在内。LayerI的一个空位长4字节,LayerII和LayerIII的空位是1字节。当读取MPEG文件时必须计算该值以便找到相邻的帧。

因为有填充和比特率变换,帧长度可能变化。

从帧头中读出位率,采样率和填充

LyaerI使用公式:

帧长度(字节) = 每帧采样数 / 采样频率(HZ) * 比特率(bps)/ 8 +填充 * 4

LyerII和LyaerIII使用公式:

帧长度(字节)= 每帧采样数 / 采样频率(HZ) * 比特率(bps)/ 8   + 填充

例:LayerIII 比特率 128000,采样频率 44100HZ,填充0

=〉帧大小 417字节

所谓26ms一帧只是针对MPEG1 Layer III而且采样率为44.1KHz来说是对的,但mp3文件并不都是如此,其实这个时间也是可以通过计算来获得,下面给出计算公式

每帧播放持续时间 = 帧大小  / 采样率

转自:帧大小与帧长度_「已注销」的博客-CSDN博客_数据帧长度怎么计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值